78
Recherche avec menaces
La fonction gagnant suivante teste si un coup est gagnant à l'ordre n:
int adversaire ( int joueur ) {
if (joueur == JoueurGauche )
return JoueurDroit ;
return JoueurGauche ;
}
bool gagnant ( int joueur , int n) {
if (phutball . gagne (joueur ))
return true ;
}
list listeCoups , listeCoupsAdverses ;
if ( phutball . coupsLegaux (joueur , listeCoups ))
return true ;
if ( n == 0)
return fa lse ;
int autre = adversaire (joueur );
if ( phutball . coupsLegaux (autre , listeCoupsAdverses ))
return false ;
for ( list:: iterator it = listeCoups . begin ();
}
i t ! = li s te C o u p s . end () ; ++ i t ) {
bool menaceVerifiee = false ;
phutball .joue (* it );
if (gagnant (joueur , n - 1)) {
menaceVerifiee = true ;
}
if ( phutball . coupsLegaux (autre , listeCoupsAdverses ))
menaceVerifiee = fa lse ;
for (list:: iterator itl =
}
listeCoupsAdverses . be gin ();
(itl != listeCoupsAdverses .end ()) &&
me n ace Ver i fi e e ; ++ i t 1 ) {
phutball .joue (* itl );
if (!gagnant (joueur , n - 1 ))
menaceVerifiee = false ;
phutball . dejoue (* itl );
phutball . dejoue (* it ) ;
if ( menaceVerifiee )
return true ;
return fa lse ;
Recherche avec menaces
La fonction gagnant suivante teste si un coup est gagnant à l'ordre n:
int adversaire ( int joueur ) {
if (joueur == JoueurGauche )
return JoueurDroit ;
return JoueurGauche ;
}
bool gagnant ( int joueur , int n) {
if (phutball . gagne (joueur ))
return true ;
}
list
if ( phutball . coupsLegaux (joueur , listeCoups ))
return true ;
if ( n == 0)
return fa lse ;
int autre = adversaire (joueur );
if ( phutball . coupsLegaux (autre , listeCoupsAdverses ))
return false ;
for ( list
}
i t ! = li s te C o u p s . end () ; ++ i t ) {
bool menaceVerifiee = false ;
phutball .joue (* it );
if (gagnant (joueur , n - 1)) {
menaceVerifiee = true ;
}
if ( phutball . coupsLegaux (autre , listeCoupsAdverses ))
menaceVerifiee = fa lse ;
for (list
}
listeCoupsAdverses . be gin ();
(itl != listeCoupsAdverses .end ()) &&
me n ace Ver i fi e e ; ++ i t 1 ) {
phutball .joue (* itl );
if (!gagnant (joueur , n - 1 ))
menaceVerifiee = false ;
phutball . dejoue (* itl );
phutball . dejoue (* it ) ;
if ( menaceVerifiee )
return true ;
return fa lse ;
