Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Schon wieder Arrays... Werte abwechselnd ändern? (https://www.delphipraxis.net/30249-schon-wieder-arrays-werte-abwechselnd-aendern.html)

malo 22. Sep 2004 20:20

Re: Schon wieder Arrays... Werte abwechselnd ändern?
 
Zitat:

Zitat von xineohp
moin,

wenn ich das jetzt richtig verstanden und mir korrekt vorstelle, dann soll das so eine Art Drei-Gewinnt werden?
Wobei die 9 Buttons die 9 Felder darstellen, der eine Spieler 1en und der zweite 2en verteilt?!

liege ich mit dieser vermutung richtig?

Wenn ja, dann sollen ja 1en und 2en immer abwechseld verteilt werden, somit muss du doch nur prüfen/mitzählen ob die Gesamtzahl an gedrückten Buttons gerade oder ungerade ist und dann jeweils 1 bzw. 2 ein das jeweilige array feld eintragen.

bingo, genau das soll es werden :thumb: :!:

Den unteren Teil versteh ich jetzt nicht wirklich... soll man jetzt selbst aufpassen, ob man den jeweiligen Button schon gedrückt hat oder wie? :???:

xineohp 22. Sep 2004 20:29

Re: Schon wieder Arrays... Werte abwechselnd ändern?
 
1. jeder Button darf nur einmal gedrückt werden --> Im OnClick-Ereignis: ButtonX.enabeld := false;
2. fest stellen welcher Spieler an der Reihe ist bzw. welche Zahl eingetragen werden soll
--> eine globale Variable einführen die speichert welcher Spieler zu letzt gesetzt hat
--> Im OnClick-Ereignis:
Delphi-Quellcode:
case LastPlayer of
  0: LastPlayer := 1; // noch kein Button gedrückt, also kommt Spieler 1 drann
  1: LastPlayer := 2; // Spieler 1 war drann, also muss jetzt Spieler 2 rann
  2: LastPlayer := 1; // Spieler 2 war drann, also muss jetzt Spieler 1 rann
end;
3. Wert in das array eintragen --> Im OnClick-Ereignis: array[X,Y] := LastPlayer

malo 22. Sep 2004 20:34

Re: Schon wieder Arrays... Werte abwechselnd ändern?
 
aha... hört sich schonmal nicht schlecht an.

nur: welchen Typ soll die Variable lastplayer haben? :?:

xineohp 22. Sep 2004 20:37

Re: Schon wieder Arrays... Werte abwechselnd ändern?
 
integer natürlich :roll: ... wir wollen schließlich was zählen :wink:

FAlter 22. Sep 2004 20:38

Re: Schon wieder Arrays... Werte abwechselnd ändern?
 
Von einem Ordinaltyp auf jeden Fall.

Und in diesem Fall kein Char o. ä.

Wie wäre es den mit Integer?

malo 22. Sep 2004 21:11

Re: Schon wieder Arrays... Werte abwechselnd ändern?
 
Wenn ich jetzt aber array[X,Y] := LastPlayer hab (natürlich hab ich X und Y durch die jeweiligen Arraydaten ersetzt) kommt da immer "Konstantenausdruck erwartet". Was soll ich jetzt machen? :???:

xineohp 22. Sep 2004 21:34

Re: Schon wieder Arrays... Werte abwechselnd ändern?
 
also du solltest folgende Deklarationen unter var stehen haben:

array: array[1..3,1..3] of integer;
LastPlayer: integer;

Dann sollte es keine Fehler geben. Wenn doch, poste mal deinen Quellcode.

malo 23. Sep 2004 13:25

Re: Schon wieder Arrays... Werte abwechselnd ändern?
 
Ich hab jetzt mal das oberste weggelassen und nur alles ab var reinkopiert ;)

Delphi-Quellcode:
var
  Form1: TForm1;
  TicTacToe : array [1..3, 1..3] of integer;
  LastPlayer : integer;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
TicTacToe[1,1] := 0;
TicTacToe[1,2] := 0;
TicTacToe[1,3] := 0;
TicTacToe[2,1] := 0;
TicTacToe[2,2] := 0;
TicTacToe[2,3] := 0;
TicTacToe[3,1] := 0;
TicTacToe[3,2] := 0;
TicTacToe[3,3] := 0;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.enabled := false;
case LastPlayer of
  0: LastPlayer := 1; // noch kein Button gedrückt, also kommt Spieler 1 drann
  1: LastPlayer := 2; // Spieler 1 war drann, also muss jetzt Spieler 2 rann
  2: LastPlayer := 1; // Spieler 2 war drann, also muss jetzt Spieler 1 rann
