Einzelnen Beitrag anzeigen

Benutzerbild von Hador
Hador

Registriert seit: 11. Dez 2004
Ort: Recke
682 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Unentschieden ! Wie definiere ich es

  Alt 6. Okt 2008, 01:25
Erst einmal kannst du deinen Code ganz einfach um ein vielfaches verkürzen.
Aus
Delphi-Quellcode:
// [Player Win 2.1] 1-2-3
if (Button1.caption='X') and (Button2.caption='X') and (Button3.caption='X') then
Form3.Show;
if (Button1.caption='X') and (Button2.caption='X') and (Button3.caption='X') then
Panel2.Caption:='gewonnen';

// [Player Win 2.2] 4-5-6
if (Button4.caption='X') and (Button5.caption='X') and (Button6.caption='X') then
Form3.Show;
if (Button4.caption='X') and (Button5.caption='X') and (Button6.caption='X') then
Panel2.Caption:='gewonnen';
machst du zunächst einmal
Delphi-Quellcode:
// [Player Win 2.1] 1-2-3
if (Button1.caption='X') and (Button2.caption='X') and (Button3.caption='X') then
begin
  Form3.Show;
  Panel2.Caption:='gewonnen';
end;

// [Player Win 2.2] 4-5-6
if (Button4.caption='X') and (Button5.caption='X') and (Button6.caption='X') then
begin
  Form3.Show;
  Panel2.Caption:='gewonnen';
end;
und daraus
Delphi-Quellcode:
// [Player Win 2]
if ((Button1.caption='X') and (Button2.caption='X') and (Button3.caption='X')) // 1-2-3
  or ((Button4.caption='X') and (Button5.caption='X') and (Button6.caption='X') ) then // 4-5-6
begin
  Form3.Show;
  Panel2.Caption:='gewonnen';
end;
Dann solltest du unbedingt deinen Elementen vernünftige und aussagekräftige Namen geben. Bspw. statt "Panel2" "Ergebnis" oder wozu es auch immer gut ist

Wenn du den ersten Spieler schon überprüft hast und dieser gewonnen hat, so brauchst du ja nicht mehr den folgenden überprüfen. Daher kannst du noch folgendes Ändern:
Delphi-Quellcode:
if {Überprüfung ob Spieler 1 gewonnen hat} then
begin
  [...]
end else if {Überprüfung ob Spieler 2 gewonnen hat} then
begin
  [...]
end else if {Überprüfung ob unendschieden} then
begin
  [..]
end;
Dass sind jetzt erstmal einige Kleinigkeiten. Du kannst das ganze natürlich auch noch weiter optimieren, aber mit den von mir angesprochenen Änderungen sollte es schon um einiges kürzer werden.

Übrigends zur Überprüfung auf unentschieden: Wenn die Caption der Buttons vorher leer ist und die Länge 0 hat (also Caption := '') dann wäre eine mögliche Überprüfung:
if Length(Button1.Caption + Button2.Caption + ... + Button9.Caption) >= 9 then // Unentschieden oder natürlich:
if (Button1.Caption <> '') and (Button2.Caption <> '') and ... and (Button9.Caption <> '') then // Unentschieden
Lars Kiesow
http://www.larskiesow.de

Computer gehorchen deinen Befehlen, nicht deinen Absichten.
  Mit Zitat antworten Zitat