Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Kleines Problem bei Tic Tac Toe Spiel (https://www.delphipraxis.net/128296-kleines-problem-bei-tic-tac-toe-spiel.html)

Jay15 27. Jan 2009 15:15


Kleines Problem bei Tic Tac Toe Spiel
 
Hallo Zusammen,

ich habe ein Problem mit meinem Tic Tac Toe Spiel. Soweit funktioniert es eigentlich ganz gut, aber man muss bislang immer über zwei RadioButtons den Spieler wechseln. Ich möchte es allerdings so hin bekommen, dass man über die RadioButtons nur noch wählt welcher Spieler beginnen soll und der Spieler wechsel automatisch funktioniert.

Wäre echt nett, wenn mir jemand helfen kann.


http://www.bilder-space.de/thumb/27....Wo8DOwoSPB.jpg

Delphi-Quellcode:
 unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm2 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Button10: TButton;
    GroupBox1: TGroupBox;
    Button11: TButton;
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    Label1: TLabel;
    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 Button11Click(Sender: TObject);
    procedure Gewinner;
    procedure Button10Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

//Buttons
procedure TForm2.Button1Click(Sender: TObject);
begin
  if RadioButton1.Checked=True then
    begin
    Button1.Caption:='X';
    Button1.Enabled:=False;
    end;
  if RadioButton2.Checked=True then
    begin
    Button1.Caption:='O';
    Button1.Enabled:=False;
    end;
Gewinner;
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
    if RadioButton1.Checked=True then
    begin
    Button2.Caption:='X';
    Button2.Enabled:=False;
    end;
  if RadioButton2.Checked=True then
    begin
    Button2.Caption:='O';
    Button2.Enabled:=False;
    end;
Gewinner;
end;

procedure TForm2.Button3Click(Sender: TObject);
begin
    if RadioButton1.Checked=True then
    begin
    Button3.Caption:='X';
    Button3.Enabled:=False;
    end;
  if RadioButton2.Checked=True then
    begin
    Button3.Caption:='O';
    Button3.Enabled:=False;
    end;
Gewinner;
end;

procedure TForm2.Button4Click(Sender: TObject);
begin
    if RadioButton1.Checked=True then
    begin
    Button4.Caption:='X';
    Button4.Enabled:=False;
    end;
  if RadioButton2.Checked=True then
    begin
    Button4.Caption:='O';
    Button4.Enabled:=False;
    end;
Gewinner;
end;

procedure TForm2.Button5Click(Sender: TObject);
begin
    if RadioButton1.Checked=True then
    begin
    Button5.Caption:='X';
    Button5.Enabled:=False;
    end;
  if RadioButton2.Checked=True then
    begin
    Button5.Caption:='O';
    Button5.Enabled:=False;
    end;
Gewinner;
end;

procedure TForm2.Button6Click(Sender: TObject);
begin
    if RadioButton1.Checked=True then
    begin
    Button6.Caption:='X';
    Button6.Enabled:=False;
    end;
  if RadioButton2.Checked=True then
    begin
    Button6.Caption:='O';
    Button6.Enabled:=False;
    end;
Gewinner;
end;

procedure TForm2.Button7Click(Sender: TObject);
begin
    if RadioButton1.Checked=True then
    begin
    Button7.Caption:='X';
    Button7.Enabled:=False;
    end;
  if RadioButton2.Checked=True then
    begin
    Button7.Caption:='O';
    Button7.Enabled:=False;
    end;
Gewinner;
end;

procedure TForm2.Button8Click(Sender: TObject);
begin
    if RadioButton1.Checked=True then
    begin
    Button8.Caption:='X';
    Button8.Enabled:=False;
    end;
  if RadioButton2.Checked=True then
    begin
    Button8.Caption:='O';
    Button8.Enabled:=False;
    end;
Gewinner;
end;

procedure TForm2.Button9Click(Sender: TObject);
begin
    if RadioButton1.Checked=True then
    begin
    Button9.Caption:='X';
    Button9.Enabled:=False;
    end;
  if RadioButton2.Checked=True then
    begin
    Button9.Caption:='O';
    Button9.Enabled:=False;
    end;
Gewinner;
end;

//Gewinner
procedure TForm2.Gewinner;
begin
//Kombi1
if (Button1.Caption='X') and (Button2.Caption='X') and (Button3.Caption='X') then
  begin
    Label1.Caption:='Spieler X';
  end;
if (Button1.Caption='O') and (Button2.Caption='O') and (Button3.Caption='O') then
  begin
    Label1.Caption:='Spieler O';
  end;
//Kombi2
if (Button4.Caption='X') and (Button5.Caption='X') and (Button6.Caption='X') then
  begin
    Label1.Caption:='Spieler X';
  end;
if (Button4.Caption='O') and (Button5.Caption='O') and (Button6.Caption='O') then
  begin
    Label1.Caption:='Spieler O';
  end;
//Kombi3
if (Button7.Caption='X') and (Button8.Caption='X') and (Button9.Caption='X') then
  begin
    Label1.Caption:='Spieler X';
  end;
if (Button7.Caption='O') and (Button8.Caption='O') and (Button9.Caption='O') then
  begin
    Label1.Caption:='Spieler O';
  end;
//Kombi4
if (Button1.Caption='X') and (Button4.Caption='X') and (Button7.Caption='X') then
  begin
    Label1.Caption:='Spieler X';
  end;
if (Button1.Caption='O') and (Button4.Caption='O') and (Button7.Caption='O') then
  begin
    Label1.Caption:='Spieler O';
  end;
//Kombi5
if (Button2.Caption='X') and (Button5.Caption='X') and (Button8.Caption='X') then
  begin
    Label1.Caption:='Spieler X';
  end;
if (Button2.Caption='O') and (Button5.Caption='O') and (Button8.Caption='O') then
begin
   Label1.Caption:='Spieler O';
end;
//Kombi6
if (Button3.Caption='X') and (Button6.Caption='X') and (Button9.Caption='X') then
  begin
    Label1.Caption:='Spieler X';
  end;
if (Button3.Caption='O') and (Button6.Caption='O') and (Button9.Caption='O') then
  begin
   Label1.Caption:='Spieler O';
  end;
//Kombi6
if (Button1.Caption='X') and (Button5.Caption='X') and (Button9.Caption='X') then
  begin
    Label1.Caption:='Spieler X';
  end;
if (Button1.Caption='O') and (Button5.Caption='O') and (Button9.Caption='O') then
  begin
    Label1.Caption:='Spieler O';
  end;
//Kombi7
if (Button3.Caption='X') and (Button5.Caption='X') and (Button7.Caption='X') then
  begin
    Label1.Caption:='Spieler X';
  end;
if (Button3.Caption='O') and (Button5.Caption='O') and (Button7.Caption='O') then
  begin
    Label1.Caption:='Spieler O';
  end;
end;

//New Game
procedure TForm2.Button10Click(Sender: TObject);
begin
  Button1.Caption:='';
  Button2.Caption:='';
  Button3.Caption:='';
  Button4.Caption:='';
  Button5.Caption:='';
  Button6.Caption:='';
  Button7.Caption:='';
  Button8.Caption:='';
  Button9.Caption:='';
  Label1.Caption:='';
end;


//Exit
procedure TForm2.Button11Click(Sender: TObject);
begin
  Close;
end;
end.

craash 27. Jan 2009 15:31

Re: Kleines Problem bei Tic Tac Toe Spiel
 
hi,

vll kannst eine boolean-variable angeben die dann bei jeder aktion geändert und wieder an den andern client zurückgeschickt wird.
je nachdem wird eben angezeigt dass du an der reihe bist wenn die variable true/false ist.


mfg

Jay15 27. Jan 2009 16:06

Re: Kleines Problem bei Tic Tac Toe Spiel
 
Hi,

tut mir leid aber ich versteh nicht so ganz wie ich das machen soll. Kannst du mir das bitte mal genauer erklären?

MfG

Jay15 27. Jan 2009 18:44

Re: Kleines Problem bei Tic Tac Toe Spiel
 
Ich hab es jetzt doch geschafft! Hab einfach einen else-Befehl genommen.

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
begin
  if RadioButton1.Checked=True then
    begin
    Button1.Caption:='X';
    Button1.Enabled:=False;
    RadioButton2.SetFocus;
    end
  else
    begin
    Button1.Caption:='O';
    Button1.Enabled:=False;
    RadioButton1.SetFocus;
    end;
Gewinner;
end;
Ich würde jetzt gerne noch etwas wissen. Wie kann ich verhindern, dass nachdem das Spiel zuende ist noch ein Button gedrückt wird?

Berlinermauer 27. Jan 2009 18:48

Re: Kleines Problem bei Tic Tac Toe Spiel
 
Delphi-Quellcode:
if SpielZuende = true; then
begin
Buttoname.Enabled := false;
Buttonname2.Enabled := false;
end;

Forlan 27. Jan 2009 18:58

Re: Kleines Problem bei Tic Tac Toe Spiel
 
du hast dir das Spiel aber sehr kompliziert programmiert^^
Das ginge wohl auch übersichtlicher und einfacher...
Tic-Tac Toe war auch eines meiner ersten Projekte damals... Und wie gesagt, eigene Prozeduren und Funktionen können einen das ganze wirklich erleichtern ;)

