Einzelnen Beitrag anzeigen

Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#1

Gewinn-Abfrage bei 4-Gewinnt

  Alt 3. Feb 2005, 13:16
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?
  Mit Zitat antworten Zitat