Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi 4 Gewinnt Gewinnabfrage Erklärung (https://www.delphipraxis.net/204618-4-gewinnt-gewinnabfrage-erklaerung.html)

ChickenHotSauce 11. Jun 2020 22:29


4 Gewinnt Gewinnabfrage Erklärung
 
Hallo Zusammen,
ich sitze momentan an einem Tutorial zu 4 Gewinnt von Delphi-Treff.de. Ich arbeite das ganze durch und bin bis jetzt noch nirgends hängen geblieben, aber die function zur Gewinnabfrage kam und kommt einfach nicht in meinen Kopf rein. Könnte mir das jemand bitte erklären?
Hier der Code:
Delphi-Quellcode:
function TForm1.GewinnerFeststellen(x: Integer; y: Integer; spieler: TFeldBesetzung): Boolean;
var
   richtung: array[0..7,0..1] of Integer;
   a,b,i,j,k: Integer;
begin
   //Überprüfung, ob der Spieler gewonnen hat
   Result := false;
   a := 0;
   i := x-1;
   j := y-1;
   if i < 0 then Inc(i);
   if j < 0 then Inc(j);

   //Überprüfung ob der Spieler auf den umliegenden Feldern schon gesetzt hat
   while (j <= y+1) and (j <= FSpielfeldHoehe-1) do
   begin
      if (FSpielfeld[i,j] = spieler) and not((i=x) and (j=y)) then
      begin
         richtung[a,0] := i-x;
         richtung[a,1] := j-y;
         Inc(a);
      end;
      Inc(i);

      if (i > x+1) or (i > FSpielfeldBreite-1) then
      begin
         i := x-1;
         if i < 0 then Inc(i);
         Inc(j);
      end;
   end;

   //Weiterverfolgung in den jeweiligen Richtungen, ob mindestens 4 Steine in einer
   //Reihe sind

   for k := 0 to a - 1 do
   begin
      i := x; j := y; b := 0;
      while (i >= 0) and (j >= 0) and (i <= FSpielfeldBreite-1) and (j <= FSpielfeldHoehe-1)
            and (FSpielfeld[i,j] = spieler) do
      begin
         Inc(b);
         i := i+richtung[k,0];
         j := j+richtung[k,1];
      end;
      i := x-richtung[k,0]; j := y-richtung[k,1];
      while (i >= 0) and (j >= 0) and (i < FSpielfeldBreite-1) and (j < FSpielfeldHoehe-1)
            and (FSpielfeld[i,j] = spieler) do
      begin
         Inc(b);
         i := i-richtung[k,0];
         j := j-richtung[k,1];
      end;
      if b > 3 then Result := true;
   end;
end;

Danke schon mal im Voraus!

DieDolly 11. Jun 2020 22:40

AW: 4 Gewinnt Gewinnabfrage Erklärung
 
Zitat:

Könnte mir das jemand bitte erklären?
Bitte den Code erstmal in Delphi-Tags packen und richtig formatieren (der Helm mit den roten Haaren).
Keiner guckt sich unformatierten Code an.

ChickenHotSauce 12. Jun 2020 20:02

AW: 4 Gewinnt Gewinnabfrage Erklärung
 
Besser?
Bin neu hier :)

Gausi 14. Jun 2020 10:28

AW: 4 Gewinnt Gewinnabfrage Erklärung
 
zur Info: Scheint in der Entwickler-Ecke geklärt worden zu sein. (Crossposting)


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz