import java.util.ArrayList; import java.util.List; import AbreNim; import Noeud; public class nim { public static void main(String[] args) { AbreNim AN = AbreNim(5); System.out.println(exploreMax(AN.getRoot())); } /** * Determine si le joueur gagne ou perd grace a exploreMin. * @param allumette le nombre d'allumette au tour du joueur * @return -1 si perdant ou 1 si gagnant */ public static boolean exploreMax(Noeud root) { allumette = root.getValeur(); allumette -= 3; for(int i=0;allumette>1&&i<3;i++) { root.child[i] = new Noeud(allumette); if (checkEtat(root.child[i])==1) { return true; } allumette++; } boolean childtest; for (int i = 2; i >=0; i--) { if (root.child[i].getEtat()==0) { childtest = exploreMin(root.child[i]); if (childtest) { return true; } } } } /** * Determine si le joueur gagne ou perd grace a exploreMax. * @param allumette le nombre d'allumette au tour du joueur * @return -1 si gagnant ou 1 si perdant */ public static boolean exploreMin(Noeud root){ allumette = root.getValeur(); allumette -= 3; for(int i=0;allumette>1&&i<3;i++) { root.child[i] = new Noeud(allumette); if (checkEtat(root.child[i])==-1) { return true; } allumette++; } boolean childtest = false; for (int i = 2; i >=0; i--) { if (root.child[i].getEtat()==0) { childtest = exploreMax(root.child[i]); if (childtest) { return true; } } } } public static int checkEtat(Noeud node){ if(node.getValeur()<1){ node.setEtat(-1); return -1; } else if (node.getValeur()==1) { node.setEtat(1); return 1; } node.setEtat(0); return 0; } }