Buchempfehlung
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
"Der" Petzold, das über 1000 Seiten starke Standardwerk zum Win32-API - besonders nützlich u. a. bei der GUI-Programmierung in FreeBASIC! [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Code-Beispiel

Code-Beispiele » Kleine Helferlein

Kleines Beispiel UDT zum FPS Steuern

Lizenz:Erster Autor:Letzte Bearbeitung:
k. A.MitgliedDonStevone 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
  • Das Code-Beispiel wurde am 20.09.2011 von MitgliedDonStevone angelegt.
  • Die aktuellste Version wurde am 20.09.2011 von MitgliedDonStevone gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen