Ganz einfach geht das. Du baust dir die Funktion ein, die 'Frames' pro Sekunde zu berechnen.
Ungefähr so:
Delphi-Quellcode:
var
StartTick: Int64;
ms_per_frame: double;
FPS: double;
Frames: Cardinal;
Bevor das Spiel startet:
StartTick := GetTickCount; //in eine globale Variable die Systemzeit, auf Millisekunden genau, reicht hier völlig
Dann in der Schleife
Delphi-Quellcode:
inc(Frames); //ein 'Bild' wurde gezeichnet
if GetTickCount - StartTick >= 500 then //jede halbe Sekunde ausführen
begin
FPS := Frames / (GetTickCount-StartTick) * 1000; //die durchschnittlichen FPS der letzten halben Sekunde errechnen
ms_per_frame := 1000 / FPS; //durchschnittliche Zeit pro Frame
Frames := 0;
StartTick := GetTickCount
end;
Und dann machst du die Bewegungen der Gegenstände usw einfach von den FPS oder der Zeit pro Frame abhängig. Zum Beispiel in der Schleife:
position := position + Bewegungsreichweite_pro_Sekunde * ms_per_frame;
Wenn du damit ein wenig experimentierst, läuft das wunderbar.
MfG