Einzelnen Beitrag anzeigen

Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#5

Re: 4 Gewinnt: Siegerermittlung

  Alt 7. Feb 2004, 17:19
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
Angehängte Dateien
Dateityp: zip vg.zip (220,8 KB, 26x aufgerufen)
  Mit Zitat antworten Zitat