![]() |
Re: Fehlermeldung: Ausdruckstyp muss BOOLEAN sein
Hallo,
was Klaus geschrieben hat, ist nur zum Teil richtig. Help wird tatsächlich nur beim ersten Aufruf gesetzt. Leider ist Help aber eine lokale Variable, deshalb ist Help auch bei allen übrigen Aufrufen undefiniert. Sobald Du Help als Variable der Form deklarierst, funktioniert auch die Methode. Alternativ kannst Du auch die Eigenschaft Tag des Timers verwenden, wenn Du die nicht für etwas anderes benötigst. Damit sparst Du Dir eine Variable, solltest dieses dann aber auch dokumentieren, damit Du weißt, was Du da getan hast. ich hab die Methode mal noch etwas überarbeitet und kommentiert. Du benötigst folgende Variablen (am Besten in Deiner Form definiert):
Delphi-Quellcode:
DoFirst: Boolean; // Welche Färbemethode?
level: Integer = 0; // Keine Ahnung ;-) start: boolean = true; // Erster Durchlauf? help: Integer; // Zähler, besser anders benennen
Delphi-Quellcode:
Gruß
procedure TForm1.Timer1Timer(Sender: TObject);
begin if start then begin // Startwerte setzen start := False; Inc(level); help := level + 3; DoFirst := True; end; // Panels einfärben if DoFirst then case Random(4) of 0: panel7.Color:=clRed; 1: panel4.Color:=clLime; 2: panel5.Color:=clYellow; 3: panel6.Color:=clBlue; end else begin panel4.Color := clGreen; panel5.Color := clOlive; panel6.Color := clNavy; panel7.Color := clMaroon; // Help vermindern Dec(help); end; // Zwischen den beiden Möglichkeiten wechseln DoFirst := not DoFirst; // Fertig -> Timer aus if (help = 0) then Timer1.Enabled := False; end; xaromz |
Re: Fehlermeldung: Ausdruckstyp muss BOOLEAN sein
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:17 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