AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme bei TicTacToe-Programm

Ein Thema von Sandy123 · begonnen am 3. Apr 2011 · letzter Beitrag vom 11. Apr 2011
Antwort Antwort
Seite 1 von 2  1 2      
Sandy123

Registriert seit: 22. Mär 2011
12 Beiträge
 
#1

Probleme bei TicTacToe-Programm

  Alt 3. Apr 2011, 20:38
servus jungs
ich habe mal eine frage, ich programmiere gerade TicTacToe
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

Geändert von mkinzler ( 3. Apr 2011 um 20:46 Uhr) Grund: Delphi-Tag eingefügt
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#2

AW: Probleme bei TicTacToe-Programm

  Alt 3. Apr 2011, 21:00
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
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Sandy123

Registriert seit: 22. Mär 2011
12 Beiträge
 
#3

AW: Probleme bei TicTacToe-Programm

  Alt 3. Apr 2011, 21:20
stimmt, das war mein fehler
danke dir
jetzt fehlt mir nur noch eine antwort auf meine zweite frage
weiß jemand daraf die antwort?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: Probleme bei TicTacToe-Programm

  Alt 3. Apr 2011, 21:23
Hier wird schätzungsweise jede Woche ein TicTacToe Spiel programmiert. Bemühe einfach mal die Suche.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Probleme bei TicTacToe-Programm

  Alt 3. Apr 2011, 21:58
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..
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Sandy123

Registriert seit: 22. Mär 2011
12 Beiträge
 
#6

AW: Probleme bei TicTacToe-Programm

  Alt 3. Apr 2011, 22:04
stimmt 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?
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Probleme bei TicTacToe-Programm

  Alt 3. Apr 2011, 22:11
stimmt 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?
if gewonnen then showmessage('gewonnen'); Gruß
K-H

Wie Du an Gewonnen kommst ist Dir klar?
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Probleme bei TicTacToe-Programm

  Alt 4. Apr 2011, 08:46
Noch ein/zwei Tipps:

- 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?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Sandy123

Registriert seit: 22. Mär 2011
12 Beiträge
 
#9

AW: Probleme bei TicTacToe-Programm

  Alt 4. Apr 2011, 17:05
stimmt 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?
if gewonnen then showmessage('gewonnen'); Gruß
K-H

Wie Du an Gewonnen kommst ist Dir klar?
wie komm ich darauf? sry hab gard den faden verloren
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Probleme bei TicTacToe-Programm

  Alt 4. Apr 2011, 21:42
alle möglichen Gewinnmöglichkeiten abfragen und wenn Eine stimmt, dann hat man gewonnen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:45 Uhr.
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