138
Recherche en meilleur d'abord pour les jeux à deux joueurs
6.7.3 L'algorithme PN2
class NoeudCarre {
public :
char x, y;
int pn , dn ;
list listeFils ;
unsigned long long hash ;
void in i t () {
listeFils . clear ();
}
void descente ( Connect & connect , int couleur );
} ;
const int MaxNoeudCarre = 10000000;
int nbNoeudsCarre = MaxNoeudCarre ;
NoeudCarre racineCarre , pileNoeudCarre [ MaxNoeudCarre ];
void NoeudCarre :: descente ( Connect & connect ,
int couleur ) {
int autre =N oir ;
i f ( c o u 1 e u r == Noir )
autre = Blanc ;
i f ( 1 i s t e F i 1 s . s i z e () == 0 ) {
for ( i n t i = 1 ; i <= T a i 11 e ; i + +)
for ( in t j = 1 ; j <= Tai 11 e ; j + +)
if (connect . goban [i] ( j] == Vide ) {
connect . joue ( i , j , couleur );
nbNoeudsCarre --;
if ( nbNoeudsCarre < 0) {
}
cout << "plus..., de..., memoire " << endl ;
exit (O);
NoeudCarre * n = &p ileNoeudCarre [ nbNoeudsCarre ];
n->init ();
n->x = i;
n->y = j;
n->hash = connect .hash ;
if (connect . gagne (i , j, couleur )) {
if (couleur == couleurProuvante ) {
n->pn = 0;
n->dn = Infini ;
}
else {
Recherche en meilleur d'abord pour les jeux à deux joueurs
6.7.3 L'algorithme PN2
class NoeudCarre {
public :
char x, y;
int pn , dn ;
list
unsigned long long hash ;
void in i t () {
listeFils . clear ();
}
void descente ( Connect & connect , int couleur );
} ;
const int MaxNoeudCarre = 10000000;
int nbNoeudsCarre = MaxNoeudCarre ;
NoeudCarre racineCarre , pileNoeudCarre [ MaxNoeudCarre ];
void NoeudCarre :: descente ( Connect & connect ,
int couleur ) {
int autre =N oir ;
i f ( c o u 1 e u r == Noir )
autre = Blanc ;
i f ( 1 i s t e F i 1 s . s i z e () == 0 ) {
for ( i n t i = 1 ; i <= T a i 11 e ; i + +)
for ( in t j = 1 ; j <= Tai 11 e ; j + +)
if (connect . goban [i] ( j] == Vide ) {
connect . joue ( i , j , couleur );
nbNoeudsCarre --;
if ( nbNoeudsCarre < 0) {
}
cout << "plus..., de..., memoire " << endl ;
exit (O);
NoeudCarre * n = &p ileNoeudCarre [ nbNoeudsCarre ];
n->init ();
n->x = i;
n->y = j;
n->hash = connect .hash ;
if (connect . gagne (i , j, couleur )) {
if (couleur == couleurProuvante ) {
n->pn = 0;
n->dn = Infini ;
}
else {
