Waittimer

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Ana

Betreff: Waittimer

BeitragDo, Apr 23, 2009 23:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo zusammen,

ich hab ein Problem mit 2 funktionen die beide einen timer drin haben (mit unterschiedlichen Frequenzen)
jedoch weiß ich nicht wirklich wie ich sie nun so machen kann, das der eine nicht warte bis der andere fertig ist im moment stehen sie wie folgt
Code: [AUSKLAPPEN]

Repeat
Abzüge() ; Frequenz 1
Cls
leiste(); Frequenz 40
Until GetKey()



Gibts für waittimer eine gute alternative? beim Abzüge() würde mir einer lieber sein der alle 30 sekunden nur tickt

Xeres

Moderator

BeitragFr, Apr 24, 2009 0:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Bitte schön:

BlitzBasic: [AUSKLAPPEN]
Graphics(400, 300, 0, 2)
SetBuffer BackBuffer()
Global ms = MilliSecs()
Local Frametimer = CreateTimer(60) ;* 60 Hz Timer
Local beat.TTimer = Create_Timer(2000) ;* 2 Sekunden Timer

Repeat
Cls

ms = MilliSecs()

If Checktimer(beat) Then Text(200, 150, "TICK", True, True)

Flip(0)
WaitTimer(Frametimer)
Until KeyHit(1)
End

Type TTimer
Field Zeit, Dauer
End Type

Function Create_Timer.TTimer(fdauer)
;* Gibt einen TTimer zurück, der alle *fdauer* Millisekunden schlägt.
Local T.TTimer = New TTimer
T\Dauer = fdauer
;* 0= Timer ist sofort ausgelaufen
T\Zeit = 0 ;ms
Return T
End Function

Function Checktimer(T.TTimer)
;* Gibt TRUE zurück wenn der Timer geschlagen hat
If T\Zeit + T\Dauer < ms Then
T\Zeit = ms
Return True
Else
Return False
EndIf
End Function
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)
  • Zuletzt bearbeitet von Xeres am Fr, Apr 24, 2009 0:10, insgesamt einmal bearbeitet
 

Pitje Puck

BeitragFr, Apr 24, 2009 0:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hoffe ich verstehe dein Problem richtig, aber generell kann man so etwas gut mit millisecs() lösen. Der Befehl gibt die aktuelle Systemzeit in Millisekunden aus.

z.B.
Code: [AUSKLAPPEN]

; deine "frequenz" festlegen
wartezeit_abzüge = 1 ; wenn du eine Sekunde meinst natürlich 1000
wartezeit_leiste = 40

; Startzeit festlegen
startzeit_abzüge = MilliSecs()
startzeit_leiste = MilliSecs()

Repeat
  If MilliSecs()-startzeit_abzüge > wartezeit_abzüge Then
     abzüge()
     startzeit_abzüge = MilliSecs()
  endif

  If MilliSecs()-startzeit_leiste > wartezeit_leiste Then
     leiste()
     startzeit_leiste = MilliSecs()
  endif
Until GetKey()


Edit: Da war wohl jemand schneller. Aber jetzt hast du wenigstens mehr Auswahl. Wink

Ana

BeitragFr, Apr 24, 2009 8:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen dank euch beiden, wobei ich den ersten ansatz recht schwierig finde Confused

Xeres

Moderator

BeitragFr, Apr 24, 2009 15:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Mein Ansatz erlaubt es beliebig viele Timer zu verwenden - was du auch "per Hand" machen kannst wie Pitje Pucks Code demonstriert.
Es geht immer darum, die aktuelle Zeit (Millisecs) zu speichern und dann heraus zu finden, ob die gewünschte Zeitspanne verstrichen ist.
Für Nachfragen zum Code stehe ich zur Verfügung.
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