public void SetupGame(int nb) { End.SetActive(false); allumettesTxt.text = ""; IATxt.text = ""; game = new Nim(nb); //minimaxSearch = MinimaxSearch<List<int>, int, int>.createFor(game); alphabetaSearch = AlphaBetaSearch <NimState, int, int> .createFor(game); CurrentState = game.getInitialState(); allumettesTxt.text = "Allumettes restantes : " + CurrentState.allumettes.ToString(); CheckisTerminal(); }
void AICanPlay() { int action = -1; //action = minimaxSearch.makeDecision(CurrentState); action = alphabetaSearch.makeDecision(CurrentState); IATxt.text = "L'IA a choisi de retirer " + action.ToString() + " allumettes"; NimState updateState = game.getResult(CurrentState, action); allumettesTxt.text = "Allumettes restantes : " + updateState.allumettes.ToString(); CurrentState = updateState; CheckisTerminal(); }
private void Start() { Nim game = new Nim(Matches); MinimaxSearch <NimState, int, int> minimaxSearch = MinimaxSearch <NimState, int, int> .createFor(game); AlphaBetaSearch <NimState, int, int> alphabetaSearch = AlphaBetaSearch <NimState, int, int> .createFor(game); NimState state = game.getInitialState(); int action1 = -1; int action2 = -1; action1 = minimaxSearch.makeDecision(state); action2 = alphabetaSearch.makeDecision(state); Debug.Log("Chosen action is " + action1 + " and node minimax " + minimaxSearch.getMetrics()); Debug.Log("Chosen action is " + action2 + " and node alphabeta " + alphabetaSearch.getMetrics()); }
public void PlayerChooseNumber(Button button) { int action = int.Parse(button.name); // On vérifie que l'action est possible List <int> actionpossible = game.getActions(CurrentState); if (actionpossible.Contains(action)) { // On peut jouer NimState updateState = game.getResult(CurrentState, action); allumettesTxt.text = "Allumettes restantes : " + updateState.allumettes.ToString(); CurrentState = updateState; CheckisTerminal(); } else { // erreur Debug.Log("Action impossible"); return; } }
public abstract NimState GetNextState(NimState state);