![]() |
Probleme beim Stoppuhr minispiel
hallo,
ich wollte ein kleines minispiel mit einer stoppuhr programmieren. dabei soll man die zeit schätzen. mittels button startet man einem time und wenn man glaubt das 10 sekunden vergangen sind drückt man stopp. dann wird der vorher verdeckte timer sichtbar und man sieht wie nah man dran war. hier unten seht ihr meinem quelltext. Meine konkreten fragen: Wie mache ich das das das label welches die zeit anzeigt wieder angezeigt wird wenn ich auf stop drücke wie mache ich es wenn man die zeit genau auf 10 sek. geschätzt hat das ein label mit zb "gewonnen erscheint".
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, jpeg, ExtCtrls; type TForm1 = class(TForm) Image1: TImage; Timer: TTimer; Button2: TButton; Label3: TLabel; Label1: TLabel; procedure TimerTimer(Sender: TObject); procedure Button2Click(Sender: TObject); private StartZeit: TDateTime; StopZeit: TDateTime; { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button2Click(Sender: TObject); begin case Button2.Tag of 0: begin { wenn die Uhr gestartet wird } StartZeit := now; Timer.Enabled := true; Button2.Caption := '&Stop'; end; { Ende des Zweigs beim Start der Uhr } 1: begin { wenn die Uhr angehalten wird } StopZeit := now; Timer.Enabled := false; Button2.Caption := '&Start'; Label3.Caption := TimeToStr( StopZeit - StartZeit); end; { Ende des Zweiges bei anhalten der Uhr } end; { Ende der CASE-Anweisung } { nun den tag umstellen } Button2.Tag := Button2.Tag + 1; if Button2.Tag > 1 then Button2.Tag := 0; end; procedure TForm1.TimerTimer(Sender: TObject); begin Label3.Caption := TimeToStr(now - StartZeit); end; end. vll könnt ihr mir ein wenig helfen danke im vorraus. hier nochmal falsl ihr das ganze prog sehen wollt : ![]() |
Re: Probleme beim Stoppuhr minispiel
Hallo,
geht das nicht mit
Delphi-Quellcode:
?
Label3.visible:=true
Grüße Klaus |
Re: Probleme beim Stoppuhr minispiel
Delphi-Quellcode:
Label1.Hide; // Ausblenden Label1.Show; // Anzeigen Label1.Visible := false; // Ausblenden Label1.Visible := true; // Anzeigen |
Re: Probleme beim Stoppuhr minispiel
Cool danke das habe ich hinbekommen :-D
Fehlt nur noch das wenn die zeit bei 10 Sekunden ist und man stopp drückt ein label kommt mit gewoonen bzw wenn es unter 10 oder über zehn ist 2 versuchs nochmal" vll. irgendwie so mit if Stopzeit = 10 oder iwie so...hmmm |
Re: Probleme beim Stoppuhr minispiel
Zitat:
Delphi-Quellcode:
ODER
IF (Stopzeit = 10) THEN (Label1.Caption := 'Gewonnen');
IF (Stopzeit <> 10) THEN (Label1.Caption := 'Verloren!');
Delphi-Quellcode:
IF (Stopzeit = 10) THEN (Label1.Caption := 'Gewonnen');
IF (Stopzeit < 10) THEN (Label1.Caption := 'Verloren! - Zu langsam!'); IF (Stopzeit > 10) THEN (Label1.Caption := 'Verloren! - Zu schnell!'); |
Re: Probleme beim Stoppuhr minispiel
Klappt noch nicht ganz ^^ er zeigt immer "zu schnell" an vll kann man den wert 10 nicht mit 10 sekunden bei tdatetime gleichsetzten
|
Re: Probleme beim Stoppuhr minispiel
.. wo wird denn Stopzeit mit einem Wert belegt?
Du willst doch die Differenz von StartZeit und StopZeit betrachten und nicht den absoluten Wert von StopZeit. Und schau Dir mal das Format des Typen TDateTime in der Delphi Hilfe an. Grüße Klaus |
Re: Probleme beim Stoppuhr minispiel
Es soll doch nur bis 10 gezählt werden, seh ich doch richtig oder?
Warum nimmste da TDateTime. Nimm doch einfach nen Counter der immer um 1 hochzählt! Evtl musst du die Stopzeit vorher auf 0 setzten |
Re: Probleme beim Stoppuhr minispiel
.. oder diese Funktion:
Zitat:
|
Re: Probleme beim Stoppuhr minispiel
zählen sollen er immer weiter blos der zeit punkt bis zu dem man auf stop drückt soll mit dem zeitwert 10 sekunden verglichen werden...wie meinste mit nem counter der immer um eins hochzählt müsste ich den dann nur mit "TDateTime" ersetzten?
|
Re: Probleme beim Stoppuhr minispiel
habs jetzt so gemacht :
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, jpeg, ExtCtrls; type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Image1: TImage; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; startzeit, endzeit : Cardinal; Zeitsumme: TDateTime; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin If (Button1.Caption = 'Start') then begin startzeit := GetTickCount; Button1.Caption := 'Stop'; label1.Caption := 'Die Uhr läuft!!'; end else begin endzeit := GetTickCount; label1.Caption := Format ('Die Stopuhr lief %d ms.',[endzeit-startzeit]); Button1.Caption := 'Start'; IF (endzeit-startzeit = 10000) THEN (Label3.Caption := 'Gewonnen'); IF (endzeit-startzeit < 10000) THEN (Label3.Caption := 'Verloren! - Zu schnell!'); IF (endzeit-startzeit > 10000) THEN (Label3.Caption := 'Verloren! - Zu langsam!'); end; end; end. |
Re: Probleme beim Stoppuhr minispiel
.. so mag es gehen, aber das jemand punktgenau nach 10000 ms den Knopf drückt
sehe ich als eher unwahrscheinlich an. Ich würde da noch eine gewisse Toleranz einbauen. Grüße Klaus |
Re: Probleme beim Stoppuhr minispiel
Eine evtl alternativ Lösung:
Delphi-Quellcode:
{ ************************************** * Code by Marc von Garrel * * (c)2009 Marc 'BullsEye' von Garrel * * Vist me at: [url]www.m-v-g.de.ms[/url] * ************************************** } unit sek; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TfrmGame = class(TForm) edtZeit: TEdit; Label1: TLabel; btnStart: TButton; btnClose: TButton; edtZiel: TEdit; Label2: TLabel; Timer: TTimer; Button1: TButton; Label3: TLabel; procedure btnCloseClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure btnStartClick(Sender: TObject); procedure TimerTimer(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var frmGame: TfrmGame; zeit, zaehler : Integer; implementation {$R *.dfm} procedure TfrmGame.btnCloseClick(Sender: TObject); begin Timer.Enabled := false; zeit := 0; zaehler := 0; btnStart.Caption := 'Start'; edtZiel.Text := IntToStr(zaehler); // edtZiel.Show; end; procedure TfrmGame.FormCreate(Sender: TObject); begin frmGame.DoubleBuffered := true; end; procedure TfrmGame.btnStartClick(Sender: TObject); begin Zeit := StrToInt(edtZeit.Text); btnStart.Caption := 'Stop'; IF (Timer.Enabled = false) THEN BEGIN Timer.Enabled := true; zaehler := 0; zeit := 0; edtZiel.Text := '0'; btnStart.Caption := 'Stop'; END ELSE BEGIN Timer.Enabled := false; edtZiel.Text := IntToStr(zaehler); IF (zeit = zaehler) THEN ShowMessage('Gewonnen!'); IF (zeit > zaehler) THEN ShowMessage('Verloren! - Zu schnell!'); IF (zeit < zaehler) THEN ShowMessage('Verloren! - Zu langsam!'); btnStart.Caption := 'Start'; END; end; procedure TfrmGame.TimerTimer(Sender: TObject); begin zaehler := zaehler+1; end; procedure TfrmGame.Button1Click(Sender: TObject); begin close(); end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:30 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