Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#6

AW: dringende Frage zur : Tic Tac Toe Programmierung ! - Bitte um schnelle Antwort

  Alt 29. Okt 2012, 15:46
Du hast ja schon eine "Optimierung".
Man hätte auch in jedem ButtonClick den kompletten Auswertecode reinschreiben können.
Du hast nur eine Auswertemethode, aber mußt sie natürlich überall nur noch aufrufen. (dort kommst'e nicht drumrum)
Aber es geht noch mehr ... sie meinen letzen Tipp, da ganz unten.


Das mit den "sinnvollen" Komponentennamen wurde schon gesagt.
Wenn du die Buttons z.B. Feld11, Feld12, Feld13, Feld21, Feld22 usw. benennst, wird der Code verständlicher.
Oder eben FeldObenLinks, FeldObenMitte, FeldObenRechts, FeldLinksMitte, FeldMitteMitte usw.

PS: Wozu hast du eigentlich da ganz oben das Array deklariert?

Bei der Gewinnerauswertung solltest du eventuell ein paar ELSE oder EXIT einbauen, denn was mag wohl passieren, wenn ich jetzt hier
Code:
X X .
. . X
. . X
Oben-Rechts ein X hinmach?
Code:
. X .
X . X
. X .
Oder hier in der Mitte.


Zitat:
if RadioButton1.Checked=True then
Du solltest besser nicht auf =TRUE prüfen.
if RadioButton1.Checked then oder das Gegenteil (False) if not RadioButton1.Checked then .


Und so als Tipp:
Sender gibt die Komponente an, von wo diese Methode aufgerufen wurde.
Wenn man also den Sender auswertet/benutzt, dann kann man für mehrere Buttons die selbe Methode benutzen und muß nich tausend Mal praktisch den selben Code hinschreiben (außer daß sich dann Button1, Button2, Button3 usw. unterscheiden)
Delphi-Quellcode:
procedure TForm1.ButtonClick(Sender: TObject);
begin
  if RadioButton1.Checked then
    begin
     (Sender as TButton).Caption:='X';
     RadioButton2.Checked := True; // du willst ja eigentlich den "Check"-Status setzen und nicht den Eingabefokus
    end
  else
    // Das zweite IF .... es kann ja eh nur Einer von Beiden sein, also "entweder der Eine oder der Andere" ... da muß man nicht nochmal prüfen
    begin
     (Sender as TButton).Caption:='O';
     RadioButton1.Checked := True;
    end;
  (Sender as TButton).Enabled:=False; // doppelter Code ... einmal reicht (du hattest bei beiden Spielern den selben Code drin)
  Gewinner;
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (29. Okt 2012 um 15:56 Uhr)
  Mit Zitat antworten Zitat