Jakob Ullmann 27. Jan 2009 19:09

Re: Kleines Problem bei Tic Tac Toe Spiel
 
Stimmt, also zumindest würde eine Prozedur für alle Buttons ausreichen. :roll: Such mal nach FindComponent und Type-Cast.

turboPASCAL 27. Jan 2009 23:11

Re: Kleines Problem bei Tic Tac Toe Spiel
 
Auch wenn es Dir jetzt nicht so dolle hilft, kannst du dir mal mein Mini Tic Tac Toe im OS - Bereich ansehen.
Vill. bekommst du daraus neue Ideen. Ich glaube soga ich habe das Teil durchkommentiert.

Jay15 28. Jan 2009 15:03

Re: Kleines Problem bei Tic Tac Toe Spiel
 
Es funktioniert jetzt alles. Ich werde mir aber trotzdem mal ein anderes Tic Tac Toe Spiel ansehen. Vielen Dank für eure Antworten und Tipps! :thumb:

N-Visible92 10. Jun 2010 18:50

AW: Kleines Problem bei Tic Tac Toe Spiel
 
Könnte ich bitte mal einen Screenshot von der ganzen Form bekommen?
Das würde mir sehr wieterhelfen, da ich auch ein Tic Tac Toe spiel programmiere.
Der obere Link funktioniert leider nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:53 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