AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi 4 Gewinnt Gewinnabfrage Erklärung

4 Gewinnt Gewinnabfrage Erklärung

Offene Frage von "Gausi"
Ein Thema von ChickenHotSauce · begonnen am 11. Jun 2020 · letzter Beitrag vom 14. Jun 2020
Antwort Antwort
ChickenHotSauce

Registriert seit: 11. Jun 2020
2 Beiträge
 
#1

4 Gewinnt Gewinnabfrage Erklärung

  Alt 11. Jun 2020, 22:29
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!

Geändert von ChickenHotSauce (12. Jun 2020 um 08:13 Uhr)
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
1.619 Beiträge
 
#2

AW: 4 Gewinnt Gewinnabfrage Erklärung

  Alt 11. Jun 2020, 22:40
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.
  Mit Zitat antworten Zitat
ChickenHotSauce

Registriert seit: 11. Jun 2020
2 Beiträge
 
#3

AW: 4 Gewinnt Gewinnabfrage Erklärung

  Alt 12. Jun 2020, 20:02
Besser?
Bin neu hier
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
688 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: 4 Gewinnt Gewinnabfrage Erklärung

  Alt 14. Jun 2020, 10:28
zur Info: Scheint in der Entwickler-Ecke geklärt worden zu sein. (Crossposting)
The angels have the phone box.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf