Ich versuch mich grade an einem kleinen 4-Gewinnt-Spielchen. Das klappt soweit auch. Meine erste Schwierigkeit ist jedoch schon die Gewinnabfrage
Ich hab dafür eine Function erstellt, die ausgeben soll, ob ein Spieler gewonnen hat.
Ich hab mir auch die Gewinnabfrage von Luckies 4-Gewinnt (bzw. von w3seek) angesehen, doch daraus werd ich irgendwie nicht richtig schlau...
Ich hab mich dann mal selbst versucht und folgenden Code auf die Beine gestellt.
Delphi-Quellcode:
function TForm1.Spieler2Sieg: boolean;
var i: integer;
begin
for i := 1 to 42 do
begin
if ((FindComponent('Shape'+IntToStr(i)) as TShape).Brush.Color = clRed)
and ((FindComponent('Shape'+IntToStr(i+1)) as TShape).Brush.Color = clRed)
and ((FindComponent('Shape'+IntToStr(i+2)) as TShape).Brush.Color = clRed)
and ((FindComponent('Shape'+IntToStr(i+3)) as TShape).Brush.Color = clRed)
then
Result := true else
Result := false;
end;
end;
Daraus kann man auch schon fast erkennen, dass ich als "Felder" Shapes benutzt hab, die ich regelmäßig angeordnet hab (und die auch noch Standartnamen besitzen, was ja nicht sein sollte, ich weiß...). Mit diesem Code
frag ich die Farben der Shapes will ich die Farben der Shapes abfragen und daraus erschließen, ob 4 gleichfarbige Shapes in einer Reihe stehen. Das soll jetzt erstmal dafür dienen, um horizontal abzufragen, ob 4 rote Steine in einer Reihe stehen.
Wenn ich jetzt die jeweiligen Shapes einfärbe (also Steine einwerfe) ruf ich auch immer schön die Function auf, aber irgendwie funktioniert das nicht ganz. Keine Fehlermeldung oder so, Result wird nur nie auf true gesetzt
Hat jemand ne Ahnung, warum?