Code-Beispiel
Kleines Beispiel UDT zum FPS Steuern
Lizenz: | Erster Autor: | Letzte Bearbeitung: |
k. A. | DonStevone | 20.09.2011 |
Ihr kennt das Problem wenn ihr ein Spiel schreibt und es in einer unkontrollierten Geschwindigkeit loslegt?
Hier die Lösung ein kleines UDT mit Beispiel.
Type TimeControlUDT
Declare Constructor(FPS as Integer)
Declare Sub ControlTime()
Private:
Temp1 as Double
StartTime as Double
DurchlaeufeS as Integer
End Type
Constructor TimeControlUDT(FPS as Integer)
DurchlaeufeS = FPS
End Constructor
Sub TimeControlUDT.ControlTime()
If StartTime > 0 then
Temp1 = INT(1000 - (Timer - StartTime) * DurchlaeufeS)
Temp1 = Temp1 \ DurchlaeufeS
If Temp1 > 0 then Sleep Temp1, 1
Endif
StartTime = Timer
End Sub
Und hier ein kleines Beispiel welches ihr direkt unter den Code vom UDT pasten könnt.
Dim as Integer Check 'Variable um die Schleifendurchlaeufe zu zaehlen
Dim as Double CheckTime1 = Timer 'Variable um die Zeit zu berechnen die das Programm lief
Dim as Integer FPS = 60 'Variable um die FPS zu speichern (Hier im Beispiel nur nötig, da sie am Ende noch ausgegeben werden)
Dim as TimeControlUDT TimeControl = TimeControlUDT(FPS) 'Objekt erstellen und FPS festlegen
Print "Programm ein wenig laufen lassen und dann 'ESC' druecken"
While(NOT Multikey(&h01))
Check += 1 'Einen Schleifendurchlauf zaehlen
TimeControl.ControlTime() '"Überschuessige" Zeit berechnen und Idlen
Wend
Print CHR(10)
CheckTime1 = Timer - CheckTime1 'Zum Schluss Testwerte Ausgeben
Print "Programm lief : " & CheckTime1 & " Sekunden"
Print "Durchlaeufe insgesamt : " & Check
Print "Definierte Durchlaeufe pro Sekunde: " & FPS
Print "Durchlaeufe pro Sekunde : " & Check / CheckTime1
GetKey
Sleep
Zusätzliche Informationen und Funktionen | |||||||
---|---|---|---|---|---|---|---|
|
|