CreateTimer() / MilliSecs() Problem

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Cerbus

Betreff: CreateTimer() / MilliSecs() Problem

BeitragDi, Okt 19, 2004 1:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
So ich übertreff jetzt wahrscheinlich hier wieder alles, aber mir fällt einfach der Name nicht mehr von dem Befehl ein... suchen kann ich danach schlecht...^^
Ich versuch den mal zu beschreiben was für einen ich suche. ^^

Mit dem Befehl, konnte man eine bestimme Anzahl von "Anschläge" in der Sekunde bestimmen. Die "Anschläge" standen in Klammern.
Beispielsweise in einer Sekunde 3 dazu.

Das war nur ein Befehl. Komme aber nicht mehr drauf wie der hieß.
Hoffe ihr könnt mir helfen und hier entschuldigt meine Vergesslichkeit. Embarassed

Gruß
Cerbus
  • Zuletzt bearbeitet von Cerbus am Di, Okt 19, 2004 2:00, insgesamt 2-mal bearbeitet

D2006

Administrator

BeitragDi, Okt 19, 2004 1:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
CreateTimer


MfG

Cerbus

BeitragDi, Okt 19, 2004 1:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank D2006!
Das ist der Befehl.
Hey, wärs ein Preisauschreiben häste jetzt was gewonnen. Wink

PS: Ich bin echt nicht mehr auf diesen dämlichen Befehl gekommen und wusste auch sonst nicht mehr wo ich hätte schauen sollen... war jetzt echt ratlos. ^^

Gruß
Cerbus

Cerbus

BeitragDi, Okt 19, 2004 2:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Jetzt hätte ich aber nochmal eine genauere Frage zu CreateTimer() da ich dachte ich könnte das so anwenden....

Code: [AUSKLAPPEN]

Takt = CreateTimer(1)
 If Takt >= 200 Then
 Jahr = Jahr + 1
endif
If Takt > 201 Then
 Takt = 0
Endif


So wollte ichs eigentlich mit dem Timer machen....
aber wenn ich mir die Zahlenfolge anschaue was CreateTimer() ausgibt, ist das ne ewiglange Zahl und nicht das was ich mir erhofft habe.
Da mein Versuch auch schon nicht mit MilliSecs() funktioniert hat....

Was ich vorhabe ist, wenn man abspeichert und das Programm beendet, und danach den Spielstand wieder lädt, das er bei der Zeit weiter macht wo er stehen geblieben ist und weiter zählt ohne das er wieder von vorne anfängt zu Zählen.

Will das in einem Kreislauf haben, das er beispielsweise jede 45 min + 1 dazu zählt, aber nach dem abspeichern und laden wieder bei der bereits vergangen restliche Zeit beginnt.

Hab mir schon den Kopf dadrüber zerbrochen, das lösen könnte komme aber nicht wirklich drauf.

(Speichern usw. ist alles klar wie ich das mache... nur das der zählt und das bereits gezählte übernimmt...)
 

Dreamora

BeitragDi, Okt 19, 2004 2:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Timer ist auch nicht für diese Anwendung gedacht.
Timer senden alle 1000 / Timerintervall ein Signal, dass man mittels WaitTimer(Timer) abfangen kann.

Wenn du Zeitabstände messen willst, musst du dies mittels Vergleichen über Millisecs() machen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Cerbus

BeitragDi, Okt 19, 2004 2:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok. Danke dir...
Glaub dann mach ichs irgendwie so... meinst das ist ne gute Lösung, oder vielleicht hat noch jemand eine schnellere Lösung?

Code: [AUSKLAPPEN]

IF Zeit + 3000 < Millisecs() Then
Takt = Takt + 1
Zeit = Millisecs()
Endif

If Takt >= 20 Then
Jahr = Jahr + 1
Takt = 0
Endif

So würde der dann nicht ganz neu zum Zählen anfangen. Sondern ich könnte den Takt Speichern ohne größeren Zeitverlust.

Weil wenn ichs so mache....
Code: [AUSKLAPPEN]

If Zeit + 40000 < Millisecs()
Jahr = Jahr + 1
Zeit = Millisecs()
Endif


Kann ich die Zeit was vergangen ist zwar auch abspeichern, würde aber nicht mehr richtig stimmen, wenn ich das beispielsweise am nächsten Tag wieder lade. (solangs nur paar Sekunden danach sind, gehts aus meinen Erfahrungen noch)
Oder hab ich da nen Denkfehler? O_o
 

Gerhard

BeitragDi, Okt 19, 2004 6:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst doch einfach die vergangene Zeit (hier: restzeit) speichern und wieder laden:

Beim Speichern:
restzeit = millisecs() - (Zeit + 40000)
[edit] natürlich andersrum:
restzeit = (zeit + 40000) - millisecs()

Beim Laden:
Zeit = millisecs() + restzeit

In deiner Formel würde ich schreiben:

if Millisecs() > zeit then
zeit = Millisecs() + 40000
usw.

dann musst du nicht ständig 40000 addieren, sondern nur einmal pro Intervall.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group