![]() |
Re: Schon wieder Arrays... Werte abwechselnd ändern?
Zitat:
Den unteren Teil versteh ich jetzt nicht wirklich... soll man jetzt selbst aufpassen, ob man den jeweiligen Button schon gedrückt hat oder wie? :???: |
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:
3. Wert in das array eintragen --> Im OnClick-Ereignis: array[X,Y] := LastPlayer
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; |
Re: Schon wieder Arrays... Werte abwechselnd ändern?
aha... hört sich schonmal nicht schlecht an.
nur: welchen Typ soll die Variable lastplayer haben? :?: |
Re: Schon wieder Arrays... Werte abwechselnd ändern?
integer natürlich :roll: ... wir wollen schließlich was zählen :wink:
|
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? |
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? :???:
|
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. |
Re: Schon wieder Arrays... Werte abwechselnd ändern?
Ich hab jetzt mal das oberste weggelassen und nur alles ab var reinkopiert ;)
Delphi-Quellcode:
PS: Ich weiß, ich faules Schwein hab die case-Befehle direkt kopiert (mit kommentaren), aber... naja, sollte ja nicht das Hindernis sein.
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.
Delphi-Quellcode:
und genau da tritt die Fehlermeldung auf "Konstantenausdruck erwartet... übrigens bei allen Befehlen dieser Art.
TicTacToe[1,1] := LastPlayer;
|
Re: Schon wieder Arrays... Werte abwechselnd ändern?
Zitat:
|
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 23:31 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