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