![]() |
Konstante Simulationsgeschwindigkeit
Nabend zusammen,
Ich erstelle gerade ein kleines Projekt für die Schule. Habe eine Procedure in der alle Bewegungen simuliert werden, was auch wunderbar klappt. Nur sind die einzelnen Bewegungen unterschiedlich schnell, sozusagen bremsen die Bewegten Kugelen manchmal kurz ab.
Delphi-Quellcode:
Habe meine Prozedur OnIdle zugeordnert. Vermute stark, dass es deshalb diese Geschwindigkeitsschwankungen gibt.
Application.OnIdle := Spielfeld.Simuliere;
Wie kann ich dies beheben? Edit: Habe ein Image, auf das ich mit Hilfe von Canvas Bitmaps zeichne die ich Bewege. mfg |
AW: Konstante Simulationsgeschwindigkeit
Du misst die Zeit die zwischen zwei Schritten vergangen ist? (Siehe
![]() MfG Fabian |
AW: Konstante Simulationsgeschwindigkeit
Man kann eine Simulation mit festen Zeitschritten durchrechnen, so das jede Neuberechnung
der Werte eine Delta-Zeit zu den vorhergehenden Werten hat. Wenn du statt dem OnIdle-Event einen TTimer verwendest, dann wird diese Berechnung relativ gut mit der Realzeit übereinstimmen. Die Taktrate des OnIdle-Event ist ziemlich unvorhersagbar und ausserdem Rechnerabhängig. Würde man die Simulationsformeln so umbauen, dass man als Eingabeparameter die Zeit t (in Sekunden) übergibt, dann könnte man sehr exakte Ergebnisse erhalten. Leider ist das nicht immer so leicht möglich, weil die Ergebnisse des vorherigen Berechnungsschritts in die Simulation eingehen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz