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 Evaluer1(const aGrille: TGrillePuissance4; const aJoueur: boolean): integer;
type
TMotif = record
motif: ansistring;
valeur: integer;
end;
const
MOTIFS: array[1..10] of TMotif = (
(motif: '....'; valeur: 10000),
(motif: ' ...'; valeur: 100),
(motif: '. ..'; valeur: 100),
(motif: '.. .'; valeur: 100),
(motif: '... '; valeur: 100),
(motif: ' ..'; valeur: 1),
(motif: ' . .'; valeur: 1),
(motif: ' .. '; valeur: 1),
(motif: '. . '; valeur: 1),
(motif: '.. '; valeur: 1)
);
var
vExpressionReguliere: TExpressionReguliere;
vExpression: ansistring;
vLignes: TLignes;
iMotif, iLigne: integer;
begin
result := 0;
vLignes := Lignes(aGrille);
for iMotif := Low(MOTIFS) to High(MOTIFS) do
begin
vExpression := ansistring(StringReplace(MOTIFS[iMotif].motif, '.', PIONS[aJoueur], [rfReplaceAll]));
vExpressionReguliere := TExpressionReguliere.Create(vExpression);
for iLigne := Low(vLignes) to High(vLignes) do
if vExpressionReguliere.Correspondance(vLignes[iLigne]) then
Inc(result, MOTIFS[iMotif].valeur);
vExpressionReguliere.Free;
end;
end; |
Partager