Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Probleme bei TicTacToe-Programm (https://www.delphipraxis.net/159587-probleme-bei-tictactoe-programm.html)

Sandy123 3. Apr 2011 19:38


Probleme bei TicTacToe-Programm
 
servus jungs :)
ich habe mal eine frage, ich programmiere gerade TicTacToe :D
im prinzip ganz leicht nur mein problem ist folgendes :(
wenn ich das spiel starte, dann kann spieler 1 ein "X" machen und dann spieler 2 im nächsten button ein "O"
der nächste button jedoch wird wieder mit "O" deklariert und das geht solange bis alle 9 button ein "O" haben, wie kann ich die beheben :(


Delphi-Quellcode:
var
  Form1: TForm1;
  player,ps1,ps2 : integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
showmessage('Spieler 1 startet');
player:=1;
ps1 := 0;
ps2 := 0;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if player =1 then
begin
 player:= 2;
 Button2.Caption := ('X');
 ps1:=1;
 end
 else
 if player =2 then
 begin
 Button2.Caption := ('O');
 ps2:=1;
 end
 else
 showmessage('Spieler' + IntToStr(player) + 'Gibt es nicht!');
 end;



procedure TForm1.Button3Click(Sender: TObject);
begin
if player =1 then
begin
 player:= 2;
 Button3.Caption := ('X');
 ps1:=ps1+2;
 end
 else
 if player =2 then
 begin
 Button3.Caption := ('O');
 ps2:=ps2+2;
 end
 else
 showmessage('Spieler' + IntToStr(player) + 'Gibt es nicht!');
end;


procedure TForm1.Button4Click(Sender: TObject);
begin
if player =1 then
begin
 player:= 2;
 Button4.Caption := ('X');
 ps1:=ps1+3;
 end
 else
 if player =2 then
 begin
 Button4.Caption := ('O');
 ps2:=ps2+3;
 end
 else
 showmessage('Spieler' + IntToStr(player) + 'Gibt es nicht!');
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
if player =1 then
begin
 player:= 2;
 Button5.Caption := ('X');
 ps1:=ps1+4;
 end
 else
 if player =2 then
 begin
 Button5.Caption := ('O');
 ps2:=ps2+4;
 end
 else
 showmessage('Spieler' + IntToStr(player) + 'Gibt es nicht!');
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
if player =1 then
begin
 player:= 2;
 Button6.Caption := ('X');
 ps1:=ps1+5;
 end
 else
 if player =2 then
 begin
 Button6.Caption := ('O');
 ps2:=ps2+5;
 end
 else
 showmessage('Spieler' + IntToStr(player) + 'Gibt es nicht!');
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
if player =1 then
begin
 player:= 2;
 Button7.Caption := ('X');
 ps1:=ps1+6;
 end
 else
 if player =2 then
 begin
 Button7.Caption := ('O');
 ps2:=ps2+6;
 end
 else
 showmessage('Spieler' + IntToStr(player) + 'Gibt es nicht!');
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
if player =1 then
begin
 player:= 2;
 Button8.Caption := ('X');
 ps1:=ps1+7;
 end
 else
 if player =2 then
 begin
 Button8.Caption := ('O');
 ps2:=ps2+7;
 end
 else
 showmessage('Spieler' + IntToStr(player) + 'Gibt es nicht!');
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
if player =1 then
begin
 player:= 2;
 Button9.Caption := ('X');
 ps1:=ps1+8;
 end
 else
 if player =2 then
 begin
 Button9.Caption := ('O');
 ps2:=ps2+8;
 end
 else
 showmessage('Spieler' + IntToStr(player) + 'Gibt es nicht!');
end;

procedure TForm1.Button10Click(Sender: TObject);
begin
if player =1 then
begin
 player:= 2;
 Button10.Caption := ('X');
 ps1:=ps1+9;
 end
 else
 if player =2 then
 begin
 Button10.Caption := ('O');
 ps2:=ps2+9;
 end
 else
 showmessage('Spieler' + IntToStr(player) + 'Gibt es nicht!');
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Randomize;
Button2.Caption:='';
Button3.Caption:='';
Button4.Caption:='';
Button5.Caption:='';
Button6.Caption:='';
Button7.Caption:='';
Button8.Caption:='';
Button9.Caption:='';
Button10.Caption:='';

player:=random(2)+1;
showmessage('Spieler' +IntToStr(player) +'Beginnt!');
end;

end.
danke schonmal im vorraus :)
achja und das nächste problem ist wenn spieler 1 oder 2 drei in eienr reihe bzw diagonal belegt hat und das resultat daras dann der sieg ist wie das der computer erkennt und ich das ausgebe :(
mfg sandy :)

Helmi 3. Apr 2011 20:00

AW: Probleme bei TicTacToe-Programm
 
Hallo,

so wie es aussieht schreibst du deine Variable "Player" nicht mehr auf Player 1 um wenn Player 2 aktiv ist.
Das fehlt bei jedem Button!

Als Beispiel mal hier Button3
Delphi-Quellcode:
 if player =2 then
  begin
  player := 1;              //<== Das hier fehlt!!
  Button3.Caption := ('O');
  ps2:=ps2+2;
  end

Sandy123 3. Apr 2011 20:20

AW: Probleme bei TicTacToe-Programm
 
stimmt, das war mein fehler :)
danke dir :)
jetzt fehlt mir nur noch eine antwort auf meine zweite frage :P
weiß jemand daraf die antwort? :)

