Willkommen in der
DP,
mein erstes Spiel sah auch so ähnlich aus wie deines momentan.
Ich hab hier vorerst mal ein paar Tipps:
- Nicht das ganze Spiel in einer Prozedur programmieren, sondern bestimmte Teile 'auslagern'. (Beispiel: procedure OnBallMovedRightOut)
- Eine einheitliche Code-Formatierung hilft ungemein
- (Für spätere/größere Projekte Objektorientierung anschauen)
Zum eigentlichem Fehler:
Den wirst du sicherlich schnell finden, wenn du den Code in Prozeduren aufgesplittet hast.
Setz dazu mal ein paar Breakpoints und du wirst sehen, der Ball verändert zu häufig seine Richtung.
btw: Die Ballgeschwindigkeit verändert sich proportional mit allen anderen Zeitwerten
Edit:
Da das hhargenau mein aller erstes Problem in Delphi war, hier nochmal ein kleiner Hinweis:
Überleg mal was passiert, wenn der Schläger des Spielers seitwärts in den Ball reinfährt.
Der Ball ändert die Richtung und fliegt ein paar Pixel weit zurück.
Da der Schläger aber ziemlich breit ist, trifft der Ball den Schläger erneut und ändert wieder die Richtung.
So geht das dann die ganze zeit weiter...
(zugegeben: ich hab das Problem damals nie gelöst
)