/// <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); }