G
Ich mache es immer so:
void Update(int dt);
void Draw();
int last_ticks = GetTickCount();
while (!done)
{
int ticks = GetTickCount();
int dt = ticks - last_ticks;
last_ticks = ticks;
Update(dt); // man kann auch den Mittelwert ueber die letzten 10 Frames nehmen, usw, usw.
Draw();
cout << "FPS: " << 1000.0f / dt << endl;
FlipScreen(); // o.Ae.
Delay(5); // evtl. um auf ca. 200 FPS zu beschraenken
}
Update(int dt) updated das Spielgeschehen, wobei 'dt' Millisekunden verstreichen sollen. (Fuer Animationen kannst Du dann z.B. die Frameabstaende in Millisekunden angeben und pro Animation schrittweise die verstrichenen Millisekunden mitzaehlen und bei Ueberschreitung der Framezeit das naechste Frame beginnen. Alle Spritegeschwindigkeiten speicherst Du als Pixel/Millisekunde, dann kannst Du sagen: x = x + v * dt, usw.)
Sowieso wichtig ist dass das Update()n und das Draw()en unabhaengig voneinander implementiert ist.
-Gunnar