Hai ihr,
ich habe mir auch mal den Spass gemacht etwas Code zu tippen. Dieser berücksichtigt "nebenbei" auch noch die Aufgabenstellung des Spieles
Delphi-Quellcode:
type
TDemoForm = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
Timer1: TTimer;
btn_start: TButton;
procedure btn_startClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private-Deklarationen }
Level: Integer;
Durchlauf: Integer;
Reihenfolge: array of Integer;
Pause: Boolean;
procedure AllePanelsAus;
public
{ Public-Deklarationen }
end;
var
DemoForm: TDemoForm;
implementation
{$R *.dfm}
procedure TDemoForm.btn_startClick(Sender: TObject); // Startet den Level
var
ndx: Integer;
begin
Level := 4; // Level des Spieles.
SetLength(Reihenfolge, Level); // Arraygröße auf die Anzahl der Durchgänge setzen
for ndx := Low(Reihenfolge) to High(Reihenfolge) do // Die Farbreihenfolge erzeugen
begin
Reihenfolge[ndx] := Random(4); // Zufallswert 0-3 in das Array schreiben
end;
Durchlauf := 0;
Pause := False;
Timer1.Enabled := True; // Timer starten
end;
procedure TDemoForm.FormCreate(Sender: TObject);
begin
Randomize; // Random initalisieren
AllePanelsAus;
Timer1.Enabled := False; // Timer ausschalten
Timer1.Interval := 1000; // Dauer der Farbanzeige
end;
procedure TDemoForm.Timer1Timer(Sender: TObject);
begin
if (Pause) then
begin
AllePanelsAus; // Alle Panel wieder aus
end else
begin
case Reihenfolge[Durchlauf] of // Panel gemäß Zufallsliste einschalten
0: panel1.Color := clLime;
1: panel2.Color := clYellow;
2: panel3.Color := clBlue;
3: panel4.Color := clRed;
end;
Inc(Durchlauf); // Durchlauf erhöhen
end;
if (Durchlauf - 1 = Level) then
begin
Timer1.Enabled := False; // Timer ausschalten
AllePanelsAus;
end;
Pause := not (Pause); // Flag für die Pause umschalten
end;
procedure TDemoForm.AllePanelsAus;
begin
panel1.Color := clGreen;
panel2.Color := clOlive;
panel3.Color := clNavy;
panel4.Color := clMaroon;
end;
Stephan B.