10. Das Spiel FlipFlop
Als kleine kreative Pause schreiben wir zwischendurch ein Spiel.
![]() |
Da man in Delphi die Farbe von Buttons nicht einfach verändern kann, nehmen wir für die Felder Panels. Den Farbwechsel eines Panels erreicht man z.B. so:
procedure TForm1.Panel1Click
(Sender: TObject);
begin
if panel1.Color=clWhite then
panel1.color := clRed
else
panel1.color := clWhite;
end;
|
Da wir aber 16 Felder haben und bei einem Klick bis zu 5 Felder die Farbe wechseln, schreiben wir eine kurze Prozedur, die mehrfach aufgerufen wird:
procedure fw(Sender: TObject);
begin
with TPanel(Sender) do
if color=clRed then
color:=clwhite
else
color:=clred;
end;
|
Um die Panels leichter ansprechen zu können, werden sie umbenannt in:
![]() Außerdem wird die Nummer jedes Panels in der Eigenschaft Tag abgelegt. |
Die folgende Prozedur erlaubt es, den Farbwechsel
über die Nummer des Panels zu veranlassen:
procedure Farbwechsel(i:integer);
begin
case i of
11: fw(form1.pan11);
12: fw(form1.pan12);
13: fw(form1.pan13);
14: fw(form1.pan14);
21: fw(form1.pan21);
22: fw(form1.pan22);
23: fw(form1.pan23);
24: fw(form1.pan24);
31: fw(form1.pan31);
32: fw(form1.pan32);
33: fw(form1.pan33);
34: fw(form1.pan34);
41: fw(form1.pan41);
42: fw(form1.pan42);
43: fw(form1.pan43);
44: fw(form1.pan44);
else { außerhalb }
end;
end;
|
Alle Panels erhalten dieselbe Click-Prozedur zugewiesen, in der der Farbwechsel der Nachbarfelder aufgerufen wird.
procedure TForm1.pan11Click(Sender: TObject);
var i: integer;
begin
i := TPanel(sender).tag;
Farbwechsel(i);
Farbwechsel(i-10);
Farbwechsel(i+10);
Farbwechsel(i-1);
Farbwechsel(i+1);
end;
|
Aufgaben :
- Ergänzen Sie eine Prozedur, die am Anfang aufgerufen wird und 100 zufällige Züge durchführt (Mischen).
Dabei soll jedesmal mit "Random(4)+1" eine zufällige Zeilen- und Spaltenummer bestimmt werden. - Ergänzen Sie eine Prozedur, die nach jedem Zug prüft, ob bereits alle Felder die gleiche Farbe haben (Spielende).
Wenn ja, soll die Taste "Neues Spiel" aktiviert werden, mit der wieder 100 Zufallszüge ausgeführt werden.
» Lösung
Bemerkung :
Selbstverständlich wäre die Prozedur Farbwechsel obsolet, wenn man ein Array of TPanel erzeugt hätte.
Das Spiel sollte aber nach wenigen Stunden Informatik bereits mit einfachen Mitteln erstellt werden.
© 2008 : Bernd Schultheiss
Einführung in das Programmieren mit DELPHI


