Commit 38cb9e19 authored by TRAN Alain's avatar TRAN Alain

Replace AlgoRechercheMinMax.java

parent f63e7648
......@@ -15,6 +15,11 @@ import java.util.ArrayList;
*/
public class AlgoRechercheMinMax extends AlgoRecherche {
Joueur humain;
public AlgoRechercheMinMax(Joueur _joueur){
humain = _joueur;
}
String[][] grille = {{"","",""},{"","",""},{"","",""}};
double[] scores = {1,-1,0};
......@@ -27,7 +32,7 @@ public class AlgoRechercheMinMax extends AlgoRecherche {
for (int i = 0; i < coups.size(); i++){
_plateau.joueCoup(coups.get(i));
double score = minimax(_plateau,_joueur,0,false);
double score = minimax(_plateau,humain,0,false); //False car l'ordi a déjà placé son premier coup
Coup coup_provisoire = coups.get(i);
_plateau.annuleDernierCoup();
if (score > bestScore){
......@@ -36,39 +41,39 @@ public class AlgoRechercheMinMax extends AlgoRecherche {
}
}
return meilleur_coup;
// changer le tour du joueur ?
// changer le tour du joueur
}
public double minimax(Plateau _plateau,Joueur _joueur,int profondeur,boolean isMaximizing){
if (_plateau.partieTerminee()){
if(_plateau.partieGagnee()){
if(_plateau.partieNulle()){
return 0;
}
else{
Joueur gagnant = _plateau.vainqueur(); //Il faudrait connaitre le vainqueur
int resultat = gagnant.getIdJoueur();
return scores[resultat];
}
else{
return 0;
}
}
if (isMaximizing) {
if (isMaximizing) { //ordi qui joue
double inf = Double.POSITIVE_INFINITY;
double bestScore = -1 * inf;
ArrayList<Coup> coups = _plateau.getListeCoups(_joueur);
for (int i = 0; i < 3; i++){
for (int i = 0; i < coups.size(); i++){
_plateau.joueCoup(coups.get(i));
double score = minimax(_plateau,_joueur,profondeur + 1,false);
double score = minimax(_plateau,humain,profondeur + 1,false);
_plateau.annuleDernierCoup();
bestScore = max(score,bestScore);
}
return bestScore;
}
else {
else { // Humain ou autre ordi qui joue
double inf = Double.POSITIVE_INFINITY;
double bestScore = inf;
ArrayList<Coup> coups = _plateau.getListeCoups(_joueur);
ArrayList<Coup> coups = _plateau.getListeCoups(humain);
for (int i = 0; i < coups.size(); i++){
_plateau.joueCoup(coups.get(i));
_plateau.joueCoup(coups.get(i)); // problème : Il faut que ce soit l'autre joueur qui joue ici
double score = minimax(_plateau,_joueur,profondeur + 1,true);
_plateau.annuleDernierCoup();
bestScore = min(score,bestScore);
......
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