Zeitmessung funktioniert nicht!!!

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

little_john

Betreff: Zeitmessung funktioniert nicht!!!

BeitragSo, Apr 17, 2011 14:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo alle zusammen,

ich wollte eine kleine Zeitmessung programmieren, die auf 5 sec zählt. Das Funktioniert auch, aber ich bekomme es nicht hin, das die Zeit beim nächsten aufruf wieder bei null anfängt. Die Zeit läuft bis 5 dann läuft sie weiter, ich habe schon viele probiert aber nichts hat geholfen vlt. könnte ihr mir weiter helfen.

Startzeit startet beim start des Programmes.
BlitzMax: [AUSKLAPPEN]

Strict
SeedRnd MilliSecs()

Global start_zeit_l:Int = MilliSecs()
Global jetzt_zeit_l:Int = 0




Methode zeitmessung:
BlitzMax: [AUSKLAPPEN]

Method zeitmessen()

jetzt_zeit_l = MilliSecs()

Local zeit:Int
zeit = (jetzt_zeit_l - start_zeit_l) / 1000 + 1

DrawText zeit, 250, 250 'Zur überprüfung ob die Zeit auch wirklich hochzählt

If zeit = 5
getroffen = 0
start_zeit_l = jetzt_zeit_l 'Weis nicht was es bringen soll, habe ich aus verzweiflung probiert aber geht auch nicht
End If

End Method



So wird die Methode aufgerufen:
BlitzMax: [AUSKLAPPEN]

If schlaeger_links.getroffen = 1
schlaeger_links.zeitmessen()
End If


mfg
little_john

ToeB

BeitragSo, Apr 17, 2011 14:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du die Jetzt-Zeit auf 0 setzt, und dann "Jetzt-Start" rechnest, kommt dort der Negative Wert von Start raus. du musst einfach die Jetzt-Zeit in der Method immer auf Millisecs() setzten, dann sollte es gehen..


mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Midimaster

BeitragSo, Apr 17, 2011 14:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Nach dem ersten "Treffer" läuft die Zeit einmal bis 5 hoch. Wenn 5 erreicht wird, wird start_zeit_l% zwar wieder zurückgesetzt, aber der Zeitunterschied zwischen start_zeit_l% und jetzt_zeit_l% wird ja bereits von diesem Moment an kontinuierlich größer.

Wenn du nun endlich den nächsten Treffer hast sind weit mehr als 5 sec verstrichen. Zeit% steht dann vielleicht schon auf 15 oder so. Folge: der Zustand "5" wird gar nicht mehr erreicht, weil er längst überschritten ist.

Lösung:
Du musst was einbauen, das die start_zeit_l% erst dann zurücksetzt, wenn ein neuer Treffer erstmalig die Schleife wieder aufruft. Da dies nur einmal pro Treffer passieren darf, setzt Du getroffen danach auf 2:

BlitzBasic: [AUSKLAPPEN]
Method zeitmessen()
If getroffen=1 Then
getroffen=2
start_zeit_l = MilliSecs()
EndIf

jetzt_zeit_l = MilliSecs()
Local zeit:Int
zeit = (jetzt_zeit_l - start_zeit_l) / 1000 + 1

DrawText zeit, 250, 250
If zeit >= 5
getroffen = 0
End If
End Method



If schlaeger_links.getroffen > 0
schlaeger_links.zeitmessen()
End If

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group