TicTacToe[1,1] := LastPlayer;
end;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Button2.enabled := false;
case LastPlayer of
  0: LastPlayer := 1; // noch kein Button gedrückt, also kommt Spieler 1 drann
  1: LastPlayer := 2; // Spieler 1 war drann, also muss jetzt Spieler 2 rann
  2: LastPlayer := 1; // Spieler 2 war drann, also muss jetzt Spieler 1 rann
TicTacToe[1,2] := LastPlayer;
end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Button3.enabled := false;
case LastPlayer of
  0: LastPlayer := 1; // noch kein Button gedrückt, also kommt Spieler 1 drann
  1: LastPlayer := 2; // Spieler 1 war drann, also muss jetzt Spieler 2 rann
  2: LastPlayer := 1; // Spieler 2 war drann, also muss jetzt Spieler 1 rann
TicTacToe[1,3] := LastPlayer;
end;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
Button4.enabled := false;
case LastPlayer of
  0: LastPlayer := 1; // noch kein Button gedrückt, also kommt Spieler 1 drann
  1: LastPlayer := 2; // Spieler 1 war drann, also muss jetzt Spieler 2 rann
  2: LastPlayer := 1; // Spieler 2 war drann, also muss jetzt Spieler 1 rann
TicTacToe[2,1] := LastPlayer;
end;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
Button5.enabled := false;
case LastPlayer of
  0: LastPlayer := 1; // noch kein Button gedrückt, also kommt Spieler 1 drann
  1: LastPlayer := 2; // Spieler 1 war drann, also muss jetzt Spieler 2 rann
  2: LastPlayer := 1; // Spieler 2 war drann, also muss jetzt Spieler 1 rann
TicTacToe[2,2] := LastPlayer;
end;
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
Button6.enabled := false;
case LastPlayer of
  0: LastPlayer := 1; // noch kein Button gedrückt, also kommt Spieler 1 drann
  1: LastPlayer := 2; // Spieler 1 war drann, also muss jetzt Spieler 2 rann
  2: LastPlayer := 1; // Spieler 2 war drann, also muss jetzt Spieler 1 rann
TicTacToe[2,3] := LastPlayer;
end;
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
Button7.enabled := false;
case LastPlayer of
  0: LastPlayer := 1; // noch kein Button gedrückt, also kommt Spieler 1 drann
  1: LastPlayer := 2; // Spieler 1 war drann, also muss jetzt Spieler 2 rann
  2: LastPlayer := 1; // Spieler 2 war drann, also muss jetzt Spieler 1 rann
TicTacToe[3,1] := LastPlayer;
end;
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
Button8.enabled := false;
case LastPlayer of
  0: LastPlayer := 1; // noch kein Button gedrückt, also kommt Spieler 1 drann
  1: LastPlayer := 2; // Spieler 1 war drann, also muss jetzt Spieler 2 rann
  2: LastPlayer := 1; // Spieler 2 war drann, also muss jetzt Spieler 1 rann
TicTacToe[3,2] := LastPlayer;
end;
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
Button9.enabled := false;
case LastPlayer of
  0: LastPlayer := 1; // noch kein Button gedrückt, also kommt Spieler 1 drann
  1: LastPlayer := 2; // Spieler 1 war drann, also muss jetzt Spieler 2 rann
  2: LastPlayer := 1; // Spieler 2 war drann, also muss jetzt Spieler 1 rann
TicTacToe[3,3] := LastPlayer;
end;
end;

end.
PS: Ich weiß, ich faules Schwein hab die case-Befehle direkt kopiert (mit kommentaren), aber... naja, sollte ja nicht das Hindernis sein.

Delphi-Quellcode:
TicTacToe[1,1] := LastPlayer;
und genau da tritt die Fehlermeldung auf "Konstantenausdruck erwartet... übrigens bei allen Befehlen dieser Art.

ibp 23. Sep 2004 13:41

Re: Schon wieder Arrays... Werte abwechselnd ändern?
 
Zitat:

Zitat von malo
Ich hab jetzt mal das oberste weggelassen und nur alles ab var reinkopiert ;)

procedure TForm1.FormCreate(Sender: TObject);
begin
//..
LastPlayer:=0;

end;

damit sollte dein problem gelöst sein!

scp 23. Sep 2004 13:41

Re: Schon wieder Arrays... Werte abwechselnd ändern?
 
Du hast die Zeile eins zu weit oben eingefügt, das Case muss ja erstmal durch end; abgeschlossenwerden:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Button1.enabled := false;
  case LastPlayer of
    0: LastPlayer := 1; // noch kein Button gedrückt, also kommt Spieler 1 drann
    1: LastPlayer := 2; // Spieler 1 war drann, also muss jetzt Spieler 2 rann
    2: LastPlayer := 1; // Spieler 2 war drann, also muss jetzt Spieler 1 rann
  end;
  TicTacToe[1,1] := LastPlayer;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:12 Uhr.
Seite 2 von 3     12 3      

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