Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   dringende Frage zur : Tic Tac Toe Programmierung ! - Bitte um schnelle Antwort (https://www.delphipraxis.net/171273-dringende-frage-zur-tic-tac-toe-programmierung-bitte-um-schnelle-antwort.html)

Fazer 29. Okt 2012 14:49

dringende Frage zur : Tic Tac Toe Programmierung ! - Bitte um schnelle Antwort
 
Muss morgen ein Projekt abgehen in Informatik.
Habe Tic Tac Toe programmiert, jedoch habe ich eine Frage und bitte deshalb um schnelle Antwort.

Quellcode:

Delphi-Quellcode:
unit Unit1;

interface

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


type
  TXOPosArray = array [1..3, 1..3] of Integer;

type
  TForm1 = class(TForm)
    btnNewGame: TButton;
    btnResetScore: TButton;
    rgPlayFirst: TRadioGroup;
    gbScoreBoard: TGroupBox;
    lblX: TLabel;
    lblMinus: TLabel;
    lblO: TLabel;
    lblXScore: TLabel;
    lblColon: TLabel;
    lblOScore: TLabel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    ButtonClose: TButton;
    MainMenu1: TMainMenu;
    Hilfe1: TMenuItem;
    Anleitung1: TMenuItem;
    Informationen1: TMenuItem;
    procedure btnNewGameClick(Sender: TObject);
    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 Gewinner;
    procedure ButtonCloseClick(Sender: TObject);
    procedure Anleitung1Click(Sender: TObject);
    procedure Informationen1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;


implementation

{$R *.dfm}

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

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

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

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

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

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

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

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

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

//Gewinner festlegen
procedure TForm1.Gewinner;
begin
//Kombination 1
 if (Button1.Caption='X') and (Button2.Caption='X') and (Button3.Caption='X') then
   begin
     ShowMessage('Spieler 1 hat gewonnen !');
   end;
  if (Button1.Caption='O') and (Button2.Caption='O') and (Button3.Caption='O') then
   begin
     ShowMessage('Spieler 2 hat gewonnen !');
   end;
//Kombination 2
 if (Button4.Caption='X') and (Button5.Caption='X') and (Button6.Caption='X') then
   begin
     ShowMessage('Spieler 1 hat gewonnen !');
   end;
 if (Button4.Caption='O') and (Button5.Caption='O') and (Button6.Caption='O') then
   begin
     ShowMessage('Spieler 2 hat gewonnen !');
   end;
//Kombination 3
 if (Button7.Caption='X') and (Button8.Caption='X') and (Button9.Caption='X') then
   begin
     ShowMessage('Spieler 1 hat gewonnen !');
   end;
 if (Button7.Caption='O') and (Button8.Caption='O') and (Button9.Caption='O') then
   begin
     ShowMessage('Spieler 2 hat gewonnen !');
   end;
//Kombination 4
 if (Button1.Caption='X') and (Button4.Caption='X') and (Button7.Caption='X') then
   begin
     ShowMessage('Spieler 1 hat gewonnen !');
   end;
 if (Button1.Caption='O') and (Button4.Caption='O') and (Button7.Caption='O') then
   begin
     ShowMessage('Spieler 2 hat gewonnen !');
   end;
//Kombination 5
 if (Button2.Caption='X') and (Button5.Caption='X') and (Button8.Caption='X') then
   begin
     ShowMessage('Spieler 1 hat gewonnen !');
   end;
 if (Button2.Caption='O') and (Button5.Caption='O') and (Button8.Caption='O') then
  begin
    ShowMessage('Spieler 2 hat gewonnen !');
  end;
//Kombination 6
 if (Button3.Caption='X') and (Button6.Caption='X') and (Button9.Caption='X') then
   begin
     ShowMessage('Spieler 1 hat gewonnen !');
   end;
 if (Button3.Caption='O') and (Button6.Caption='O') and (Button9.Caption='O') then
   begin
    ShowMessage('Spieler 2 hat gewonnen !');;
   end;
//Kombination 7
 if (Button1.Caption='X') and (Button5.Caption='X') and (Button9.Caption='X') then
   begin
     ShowMessage('Spieler 1 hat gewonnen !');
   end;
 if (Button1.Caption='O') and (Button5.Caption='O') and (Button9.Caption='O') then
   begin
     ShowMessage('Spieler 2 hat gewonnen !');
   end;
//Kombination 8
 if (Button3.Caption='X') and (Button5.Caption='X') and (Button7.Caption='X') then
   begin
     ShowMessage('Spieler 1 hat gewonnen !');
   end;
 if (Button3.Caption='O') and (Button5.Caption='O') and (Button7.Caption='O') then
   begin
    ShowMessage('Spieler 2 hat gewonnen !');
   end;
 end;

procedure TForm1.btnNewGameClick(Sender: TObject);
 begin
   Button1.Caption:='';
   Button2.Caption:='';
   Button3.Caption:='';
   Button4.Caption:='';
   Button5.Caption:='';
   Button6.Caption:='';
   Button7.Caption:='';
   Button8.Caption:='';
   Button9.Caption:='';
   Button1.Enabled:=True;
   Button2.Enabled:=True;
   Button3.Enabled:=True;
   Button4.Enabled:=True;
   Button5.Enabled:=True;
   Button6.Enabled:=True;
   Button7.Enabled:=True;
   Button8.Enabled:=True;
   Button9.Enabled:=True;

 end;

procedure TForm1.ButtonCloseClick(Sender: TObject);
 begin
  Form1.Close
 end;

procedure TForm1.Anleitung1Click(Sender: TObject);
 begin
  showmessage('Funktionsweise:'
               +#10#13+ '1)Kreuze an welcher Spieler anfängt!'
               +#10#13+ '2)Und Leg los!');
 end;

procedure TForm1.Informationen1Click(Sender: TObject);
 begin
  ShowMessage(' ©');
 end;




end.



Die Prozedur: //Gewinner festlegen
procedure TForm1.Gewinner; funktioniert nur wen ich bei jedem Tform1.Buttonclick oben ein Gewinner ganz am Ende stehen habe. Wie kann könnte ich das ändern ?

Medium 29. Okt 2012 14:56

AW: dringende Frage zur : Tic Tac Toe Programmierung ! - Bitte um schnelle Antwort
 
So wie das Programm geschrieben ist, würde ich das so lassen. Ist ja auch legitim: Nach jedem Zug muss neu geprüft werden, ob es einen Gewinner gibt. (Die Methodennamen sind nicht so glücklich, aber das nur am Rande. Hat für die Funktion erstmal keinen Einfluss.)

DeddyH 29. Okt 2012 14:59

AW: dringende Frage zur : Tic Tac Toe Programmierung ! - Bitte um schnelle Antwort
 
Crosspost DT

Bummi 29. Okt 2012 15:31

AW: dringende Frage zur : Tic Tac Toe Programmierung ! - Bitte um schnelle Antwort
 
//deleted

DeddyH 29. Okt 2012 15:34

AW: dringende Frage zur : Tic Tac Toe Programmierung ! - Bitte um schnelle Antwort
 
Sind neuerdings Komplettlösungen die Antwort auf einfache Fragen? :gruebel:

himitsu 29. Okt 2012 15:46

AW: dringende Frage zur : Tic Tac Toe Programmierung ! - Bitte um schnelle Antwort
 
Du hast ja schon eine "Optimierung".
Man hätte auch in jedem ButtonClick den kompletten Auswertecode reinschreiben können.
Du hast nur eine Auswertemethode, aber mußt sie natürlich überall nur noch aufrufen. (dort kommst'e nicht drumrum)
Aber es geht noch mehr ... sie meinen letzen Tipp, da ganz unten.


Das mit den "sinnvollen" Komponentennamen wurde schon gesagt.
Wenn du die Buttons z.B. Feld11, Feld12, Feld13, Feld21, Feld22 usw. benennst, wird der Code verständlicher.
Oder eben FeldObenLinks, FeldObenMitte, FeldObenRechts, FeldLinksMitte, FeldMitteMitte usw.

PS: Wozu hast du eigentlich da ganz oben das Array deklariert?

Bei der Gewinnerauswertung solltest du eventuell ein paar ELSE oder EXIT einbauen, denn was mag wohl passieren, wenn ich jetzt hier
Code:
X X .
. . X
. . X
Oben-Rechts ein X hinmach?
Code:
. X .
X . X
. X .
Oder hier in der Mitte.


Zitat:

Delphi-Quellcode:
if RadioButton1.Checked=True then

Du solltest besser nicht auf =TRUE prüfen.
Delphi-Quellcode:
if RadioButton1.Checked then
oder das Gegenteil (False)
Delphi-Quellcode:
if not RadioButton1.Checked then
.


Und so als Tipp:
Sender gibt die Komponente an, von wo diese Methode aufgerufen wurde.
Wenn man also den Sender auswertet/benutzt, dann kann man für mehrere Buttons die selbe Methode benutzen und muß nich tausend Mal praktisch den selben Code hinschreiben (außer daß sich dann Button1, Button2, Button3 usw. unterscheiden)
Delphi-Quellcode:
procedure TForm1.ButtonClick(Sender: TObject);
begin
  if RadioButton1.Checked then
    begin
     (Sender as TButton).Caption:='X';
     RadioButton2.Checked := True; // du willst ja eigentlich den "Check"-Status setzen und nicht den Eingabefokus
    end
  else
    // Das zweite IF .... es kann ja eh nur Einer von Beiden sein, also "entweder der Eine oder der Andere" ... da muß man nicht nochmal prüfen
    begin
     (Sender as TButton).Caption:='O';
     RadioButton1.Checked := True;
    end;
  (Sender as TButton).Enabled:=False; // doppelter Code ... einmal reicht (du hattest bei beiden Spielern den selben Code drin)
  Gewinner;
end;

Fazer 29. Okt 2012 16:57

AW: dringende Frage zur : Tic Tac Toe Programmierung ! - Bitte um schnelle Antwort
 
habe noch ne frage :)
unzwar wenn ich das eingebe steht ausdruckstyp muss BOOLEAN sein:

Delphi-Quellcode:
procedure TForm1.zaehler;
begin
xscore := 0;
oscore := 0;

if (lblGewinner.Caption := 'Spieler 1 hat gewonnen !') then
begin
xscore := xscore + 1;
lblXScore.Caption := IntToStr(xscore);

end;
end;
WIe kann ich das beheben?

lbccaleb 29. Okt 2012 17:00

AW: dringende Frage zur : Tic Tac Toe Programmierung ! - Bitte um schnelle Antwort
 
Zitat:

Zitat von Fazer (Beitrag 1188933)
Delphi-Quellcode:
if (lblGewinner.Caption := 'Spieler 1 hat gewonnen !') then

Das ist ne Zuweisung, kein Vergleich! Für if brauchst du aber ein Vergleich...

Doppelpunkt weg...

Fazer 29. Okt 2012 17:02

AW: dringende Frage zur : Tic Tac Toe Programmierung ! - Bitte um schnelle Antwort
 
Jo ok, aber wie kann man das sinvoll anders machen?
Ich will einen Zähler einbauen in das Spiel

DeddyH 29. Okt 2012 17:04

AW: dringende Frage zur : Tic Tac Toe Programmierung ! - Bitte um schnelle Antwort
 
Was man Dir sagen wollte:
:= <- Zuweisung
= <- Vergleich

Fazer 29. Okt 2012 17:07

AW: dringende Frage zur : Tic Tac Toe Programmierung ! - Bitte um schnelle Antwort
 
Ja das weiß ich ^^

aber irgendwie will das nicht funktionieren.

if (lblGewinner.Caption = 'Spieler 1 hat gewonnen !') then
begin
xscore := xscore + 1;
lblXScore.Caption := IntToStr(xscore);
end;

also die lblXScore.Caption verändert sich nicht :S

neuer code:

Delphi-Quellcode:

unit Unit1;

interface

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


type
  TForm1 = class(TForm)
    btnNewGame: TButton;
    btnResetScore: TButton;
    rgPlayFirst: TRadioGroup;
    gbScoreBoard: TGroupBox;
    lblX: TLabel;
    lblMinus: TLabel;
    lblO: TLabel;
    lblXScore: TLabel;
    lblColon: TLabel;
    lblOScore: TLabel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    ButtonClose: TButton;
    MainMenu1: TMainMenu;
    Hilfe1: TMenuItem;
    Anleitung1: TMenuItem;
    Informationen1: TMenuItem;
    lblGewinner: TLabel;
    procedure btnNewGameClick(Sender: TObject);
    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 Gewinner;
    procedure zaehler;
    procedure ButtonCloseClick(Sender: TObject);
    procedure Anleitung1Click(Sender: TObject);
    procedure Informationen1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  xscore: Integer;
  oscore: Integer;


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  if RadioButton1.Checked then
    begin
     Button1.Caption:='X';
     Button1.Enabled:=False;
     RadioButton2.SetFocus;
    end
  else
   if RadioButton2.Checked then
    begin
     Button1.Caption:='O';
     Button1.Enabled:=False;
     RadioButton1.SetFocus;
    end;
Gewinner;
end;

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

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

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

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

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

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

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

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

//Gewinner festlegen
procedure TForm1.Gewinner;
begin
  //Kombination 1
  if (Button1.Caption='X') and (Button2.Caption='X') and (Button3.Caption='X') then
    begin
      lblGewinner.Caption :='Spieler 1 hat gewonnen !';
    end;
   if (Button1.Caption='O') and (Button2.Caption='O') and (Button3.Caption='O') then
    begin
      lblGewinner.Caption :='Spieler 2 hat gewonnen !';
    end;
  //Kombination 2
  if (Button4.Caption='X') and (Button5.Caption='X') and (Button6.Caption='X') then
    begin
      lblGewinner.Caption :='Spieler 1 hat gewonnen !';
    end;
  if (Button4.Caption='O') and (Button5.Caption='O') and (Button6.Caption='O') then
    begin
      lblGewinner.Caption :='Spieler 2 hat gewonnen !';
    end;
  //Kombination 3
  if (Button7.Caption='X') and (Button8.Caption='X') and (Button9.Caption='X') then
    begin
      lblGewinner.Caption :='Spieler 1 hat gewonnen !';
    end;
  if (Button7.Caption='O') and (Button8.Caption='O') and (Button9.Caption='O') then
    begin
      lblGewinner.Caption :='Spieler 2 hat gewonnen !';
    end;
  //Kombination 4
  if (Button1.Caption='X') and (Button4.Caption='X') and (Button7.Caption='X') then
    begin
      lblGewinner.Caption :='Spieler 1 hat gewonnen !';
    end;
  if (Button1.Caption='O') and (Button4.Caption='O') and (Button7.Caption='O') then
    begin
      lblGewinner.Caption :='Spieler 2 hat gewonnen !';
    end;
  //Kombination 5
  if (Button2.Caption='X') and (Button5.Caption='X') and (Button8.Caption='X') then
    begin
      lblGewinner.Caption :='Spieler 1 hat gewonnen !';
    end;
  if (Button2.Caption='O') and (Button5.Caption='O') and (Button8.Caption='O') then
   begin
     lblGewinner.Caption :='Spieler 2 hat gewonnen !';
   end;
  //Kombination 6
  if (Button3.Caption='X') and (Button6.Caption='X') and (Button9.Caption='X') then
    begin
      lblGewinner.Caption :='Spieler 1 hat gewonnen !';
    end;
  if (Button3.Caption='O') and (Button6.Caption='O') and (Button9.Caption='O') then
    begin
      lblGewinner.Caption :='Spieler 2 hat gewonnen !';
    end;
  //Kombination 7
  if (Button1.Caption='X') and (Button5.Caption='X') and (Button9.Caption='X') then
    begin
      lblGewinner.Caption :='Spieler 1 hat gewonnen !';
    end;
  if (Button1.Caption='O') and (Button5.Caption='O') and (Button9.Caption='O') then
    begin
      lblGewinner.Caption :='Spieler 2 hat gewonnen !';
    end;
  //Kombination 8
  if (Button3.Caption='X') and (Button5.Caption='X') and (Button7.Caption='X') then
    begin
      lblGewinner.Caption :='Spieler 1 hat gewonnen !';
    end;
  if (Button3.Caption='O') and (Button5.Caption='O') and (Button7.Caption='O') then
    begin
     lblGewinner.Caption :='Spieler 2 hat gewonnen !';
    end;
end;

procedure TForm1.zaehler;
begin
xscore := 0;
oscore := 0;

if (lblGewinner.Caption = 'Spieler 1 hat gewonnen !') then
begin
xscore := xscore + 1;
lblXScore.Caption := IntToStr(xscore);
end;

if (lblGewinner.Caption = 'Spieler 2 hat gewonnen !') then
begin
oscore := oscore + 1;
lblOScore.Caption := IntToStr(oscore);

end;
end;

procedure TForm1.btnNewGameClick(Sender: TObject);
 begin
   Button1.Caption:='';
   Button2.Caption:='';
   Button3.Caption:='';
   Button4.Caption:='';
   Button5.Caption:='';
   Button6.Caption:='';
   Button7.Caption:='';
   Button8.Caption:='';
   Button9.Caption:='';
   Button1.Enabled:=True;
   Button2.Enabled:=True;
   Button3.Enabled:=True;
   Button4.Enabled:=True;
   Button5.Enabled:=True;
   Button6.Enabled:=True;
   Button7.Enabled:=True;
   Button8.Enabled:=True;
   Button9.Enabled:=True;
   lblGewinner.Caption:='';

 end;

procedure TForm1.ButtonCloseClick(Sender: TObject);
 begin
  Form1.Close
 end;

procedure TForm1.Anleitung1Click(Sender: TObject);
 begin
  showmessage('Funktionsweise:'
               +#10#13+ '1)Kreuze an welcher Spieler anfängt!'
               +#10#13+ '2)Und Leg los!');
 end;

procedure TForm1.Informationen1Click(Sender: TObject);
 begin
  ShowMessage(' © ');
 end;




end.

nuclearping 29. Okt 2012 17:14

AW: dringende Frage zur : Tic Tac Toe Programmierung ! - Bitte um schnelle Antwort
 
Zitat:

Zitat von Fazer (Beitrag 1188938)
Ja das weiß ich ^^

Ja, dann verhalte dich bitte auch entsprechend und reagiere auf die Beiträge (zB mit einem "Danke für den Tipp"). Ich meine die Leute investieren hier immerhin ihre Zeit, um deine Probleme zu verstehen und zu lösen.

Zitat:

Zitat von Fazer (Beitrag 1188938)
also die lblXScore.Caption verändert sich nicht :S

Und die Funktion "zaehler" wird WO aufgerufen?

Edit: Den Tipp von himitsu, allen Buttons nur einen Event zuzuweisen und entsprechend den Sender auszuwerten, statt 9x den gleichen Code zu replizieren, hättest du auch beherzigen können. ;)

Fazer 29. Okt 2012 17:16

AW: dringende Frage zur : Tic Tac Toe Programmierung ! - Bitte um schnelle Antwort
 
Sry, Ich bedanke mich bei allen die mir Geholfen :D
Ich bin ziemlich neu hier im Forum und muss mich erst mal anpassen.
Hoffe es ist ok :)

Fazer 29. Okt 2012 17:22

AW: dringende Frage zur : Tic Tac Toe Programmierung ! - Bitte um schnelle Antwort
 
das mit den buttons mache ich ganz am ende aber danke für die erinnerung :)


