Einzelnen Beitrag anzeigen

Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#12

Re: Fehlermeldung: Ausdruckstyp muss BOOLEAN sein

  Alt 17. Mai 2006, 07:52
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.
  Mit Zitat antworten Zitat