Delphi-PRAXiS
Seite 1 von 3  1 23      

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)

Tytomik 29. Mär 2011 20:59


TicTacToe
 
hallo,
Ich habe angefangen mit TicTacToe zu programmieren.
Aber ohne zu gucken wer gewonnen hat sondern nur auf Buttons x und o.
Aber jedes mal wen ich es öffnen will zeigt es mir eine Nachricht an
!Expected '=' but';'found! und das wars, da ich noch ein Einsteiger bin weiß ich nicht wo der fehler ist, könnt ihr mal bitte rübergucken?

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 TForm1.Drueken;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  t: Integer;// variable zum Zählen

implementation

{$R *.dfm}

procedure TForm1.Drueken;// Eigene procedure, es soll gezählt werden
begin
t:=t+1;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Drueken;
If t=1 then button1.caption 'x';// wenn t gleich 1 ist soll auf dem button x stehen

If t=2 then button1.caption ('o') and t=0;// wenn t gleich 2 ist soll auf dem button o stehen
//und es wieder auf 0gebracht werden

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Drueken;
If t=1 then button2.caption ('x');
If t=2 then button2.caption ('o') and t=0;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Drueken;
If t=1 then button3.caption ('x');
If t=2 then button3.caption ('o') and t=0;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
Drueken;
If t=1 then button4.caption ('x');
If t=2 then button4.caption ('o') and t=0;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
Drueken;
If t=1 then button5.caption ('x');
If t=2 then button5.caption ('o') and t=0;
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
Drueken;
If t=1 then button6.caption ('x');
If t=2 then button6.caption ('o') and t=0;
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
Drueken;
If t=1 then button7.caption ('x');
If t=2 then button7.caption ('o') and t=0;
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
Drueken;
If t=1 then button8.caption ('x');
If t=2 then button8.caption ('o') and t=0;
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
Druecken;
If t=1 then button9.caption ('x');
If t=2 then button9.caption ('o') and t=0;
end;

Danke

Neutral General 29. Mär 2011 21:03

AW: TicTacTow
 
Hallo,

Du musst die Caption zuweisen!
Delphi-Quellcode:
// Falsch
If t=1 then button2.caption ('x');

// Richtig (Einrückung kann auch nicht schaden)
If t=1 then
  button2.caption := 'x';

Luckie 29. Mär 2011 21:05

AW: TicTacTow
 
Und:
Delphi-Quellcode:
If t=2 then button2.caption ('o') and t=0;
was soll das sein? Soll
Delphi-Quellcode:
t=0
eine Zuweisung oder eine zweite Bedingung sein?

Satty67 29. Mär 2011 21:05

AW: TicTacTow
 
Mehre Anweisungen, die nach nach einer If-Prüfung ausgeführt werden sollen, in einen Anweisungsblock setzen.

Also statt
Delphi-Quellcode:
if t=2 then button1.caption ('o') and t=0;
.

so
Delphi-Quellcode:
If t=2 then
begin
  button1.caption ('o');
  t=0;
end;
Zuweisungen mit := also entgültig dann so
Delphi-Quellcode:
If t=2 then
begin
  button1.caption := 'o';
  t := 0;
end;
PS: Im Quelltext-Kommentar steht ja, was er erreichen will.

PPS: Zuweisungs- und Vergleichsoperator (=, :=) und Anweisungsblöcke sind absolutes Basiswissen. Unbedingt nochmal mit den Grundlagen (Operatoren, Schlüsselwörter usw.) beschäftigen!

Tytomik 29. Mär 2011 21:20

AW: TicTacTow
 
Danke ich habe das auch noch geändert aber ich glaube der fehler ist
bei meiner eigene procedure.
Kann das sein?
Er zeigt immer noch den gleichen Fehler an.

nuclearping 29. Mär 2011 21:32

AW: TicTacTow
 
Ist das im ersten Beitrag dein KOMPLETTER Source aus der Form1? Wenn ja, wo ist der Header?

Delphi-Quellcode:
unit Form1;

interface

uses
  ...

type
  TForm1 = class(TForm)
     ...
?

Tytomik 29. Mär 2011 21:36

AW: TicTacTow
 
Nein der ist obendran aber den wollte ich nicht dazu tun.

Neutral General 29. Mär 2011 21:38

AW: TicTacTow
 
Nochwas:

Es sollte so aussehen:
Delphi-Quellcode:
   
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);  
  private
    { Private declarations }
  public
    procedure Drueken;
  end;
Du solltest dir mal irgendwo die Grundlagen (vor allem Syntax und Unit-/Programmaufbau!

Luckie 29. Mär 2011 21:49

AW: TicTacTow
 
Warum sollte die Prozedur Drueken öffentlich sein. Wenn man mal davon absieht das drücken mit ck geschrieben wird. ;) Des weiteren warte ich noch auf eine Beantwortung meiner Frage.

Neutral General 29. Mär 2011 22:49

AW: TicTacTow
 
Ja stimmt du hast recht. Im Private-Bereich wäre die Methode eigentlich besser aufgehoben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:25 Uhr.
Seite 1 von 3  1 23      

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