Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Gewschwindigkeit erhöhen


rick1 - Sa 02.05.09 17:29
Titel: Gewschwindigkeit erhöhen
Hallo ich hab mal wieder nen Problem bei meinem Schulprojekt. Und zwar möchte ich die geschwindigkeit von mehreren shapes bzw images kontinuirlich erhöhen, somit soll der eindruck erweckt werden, dass das Auto am unteren Bildschirmrand mit der zeit immer schneller wird. Wäre froh über ratschläge wie ich das umsetzen kann.


Xentar - Sa 02.05.09 17:35

Und wo genau klemmts?
Komponente TTimer, und mit jedem Durchlauf die Position des Image um den Wert <Geschwindigkeit> verändern, und bei Bedarf die Geschwindigkeit erhöhen.


Bernhard Geyer - Sa 02.05.09 18:44

Bedenke das die VCL nicht dafür ausgelegt ist ein gutes "Spiele-Fealing" zu erreichen. Hierfür wirst du einiges umbauen müssen und u.U. auf DirectX umzusteigen.


Gausi - Sa 02.05.09 18:56

Hallo,

schau dir mal dieses Projekt [http://www.delphi-forum.de/topic_Nebs++Noch+ein+Ballspiel_85029.html] etwas genauer an. Da fliegen auch mehrere Shapes mit unterschiedlicher Geschwindigkeit durch die Gegend. :)


Dude566 - Sa 02.05.09 19:30

Das Spiel ist echt cool, und nachher wirds auch verdammt schwer.


dummzeuch - So 03.05.09 10:08

user profile iconrick1 hat folgendes geschrieben Zum zitierten Posting springen:
geschwindigkeit von mehreren shapes bzw images kontinuirlich erhöhen, somit soll der eindruck erweckt werden, dass das Auto am unteren Bildschirmrand mit der zeit immer schneller wird.


Geschwindigkeit ist Strecke durch Zeit, d.h. wenn man die Geschwindigkeit erhoehen will, muss man entweder die Strecke pro Zeiteinheit erhoehen oder die Zeit pro Streckeneinheit verringern.

Annahme: Du nimmst ein TTimer und zeichnest die Shapes im OnTimer Event. Dann kannst Du entweder mit einem konstanten Intervall arbeiten und die Strecke zwischen zwei Positionen immer mehr vergroessern, oder Du arbeitest mit einer konstanten Strecke und verringerst das Intervall. Beides laesst sich natuerlich auch kombinieren. Beides hat seine Grenzen: Ein Intervall kann nicht kleiner als ca. 50 Millisekunden (oder waren es 20?) werden, weil Windows da nicht mehr mitspielt. Wenn man die Strecke zu gross macht, dann springt das Shape gegen Ende sichtbar.

Da Du nicht mehr ueber den Zweck schreibst, gehe ich mal davon aus, dass komplexere Loesungen wie DirectX oder OpenGL zur Grafikausgabe eher Overkill sind.

twm