Luckie 3. Apr 2011 20:23

AW: Probleme bei TicTacToe-Programm
 
Hier wird schätzungsweise jede Woche ein TicTacToe Spiel programmiert. Bemühe einfach mal die Suche.

p80286 3. Apr 2011 20:58

AW: Probleme bei TicTacToe-Programm
 
Zitat:

Zitat von Luckie (Beitrag 1092817)
Hier wird schätzungsweise jede Woche ein TicTacToe Spiel programmiert. Bemühe einfach mal die Suche.

Naja ganz so oft ist es auch nicht.

Warum machst Du es nicht ganz einfach..
Delphi-Quellcode:
if Button1.caption=Button2.Capion and Button2.caption=Button3.caption then....
Hättest Du das Spielfeld als Array hinterlegt ginge das natürlich einfacher.

Gruß
K-H
p.S.
hier gibt es auch ein paar Mädels ;-)

Sandy123 3. Apr 2011 21:04

AW: Probleme bei TicTacToe-Programm
 
stimmt :D naja trotzdem danke :)
sry ich kann aber nicht bei den anderen mitteilungen mein problem finden :(
wenn ich gewinne, dann möchte ich eine showmessage('Du hast gewonne');
wie mache ich das? :(

p80286 3. Apr 2011 21:11

AW: Probleme bei TicTacToe-Programm
 
Zitat:

Zitat von Sandy123 (Beitrag 1092823)
stimmt :D naja trotzdem danke :)
sry ich kann aber nicht bei den anderen mitteilungen mein problem finden :(
wenn ich gewinne, dann möchte ich eine showmessage('Du hast gewonne');
wie mache ich das? :(

Delphi-Quellcode:
if gewonnen then showmessage('gewonnen');
Gruß
K-H

Wie Du an Gewonnen kommst ist Dir klar?

himitsu 4. Apr 2011 07:46

AW: Probleme bei TicTacToe-Programm
 
Noch ein/zwei Tipps:

-
Delphi-Quellcode:
else showmessage('Spieler' + IntToStr(player) + 'Gibt es nicht!');
sollte niemals auftreten, denn du setzt die "Player"-Variable und wenn due sie immer nur auf 1 und 2 Setzt, dann kann dieser Code garantiert niemals aufgerufen werden

- doppeltet/mehrfacher Code ... die Buttonereignisse haben einen Sender (darin steht rein zufällig der Button, welcher das Ereignis gesendet hat), welchen man nutzen kann.
Dazu gibt es notfalls noch das .Tag-Attribut, wo man Zahlen von 1 bis 9 reinmachen könnte .... und schwups kann man aus 9-Buttonereignissen einen Einzigen machen, für alle neun Buttons.

- was passiert, wenn ein Player auf einen Button klickt, wo vorher schon der andere Player draufgedrückt hat?

Sandy123 4. Apr 2011 16:05

AW: Probleme bei TicTacToe-Programm
 
Zitat:

Zitat von p80286 (Beitrag 1092826)
Zitat:

Zitat von Sandy123 (Beitrag 1092823)
stimmt :D naja trotzdem danke :)
sry ich kann aber nicht bei den anderen mitteilungen mein problem finden :(
wenn ich gewinne, dann möchte ich eine showmessage('Du hast gewonne');
wie mache ich das? :(

Delphi-Quellcode:
if gewonnen then showmessage('gewonnen');
Gruß
K-H

Wie Du an Gewonnen kommst ist Dir klar?

wie komm ich darauf? :D sry hab gard den faden verloren :D

himitsu 4. Apr 2011 20:42

AW: Probleme bei TicTacToe-Programm
 
alle möglichen Gewinnmöglichkeiten abfragen und wenn Eine stimmt, dann hat man gewonnen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:18 Uhr.
Seite 1 von 2  1 2      

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