fb:porticula NoPaste
UDT zum FPS Steuern
Uploader: | DonStevone |
Datum/Zeit: | 19.09.2011 22:34:27 |
'Wir definieren wie oft die Hauptschleife pro Sekunde durchlaufen werden soll
#Define DurchlaeufeS 60
'########################### Unser UDT #####################################
Type TimeControlUDT
Dim StartTime as Double
Dim EndTime as Double
Declare Sub ControlTime()
Private:
Dim Temp1 as Double
End Type
Sub TimeControlUDT.ControlTime()
Temp1 = INT(1000 - (EndTime - StartTime) * DurchlaeufeS)
Temp1 = INT(Temp1 / DurchlaeufeS)
If Temp1 > 0 then Sleep Temp1, 1
End Sub
'###############################################################################
'###############################################################################
' Wir Testen den UDT
' Einfach Programm starten, eine Weile laufen lassen 'ESC' druecken - Fertig
'###############################################################################
Dim as TimeControlUDT TimeControl 'Objekt erstellen
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
?"Programm ein wenig laufen lassen und dann 'ESC' druecken"
While(NOT Multikey(&h01))
TimeControl.StartTime = Timer 'Unserem UDT am Anfang der Schleife die Zeit geben
Check += 1 'Einen Schleifendurchlauf zaehlen
TimeControl.EndTime = Timer 'Unserem UDT am Ende der Schleife die Zeit geben
TimeControl.ControlTime() '"Überschuessige" Zeit berechnen und Idlen
Wend
?CHR(10)
CheckTime1 = Timer - CheckTime1 'Zum Schluss Testwerte Ausgeben
?"Programm lief : " + STR(CheckTime1) + " Sekunden"
?"Durchlaeufe insgesamt : " + STR(Check)
?"Definierte Durchlaeufe pro Sekunde: " + STR(DurchlaeufeS)
?"Durchlaeufe pro Sekunde : " + STR(Check / CheckTime1)
Sleep
Sleep
End 0