Example #1
0
 /// <summary>
 /// Constructor which perform alphabeta algorithm and set soruce ,destinationn coordinate and return captures list if exists
 /// </summary>
 /// <param name="board"></param>
 /// <param name="player"></param>
 /// <param name="depth"></param>
 public Move(IBoardState board, Player player, int depth)
 {
     Rules rule = new Rules();
     board.Board = board.ConvertBoardStateToBoard(board);
     var alphaBeta = new Alphabeta();
     Board temp = new Board();
     var srcCoord = new Coordinate();
     var destCoord = new Coordinate();
     IList<Coordinate> tempCaptures = new List<Coordinate>();
     if (depth%2 != 0)
         depth++;
     alphaBeta.AlphaBeta(board.Board, depth, Int32.MinValue, Int32.MaxValue, player, true, ref srcCoord, ref destCoord, ref temp, ref tempCaptures);
     if ((rule.InBounds(board.Board, srcCoord.X, srcCoord.Y)) && (rule.InBounds(board.Board, destCoord.X, destCoord.Y)))
     {
         board.Board = temp.Copy();
         board.BoardCells = board.ConvertBoardToBoardState(board.Board);
         Board = board;
     }
     bool pcCaptured = tempCaptures.Count > 0;
     board.DrawGame = board.CheckDraw(board.Board, board.Board[destCoord.X, destCoord.Y], pcCaptured);
 }