4.10 Corrigés des exercices
4.10.8 Coups qui tuent
On utilisent deux tableaux de coups pour les coups qui tuent :
Coup tueurMax [100), tueurMin [100);
void insereEnPremier (Coup & coup ,
}
list & listeCoups ) {
for ( list : : iterator it = listeCoups . begin ();
i t ! = 1 i s te C o u p s . end () ; ++ i t )
if (coup == *it) {
}
listeCoups . erase ( i t);
listeCoups . push_front (coup );
break ;
bool lambda ( int joueur , Menace m, int nbCoupsMax = 0,
int nbCoupsMin = 0) {
if ( phutball . gagne (joueur , phutball . balle ))
return true ;
int autre = adversaire (joueur );
if ( phutball . gagne (autre , phutball . balle ))
return fa lse ;
list listeCoups , listeCoupsAdverses ;
if ( phutball . coupsLegaux (0 , joueur , listeCoups ))
return true ;
int n = m. ordre ();
if ( n == 0)
return fa lse ;
phutball . coupsLegaux (n , joueur , listeCoups );
insereEnPremier (tueur Max [nbCoupsMax] , listeCoups );
for (list :: iterator it = listeCoups .begin ();
i t ! = 1 i s te C o u p s . end () ; ++ i t ) {
phutball .joue (* it );
bool menaceVerifiee = false ;
int ordre = O;
for ( int o = O; (o < n) && ! menaceVerifiee ; o++) {
Menace ml = m;
}
ml . ecrete (o + I);
if (lambda (joueur , ml , nbCoupsMax + 1,
nbCoupsMin )) {
menaceVerifiee = true ;
ordre = o;
}
m. nbOrdre [ordre + 1 ) --;
87
Précédent

- 101/256

Suivant