Wie meinst du das wo ist deine function?
ich hab doch die prozedur zaehler :S

nuclearping 29. Okt 2012 17:23

AW: dringende Frage zur : Tic Tac Toe Programmierung ! - Bitte um schnelle Antwort
 
Zitat:

Zitat von Fazer (Beitrag 1188943)
Wie meinst du das wo ist deine function?
ich hab doch die prozedur zaehler :S

Ja, aber die wird nirgendwo aufgerufen.

himitsu 29. Okt 2012 17:25

AW: dringende Frage zur : Tic Tac Toe Programmierung ! - Bitte um schnelle Antwort
 
Das ist wie bei deinem "Gewinner" ... rufst du es nicht auf, wird es auch nicht ausgeführt.


Am Besten du fragst deinen Lehrer, daß er euch mal bitte das Debuggen (zumindestens die grundlegensten Dinge) beibringen möchte.

- Haltepunkte (F5)
- schrittweise Codeausführung (F7 und F8)
- Und wie man sich den Werte von Variablen ansehn kann.

Damit kannst du z.B. prüfen ob dein Code überhaupt ausgeführt wird, bzw. wie er ausgeführt wird und was genau passiert (z.B. ob ins IF oder ins ELSE gesprungen wird).
Wobei man sich das auch über die Markierungen der aktiven Codezeilen ansehn könnte ... zumindestens bei deinem "zaehler" wäre es sofort aufgefallen, da dort die Pünktchen fehlten.

