2.14 Corrigés des exercices
virus . dejoue (* it );
}
return meilleureEvaluation;
}
int main () {
}
list listeCoups ;
white ( true ) {
}
cout << virus ;
listeCoups = virus . coupsLegaux ( '@' );
if (listeCoups .empty ())
break ;
cout << "Donnez.... ., votre.... ., coup._.: ._." ;
Coup coup ;
coup . couleur = '@' ;
do {
cin >> coup .x >> coup .y;
} white (!virus . coupLegal (coup ));
virus .joue (coup );
cout << virus ;
listeCoups = virus . coupsLegaux ( 'O ' );
if (listeCoups .empty ())
break ;
int eval =m axi (5 , coup );
cout << "eval.... ., =.... ., " << eval << endl ;
cout << "Je._.joue.... ., en._." << coup .x << " " <<
coup . y << en dl ;
virus .joue (coup );
return 0;
2.14.4 Negamax
31
Attention : Il faut modifier l'appel à la fonction d'évaluation pour qu'il renvoie l'inverse de la valeur habituelle lorsque c'est au joueur Min de jouer. Au niveau 0 on appelle
donc l'évaluation pour le joueur dont c'est le tour. Lors de l'appel récursif on change
le signe du résultat de l'appel récursif et on prend toujours le coup qui a l'évaluation
maximale.
int negamax ( int depth , char joueur , Coup & meilleurCoup) {
if ( depth == 0)
return virus . evaluation (joueur );
list listeCoups = virus . coupsLegaux (joueur );
if ( listeCoups . empty ())
return virus . evaluationSiPlusDeCoupsPossibles (joueur );
Précédent

- 45/256

Suivant