Einführung in das Programmieren mit DELPHI  

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 :

  1. 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.

  2. 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