public bool addChildBoardStates(MoveFinder moveFinder) { List <MoveScenarios> allScenarios = moveFinder.getAllowMoveScenarios(BoardState, BoardState.CurrentColor); foreach (MoveScenarios currScenario in allScenarios) { for (int i = 0; i < currScenario.Count(); i++) { Board newBoardState = new Board(BoardState); MoveController.execScenario(newBoardState, currScenario, i); ChildsContext.Push( new MoveContext( newBoardState, currScenario.getFromPosition(), currScenario.getScenario(i), CurrDepth + 1, this, !IsMax ) ); } } IsVisited = true; if (allScenarios.Count > 0) { return(allScenarios[0].isCapture()); } return(false); }
public void execMove(MoveScenarios bestScenario) { if (bestScenario != null) { MoveController.execScenario(board, bestScenario, 0); } else { areAllowMoves = false; } }