Hallo Geisi,
ja es gibt einen sehr einfachen Trick.
Gehe von dem zuletzt gesetzten Stein in alle möglichen Richtungen
und zähle die gleichfarbigen. Bist Du bei vier ist das Spiel gewonnen.
Das wäre die Routine
Delphi-Quellcode:
function TForm1.Win2(Stone : TStone) : Boolean;
var
iCnt : Integer;
aStone : TStone;
StoneCount : Integer;
begin
For iCnt:=0 to 7 do // iteriere über die relativen Koordinaten
begin
aStone:=Stone; // Startpunkt merken
StoneCount:=0;
While aStone<>Nil do
begin
If aStone.Color=Stone.Color then // hat der Stein die gesuchte Farbe ?
Inc(StoneCount)
else
Break; // neue Richtung einschlagen
If StoneCount=4 then
begin
Result:=True;
Exit;
end; // If StoneCount=4 then
aStone:=FStones[aStone.X+FRelCoords[iCnt].X,aStone.Y+FRelCoords[iCnt].Y];
end; // While Stone<>Nil do
end; // For iCnt:=0 to 7 do
end;
In das Anlage habe ich den Source kommentiert und ein kleines Beispiel zu gebastelt.
Nur für's Verständnis