![]() |
AW: TicTacTow
Falsche Foren-Kategorie!
|
Dieses Thema wurde am "25. Apr 2011, 21:04 Uhr" von "mkinzler" aus dem Forum "Neuen Beitrag zur Code-Library hinzufügen" in das Forum "Object-Pascal / Delphi-Language" verschoben.
|
AW: TicTacTow
Zitat:
(War ja klar, das wieder so ein Thread kommen würde. Ich habe erst vor Tagen das Spiel selbst mal kurz dahinprogrammiert. Allerdings wollte ich nur mal den NegaMax-Algorithmus für die "KI" ausprobieren :-D) |
AW: TicTacToe
[EDIT]
Zitat:
außerdem würde ich dir empfehlen allen buttons das selbe Ereignis zuzuweisen:
Code:
statt 9 mal der selbe Code hast du dann 1 mal Code für 9 Buttonsprocedure TForm1.Button1Click(Sender: TObject); begin Druecken; If t = 1 then begin TButton(Sender).Caption := 'x'; end; If t = 2 then begin TButton(Sender).Caption := 'o' t := 0; end; end; ist nicht getestet nur eben hingeschrieben sollte aber funktionieren |
AW: TicTacToe
Oder so (allerdings ohne großartige Fehlerbehandlung):
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const Captions: array[1..2] of Char = ('x', 'o'); begin Druecken; (Sender as TButton).Caption := Captions[t]; if t > 1 then t := 0; end; |
AW: TicTacToe
Da es in diesem Spiel nur zwei Spieler gibt, könnte man T auch als boolesche Variable deklarieren. Diese muss man pro Zug dann nur invertieren und erspart sich so die doppelte Abfrage, ob T einen bestimmten Wert hat oder nicht. Und dann bitte auch nicht global deklarieren :-D
Beispiel anhand von DeddyHs Vorschlag:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const Captions: Array[Boolean] of Char = ('x', 'o'); begin T := not T; // Druecken; (Sender as TButton).Caption := Captions[T]; end; |
AW: TicTacToe
Moin,
Also ich denke nicht das er nach weiteren Lösungsansätzen gefragt hat sondern vielmehr um eine Lösung des Problems gebeten hat. Hier die LÖSUNG: Zitat:
Zitat:
Zitat:
Zitat:
Wenn der Inhalt der Procedure unten definiert wird muss TForm1 angegeben werden da es sich bei der Procedure um eine Procedure dieser TForm handelt. Denn es könnte ja auch mehrere TForms geben. Oben jedoch ist das TForm1. völlig sinnlos da sie natürlich zu dieser gehört sonst stände sie ja nicht bei den Procedures der TForm! RICHTIG IST : Oben muss es :
Delphi-Quellcode:
heißen und unten muss alles so bleiben.procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure Button9Click(Sender: TObject); procedure Drueken; private { Private declarations } public { Public declarations } end; Wie das keinem auffalen konnte :?: |
AW: TicTacToe
Dann schau Dir einmal die Beiträge 8 - 10 an. Wie Dir das nicht auffallen konnte :stupid:
|
AW: TicTacToe
Ja aber das verschieben der Procedure in den Public bereich ist totaler Schwachsinn :stupid:
|
AW: TicTacToe
Das steht in Beitrag 9 und 10. Liest Du auch, was andere schreiben?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:12 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