42
Minimax, Alpha-Bêta et heuristiques associées
unsigned long long scoreHistorique [MaxNombre ];
void initHistorique () {
}
for (int j = O; j < MaxNombre ; j++)
scoreHistorique [j ] = O;
class Coup {
public :
char couleur ;
int X, y;
bool operator != (const Coup & c) {
if (( couleur != c.couleur ) Il
(x != c.x) Il
(y != c.y))
return true ;
return false ;
}
bool operator < (Coup c) {
}
return scoreHistorique [nombre ()] >
scoreHistorique [c . nombre ()];
int nombre () {
}
if (couleur == ' @ ' )
return x + y * Taille ;
return Taille * Taille + x + y * Taille ;
friend ostream & operator << ( ostream & sortie ,
const Coup & c);
} ;
ostream & operator << ( ostream & sortie ,
const Coup & c) {
}
sortie << "(" << c.couleur <<
c. y <<
Il ) Il ;
return sortie ;
Il
11
<< c.x <<
Il
Il
<<
int alphabeta ( int depth , int alpha , int beta , char joueur ,
1 i s t & vp ) {
if ( clock () - clockStart > maxClock )
return 0;
Minimax, Alpha-Bêta et heuristiques associées
unsigned long long scoreHistorique [MaxNombre ];
void initHistorique () {
}
for (int j = O; j < MaxNombre ; j++)
scoreHistorique [j ] = O;
class Coup {
public :
char couleur ;
int X, y;
bool operator != (const Coup & c) {
if (( couleur != c.couleur ) Il
(x != c.x) Il
(y != c.y))
return true ;
return false ;
}
bool operator < (Coup c) {
}
return scoreHistorique [nombre ()] >
scoreHistorique [c . nombre ()];
int nombre () {
}
if (couleur == ' @ ' )
return x + y * Taille ;
return Taille * Taille + x + y * Taille ;
friend ostream & operator << ( ostream & sortie ,
const Coup & c);
} ;
ostream & operator << ( ostream & sortie ,
const Coup & c) {
}
sortie << "(" << c.couleur <<
c. y <<
Il ) Il ;
return sortie ;
Il
11
<< c.x <<
Il
Il
<<
int alphabeta ( int depth , int alpha , int beta , char joueur ,
1 i s t
if ( clock () - clockStart > maxClock )
return 0;