Fazer 29. Okt 2012 17:30

AW: dringende Frage zur : Tic Tac Toe Programmierung ! - Bitte um schnelle Antwort
 
Ok erstmal danke :)
Das Problem ist, dass ich die Schule gewechselt habe.
Hatte damals Java und jetzt Delphi komme mit dem Syntax nicht so richtig klar.

Und der Zaehler funktioniert jetzt, jedoch zaehlt er nur bis 1 ^^ ka wieso

DeddyH 29. Okt 2012 17:32

AW: dringende Frage zur : Tic Tac Toe Programmierung ! - Bitte um schnelle Antwort
 
Wenn man eine Zahl auf 0 setzt und anschließend um 1 erhöht, wird eben 1 draus :mrgreen:

Fazer 29. Okt 2012 17:33

AW: dringende Frage zur : Tic Tac Toe Programmierung ! - Bitte um schnelle Antwort
 
Es klappt jetzt irgendwie doch alles wunderbar !
Danke nochmal :-D

dataspider 29. Okt 2012 19:35

AW: dringende Frage zur : Tic Tac Toe Programmierung ! - Bitte um schnelle Antwort
 
Zitat:

Zitat von himitsu (Beitrag 1188945)
Am Besten du fragst deinen Leerer

Man sollte diese Schreibweise für Lehrer legitimieren, es trifft ja oft zu...:wink:

Frank

himitsu 29. Okt 2012 19:56

AW: dringende Frage zur : Tic Tac Toe Programmierung ! - Bitte um schnelle Antwort
 
:oops: Ich glaub ich hattes es anfangs mit einem h und hab's dann "berichtigt".
Oder ich hatte ein E gegen ein E getauscht? :gruebel: (irgendwas hatte ich jedenfalls gemacht, weil es mit falsch vorkam)


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