10
Fonctions d'évaluation
}
damier [O ] [Taille - 1] = ' O ' ;
eval = O;
char adversaire (c har couleur ) const {
if (couleur == ' O ' )
return '@' ;
return ' O ' ;
}
vo id joue (c onst Coup & m) {
damier [m. x] [m. y] = m. couleur ;
if (m. couleur == '@ ' ) eval++;
else eval --;
}
char autre = adversaire (m. couleur );
int debutx = m. x - 1, finx = m. x + 1;
int debuty = m. y - 1, fin y = m. y + 1;
if (debutx < 0) debutx = O;
if (debuty < 0) debuty = O;
if (finx > Taille - 1) finx = Taille
if (finy > Taille - 1) finy = Taille
for ( i n t i = de b u t x ; i <= fi n x ; i + +)
for ( int j = debuty ; j <= fin y; j ++)
i f ( damier [ i ] [ j ] == autre ) {
damier [ i] [ j] = m. couleur ;
}
if (m. couleur == '@' ) eval += 2;
else eval -= 2;
int evaluation (c har couleur ) const {
if (couleur == '@ ' )
return eval ;
return -eval ;
}
bool coupLegal (Coup & coup) {
if (damier [coup .x] [coup.y] != '+')
return fa lse ;
for ( i n t x = max ( coup . x - 1 , 0 ) ;
1 .
'
l;
x <= min (coup .x + 1, Taille - l); x++)
for (int y= max (coup .y - 1, O) ;
}
y <= min (coup .y + 1, Taille - l); y++)
if (damier [x] [y] == coup .couleur )
return tr ue ;
return fa l se ;
Fonctions d'évaluation
}
damier [O ] [Taille - 1] = ' O ' ;
eval = O;
char adversaire (c har couleur ) const {
if (couleur == ' O ' )
return '@' ;
return ' O ' ;
}
vo id joue (c onst Coup & m) {
damier [m. x] [m. y] = m. couleur ;
if (m. couleur == '@ ' ) eval++;
else eval --;
}
char autre = adversaire (m. couleur );
int debutx = m. x - 1, finx = m. x + 1;
int debuty = m. y - 1, fin y = m. y + 1;
if (debutx < 0) debutx = O;
if (debuty < 0) debuty = O;
if (finx > Taille - 1) finx = Taille
if (finy > Taille - 1) finy = Taille
for ( i n t i = de b u t x ; i <= fi n x ; i + +)
for ( int j = debuty ; j <= fin y; j ++)
i f ( damier [ i ] [ j ] == autre ) {
damier [ i] [ j] = m. couleur ;
}
if (m. couleur == '@' ) eval += 2;
else eval -= 2;
int evaluation (c har couleur ) const {
if (couleur == '@ ' )
return eval ;
return -eval ;
}
bool coupLegal (Coup & coup) {
if (damier [coup .x] [coup.y] != '+')
return fa lse ;
for ( i n t x = max ( coup . x - 1 , 0 ) ;
1 .
'
l;
x <= min (coup .x + 1, Taille - l); x++)
for (int y= max (coup .y - 1, O) ;
}
y <= min (coup .y + 1, Taille - l); y++)
if (damier [x] [y] == coup .couleur )
return tr ue ;
return fa l se ;
