Commit 354446df authored by HERSEMEULE Bruce's avatar HERSEMEULE Bruce

Merge branch 'Bruce' into 'master'

Mise à jour de arbre MinMax

See merge request !7
parents 49d11e8c 5f1491d8
...@@ -14,7 +14,6 @@ import static tictactoecodingame.Generator.random_tests; ...@@ -14,7 +14,6 @@ import static tictactoecodingame.Generator.random_tests;
*/ */
public class ArbreMinMax { public class ArbreMinMax {
public static int N = 5;
protected int value; protected int value;
protected ArrayList<Coup> coups; protected ArrayList<Coup> coups;
protected ArrayList<ArbreMinMax> fils; protected ArrayList<ArbreMinMax> fils;
...@@ -54,9 +53,14 @@ public class ArbreMinMax { ...@@ -54,9 +53,14 @@ public class ArbreMinMax {
} }
public ArrayList<ArbreMinMax> getfils(){ public ArrayList<ArbreMinMax> getfils(){
return(fils); if(fils != null){
return(fils);
}
else{
return null;
}
} }
public ArrayList getcoups(){ public ArrayList getcoups(){
return(coups); return(coups);
} }
...@@ -124,29 +128,27 @@ public class ArbreMinMax { ...@@ -124,29 +128,27 @@ public class ArbreMinMax {
return m; return m;
} }
public void MinMax(int h,Plateau plateau, int nb_tests){ public void MinMax(int c){
// h = hauteur, on l'incrémente comme un compteur // c = compteur
// N est la profondeur à explorer en MinMax, toutes les feuilles en N+1 sont évaluées // Le compteur doit être initialisé à 0 donc pair -> Max, impair -> Min
// La racine est un Max, donc impair -> Max, pair -> Min
if(N >= h){ // On doit chosir entre min et max if(this.getfils() != null){
if(h%2 == 0){
//On attribue le Min
int m = this.Min();
this.setvalue(m);
}
else{
//On attribue le max
int m = this.Max();
this.setvalue(m);
}
int a = this.getfils().size(); int a = this.getfils().size();
for(int i = 0; i < a ; i++){ for(int i = 0; i < a ; i++){
this.getfils().get(i).MinMax(h + 1,plateau,nb_tests); this.getfils().get(i).MinMax(c+1);
} }
} }
else{//On a h > N, on utilise la fonction d'évaluation
int i = random_tests(plateau,nb_tests); if(c%2 == 0){
//On attribue le Min
int m = this.Min();
this.setvalue(m);
}
else{
//On attribue le max
int m = this.Max();
this.setvalue(m);
}
} }
} }
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment