Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: Überprüfung ob sich 3 oder mehrere buttons berühren

  Alt 5. Jul 2007, 17:52
Vielleicht reden wir mal nicht von "Buttons" sondern von Steinen in einem Spielfeld.
Man nehme eine leere Liste von TPoint.
Delphi-Quellcode:
function CheckPoint(punkt : TPoint):integer;
begin
   result := 0;
   if AusserhalbSpielfeld(punkt) then
      Exit;
   // prüfe, ob der Punkt schon mal gefunden wurde
   if IstInListe(punkt) then
      Exit;

   if spielfeld[punkt.x, punkt.y] = belegt then
   begin
      FügeHinzuZurListe(punkt);
      Inc(result); // den Stein zählen

      // und jetzt alle 4 Himmelrichtungen testen
      // rekursiver Aufruf
      Inc(Result, CheckPoint(Point(punkt.x+1,punkt.y));
      Inc(Result, CheckPoint(Point(punkt.x-1,punkt.y));
      Inc(Result, CheckPoint(Point(punkt.x,punkt.y+1));
      Inc(Result, CheckPoint(Point(punkt.x,punkt.y-1));
   end;
end;
Nachdem diese rekursive Funktion alle belegten Felder abgegrast hat, erhält man als
Ergebnis (Result) die Anzahl der zusammenhängenden Steine.

[edit]der Eingabeparameter "in" war ungeschickt gewählt, da ein Pascal Keyword. Er heisst jetzt "punkt"[/edit]
Andreas
  Mit Zitat antworten Zitat