1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
Function Evaluation(Piece : Damier;PionAttaque,PionDefense : integer) : shortint; { On evalue juste si un joueur a gagné ou non }
var i,j,nbPion1,nbPion2 : byte;
Begin
Evaluation := 0;
for i := 1 to 3 do
begin
{ Horizontalement }
if (Piece[i*10+1] = PionAttaque) and (Piece[i*10+1] = Piece[i*10+2]) and (Piece[i*10+1] = Piece[i*10+3]) then
Evaluation := 125
else
if (Piece[i*10+1] = PionDefense) and (Piece[i*10+1] = Piece[i*10+2]) and (Piece[i*10+1] = Piece[i*10+3]) then
Evaluation := -125;
{ Vertical }
if (Piece[1*10+i] = PionAttaque) and (Piece[1*10+i] = Piece[2*10+i]) and (Piece[1*10+i] = Piece[3*10+i]) then
Evaluation := 125
else
if (Piece[1*10+i] = PionDefense) and (Piece[1*10+i] = Piece[2*10+i]) and (Piece[1*10+i] = Piece[3*10+i]) then
Evaluation := -125;
end;
// Diagonal
if (Piece[11] = PionAttaque) and (Piece[11] = Piece[22]) and (Piece[22] = Piece[33]) then
Evaluation := 125
else
if (Piece[11] = PionDefense) and (Piece[11] = Piece[22]) and (Piece[22] = Piece[33]) then
Evaluation := -125;
// Diagonal
if (Piece[13] = PionAttaque) and (Piece[13] = Piece[22]) and (Piece[22] = Piece[31]) then
Evaluation := 125
else
if (Piece[13] = PionDefense) and (Piece[13] = Piece[22]) and (Piece[22] = Piece[31]) then
Evaluation := -125;
{ Si vous voulez, rajouter ici l'évaluation si la partie n'est pas finie. Mais moi, je trouve que cela est inutile au-delà de 6 demi-coups de calcul de profondeur }
End; |
Partager