AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi If-Verschachtelung in VierGewinnt - komisches Ergebnis
Thema durchsuchen
Ansicht
Themen-Optionen

If-Verschachtelung in VierGewinnt - komisches Ergebnis

Ein Thema von Radon · begonnen am 29. Mai 2006 · letzter Beitrag vom 30. Mai 2006
 
Benutzerbild von Radon
Radon

Registriert seit: 15. Mai 2006
29 Beiträge
 
#1

If-Verschachtelung in VierGewinnt - komisches Ergebnis

  Alt 29. Mai 2006, 18:04
Hallo!

Ich bin dabei ein VierGewinnt zu programmieren, Delphi ist ziemliches Neuland für mich.

Ich hänge bei der Gewinnprüfung. Diese habe ich mal konzipiert und theoretisch dürfte sie (wenn ich keinen Denkfehler gemacht habe) auch funktionieren. Tut sie aber nicht. Nun glaube ich, dass es an Fehlern in der If-then-else Verschachtelung liegt.

Hier mal der Code:

Delphi-Quellcode:
//======================================================
// Gewinnüberprüfung
//======================================================

procedure TVierGewinnt.GewinnPruefung(GSpalte, GZeile: Integer);

var
  x, y, durchlauf: Integer;
  gewonnen: boolean;
begin
  for durchlauf := 0 to 3 do
  begin
    x := 0;
    y := 0;
    case durchlauf of
      0: begin
          x := 1;
          y := 0;
          end;
      1: begin
          x := 0;
          y := 1;
          end;
      2: begin
          x := 1;
          y := -1;
          end;
      3: begin
          x := -1;
          y := -1;
          end;
    end;

  if Feld[GSpalte + 1 * x, GZeile + 1 * y] = Spieler then
    if Feld[GSpalte + 2 * x, GZeile + 2 * y] = Spieler then
      if Feld[GSpalte + 3 * x, GZeile + 3 * y] = Spieler then
        begin
        gewonnen := true;
        end
      else
        if Feld[GSpalte - 1 * x, GZeile - 1 * y] = Spieler then
          begin
          gewonnen := true;
          end

    else
      if Feld[GSpalte - 1 * x, GZeile - 1 * y] = Spieler then
        if Feld[GSpalte - 2 * x, GZeile - 2 * y] = Spieler then
          begin
          gewonnen := true;
          end


  else
    if Feld[GSpalte - 1 * x, GZeile - 1 * y] = Spieler then
      if Feld[GSpalte - 2 * x, GZeile - 2 * y] = Spieler then
        if Feld[GSpalte - 3 * x, GZeile - 3 * y] = Spieler then
          begin
          gewonnen := true;
          end;


  if gewonnen = true then
  begin
    ShowMessage('Spieler '+IntToStr(Spieler)+' hat gewonnen!');
// FreeAndNil(PaintBox1);
    FreeAndNil(VierGewinnt);
    gewonnen := false;
  end;


end;
end;

//======================================================
//======================================================
Ich weiß nicht genau ob ihr da meine Gedankengänge nachvollziehen könnt, das Prog hab ich nochmal im Anhang. Jedenfalls glaube ich, dass eben hier irgendwo der wurm drin ist, eine Abfrage in die Falsche geht und dadurch irgendwas schiefgelaufen ist. Merkmal ist, dass nur die vertikale gewinnprüfung funktioniert.
Angehängte Dateien
Dateityp: rar vier_gewinnt_211.rar (175,6 KB, 8x aufgerufen)
  Mit Zitat antworten Zitat
 


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 10:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz