30
Minimax, Alpha-Bêta et heuristiques associées
2.14.3 Minimax
Virus virus ;
char joueurMax = 'O ' , joueurMin = '@ ' ;
int mini ( int depth );
int maxi ( int depth , Coup & meilleurCoup) {
if ( depth == 0)
}
return virus . evaluation (joueurMax );
list listeCoups = virus . coupsLegaux (joueurMax );
if (listeCoups . empty ())
return virus . evaluationSiPlusDeCoupsPossibles
(joueurMax );
int meilleureEvaluation = - Taille * Taille - 1;
fo r (list:: iterator it = listeCoups .begin ();
}
it != listeCoups . end (); ++ it ) {
virus . joue (* it );
int eval = mini ( depth - 1 );
if (eval > meilleureEvaluation) {
meilleureEvaluation = eval ;
meilleurCoup = * i t;
}
virus . dejoue (* it );
return meilleureEvaluation ;
int mini (int depth ) {
i f ( de p th == 0)
return virus . evaluation (joueurMax );
list listeCoups = virus . coupsLegaux (joueurMin );
if (listeCoups .empty ())
return virus . evaluationSiPlusDeCoupsPossibles
(joueur Max );
int meilleureEvaluation = Taille * Taille + 1;
Coup meilleurCoup ;
for (list:: iterator it = listeCoups . begin ();
it != listeCoups . end (); ++ it ) {
virus . joue (* it );
in t eval = maxi ( depth - 1, meilleurCoup );
if ( eval < meilleureEval uation ) {
meilleureEvaluation = eval ;
}
Minimax, Alpha-Bêta et heuristiques associées
2.14.3 Minimax
Virus virus ;
char joueurMax = 'O ' , joueurMin = '@ ' ;
int mini ( int depth );
int maxi ( int depth , Coup & meilleurCoup) {
if ( depth == 0)
}
return virus . evaluation (joueurMax );
list
if (listeCoups . empty ())
return virus . evaluationSiPlusDeCoupsPossibles
(joueurMax );
int meilleureEvaluation = - Taille * Taille - 1;
fo r (list
}
it != listeCoups . end (); ++ it ) {
virus . joue (* it );
int eval = mini ( depth - 1 );
if (eval > meilleureEvaluation) {
meilleureEvaluation = eval ;
meilleurCoup = * i t;
}
virus . dejoue (* it );
return meilleureEvaluation ;
int mini (int depth ) {
i f ( de p th == 0)
return virus . evaluation (joueurMax );
list
if (listeCoups .empty ())
return virus . evaluationSiPlusDeCoupsPossibles
(joueur Max );
int meilleureEvaluation = Taille * Taille + 1;
Coup meilleurCoup ;
for (list
it != listeCoups . end (); ++ it ) {
virus . joue (* it );
in t eval = maxi ( depth - 1, meilleurCoup );
if ( eval < meilleureEval uation ) {
meilleureEvaluation = eval ;
}
