Example #1
0
        private GameBoard MakeAddtionalMoves(GameBoard board, GamePieceMove move)
        {
            List<GamePieceMove> addtionalMoves = new List<GamePieceMove>();
            GameBoard bestBoard = board.CloneBoard();
            int bestBoardValue = bestBoard.EvaluateBoard(PlayerColours.Black);

            if (move.IsJump && board.IsThereASecondJump(move))
                addtionalMoves.AddRange(board.GetAllPossibleJumpsForThisPiece(move.MovingPiece));
            foreach (GamePieceMove m in addtionalMoves)
            {
                GameBoard currentBoard = new GameBoard();
                currentBoard = board.CloneBoard();
                currentBoard.ApplyMove(m);
                currentBoard = MakeAddtionalMoves(currentBoard, m);
                if (currentBoard.EvaluateBoard(PlayerColours.Black) > bestBoardValue)
                    bestBoard = currentBoard;
                board.UnDoMove(m);
            }
            return bestBoard;
        }