SekundenTimer in B2D

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

klausklapper

Betreff: SekundenTimer in B2D

BeitragMo, Jul 16, 2007 22:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, hallo.

Also, wie mach ich denn am besten nen Timer in B2D. Also ne art Stopuhr. Habs bisher so geregelt:

Code: [AUSKLAPPEN]
If timer_change>0 Then timer_change=timer_change-1
If timer_change<1
   timer_show=timer_show-1
   timer_change=32
EndIf


Aber anscheinend gibt es mehr als 32 Rechendurchläufe pro Sekunde. Und die Zahl verändert sich ja wahrscheinlich auch.
Also. Ich warte auf Vorschläge ^__^


MfG,
KlausK.
 

Dreamora

BeitragMo, Jul 16, 2007 22:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Erm ich fürchte so wird das auch nicht gehen:

1000/frequenz = anzahl updates und dann mit millisecs() schauen ob die zeitdifferenz seit dem letzten update entsprechend gross ist

dein test ist in keinster form an zeit gebunden und kann somit nicht funktionieren.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

klausklapper

BeitragMo, Jul 16, 2007 22:56
Antworten mit Zitat
Benutzer-Profile anzeigen
oOooookay, ich hab kein wort verstanden. Könntest du das ausführlicher beschreiben, bitte?

MfG,
KlausK.
 

Dreamora

BeitragMo, Jul 16, 2007 23:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Nun, wenn du willst das etwas 32 Mal pro Sekunde gemacht wird, musst du die Zeitdifferenz anschauen seit es das letzte Mal gemacht wurde.

Wenn diese Differenz grösser ist als 1000/32 Millisekunden (1000 = 1 Sekunde, 32 = Frequenz = Anzahl Male wie häufig es passieren soll), dann soll der Code ausgeführt werden.


Dein Code nutzt leider in keinster Weise Zeitdifferenzen. Auf meinem System führt er es mehrfach pro Millisekunde aus nur so als Randbemerkung.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Xeres

Moderator

BeitragMo, Jul 16, 2007 23:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Normalerweise speichert man die Zeit in einer Variable und prüft, ob die Startzeit plus der gewünschten dauer schon vergangen ist:
Code: [AUSKLAPPEN]
ms = millisecs() ; Die Startzeit
if ms + 1000 =< millisecs() then ... ; Wenn Startzeit plus dauer gleich oder kleiner der aktuellen Zeit sind, wird etwas ausgeführt

Das kann man realisieren wie man will, aber ohne eine Funktion die dir unabhängig von deiner Prozessorgeschwindigkeit eine Zeit übergibt, wird dein Timer nicht auf allen Systemen gleich laufen.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

klausklapper

BeitragMo, Jul 16, 2007 23:45
Antworten mit Zitat
Benutzer-Profile anzeigen
und gäbe es denn eine solche funktion?
 

Dreamora

BeitragMo, Jul 16, 2007 23:58
Antworten mit Zitat
Benutzer-Profile anzeigen
In Blitz selbst, nein

Ausser du willst das dein programm bis zum ablauf des timers stehen bleibt, dann kannst du CreateTimer und WaitTimer nutzen
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Xeres

Moderator

BeitragDi, Jul 17, 2007 0:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
und gäbe es denn eine solche funktion?

Wenn du eine Funktion meinst, die dir unabhängig von deiner Prozessorgeschwindigkeit eine Zeit übergibt, dann millisecs(). Diese ist nicht absolut, man kann aber damit zeitdifferenzen messen.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group