Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   TicTacToe (https://www.delphipraxis.net/159476-tictactoe.html)

isilive 30. Mär 2011 02:43

AW: TicTacTow
 
Falsche Foren-Kategorie!

DP-Maintenance 25. Apr 2011 20:04

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.

Deep-Sea 26. Apr 2011 08:15

AW: TicTacTow
 
Zitat:

Zitat von Neutral General (Beitrag 1091873)
Im Private-Bereich wäre die Methode eigentlich besser aufgehoben.

Und das z.B. die OnClick-Methode ganze 9 mal redundant vorkommt, ist da nicht so schlimm?! :P

(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)

sHoXx 26. Apr 2011 08:21

AW: TicTacToe
 
[EDIT]
Zitat:

Und das z.B. die OnClick-Methode ganze 9 mal redundant vorkommt, ist da nicht so schlimm?!
[/EDIT]

außerdem würde ich dir empfehlen allen buttons das selbe Ereignis zuzuweisen:

Code:

procedure 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;
statt 9 mal der selbe Code hast du dann 1 mal Code für 9 Buttons

ist nicht getestet nur eben hingeschrieben sollte aber funktionieren

DeddyH 26. Apr 2011 08:31

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;

Deep-Sea 26. Apr 2011 08:48

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;

roboter202 27. Apr 2011 10:35

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:

Delphi-Quellcode:
procedure TForm1.Drueken;

und unten
Zitat:

Delphi-Quellcode:
procedure TForm1.Drueken;// Eigene procedure, es soll gezählt werden

wenn man das mal vergleicht mit

Zitat:

Delphi-Quellcode:
procedure Button9Click(Sender: TObject);

und
Zitat:

Delphi-Quellcode:
procedure TForm1.Button9Click(Sender: TObject);

Fällt jeden doch wohl schnell ein unterschied auf.

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:
   
    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;
heißen und unten muss alles so bleiben.

Wie das keinem auffalen konnte :?:

DeddyH 27. Apr 2011 10:41

AW: TicTacToe
 
Dann schau Dir einmal die Beiträge 8 - 10 an. Wie Dir das nicht auffallen konnte :stupid:

roboter202 27. Apr 2011 10:43

AW: TicTacToe
 
Ja aber das verschieben der Procedure in den Public bereich ist totaler Schwachsinn :stupid:

DeddyH 27. Apr 2011 10:44

AW: TicTacToe
 
Das steht in Beitrag 9 und 10. Liest Du auch, was andere schreiben?


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:50 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz