Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Bewegungen im PongSpiel (https://www.delphipraxis.net/100336-bewegungen-im-pongspiel.html)

kevSTAR 26. Sep 2007 15:10


Bewegungen im PongSpiel
 
Hallo Leute!

Ich programmiere gerade ein Pongspiel und probiere gerade die ersten bewegungsversuche.
Ich bewege den kreis zurzeit so:

x := x + trunc(cos(-330 * pi / 180) * speed);
y := y + trunc(sin(-330 * pi / 180) * speed);

damit bewegt er sich im winkel von 330 grad.
Aber je nachdem was ich bei speed eingebe ändert sich der laufweg ein bisschen, wie ist es möglich den kreis zu bewegen ohne das es durch die geschwindigkeit des balles zu ungenauigkeiten kommen kann?

shmia 26. Sep 2007 15:13

Re: Bewegungen im PongSpiel
 
Zitat:

Zitat von kevSTAR
wie ist es möglich den kreis zu bewegen ohne das es durch die geschwindigkeit des balles zu ungenauigkeiten kommen kann?

x und y sollten den Datentyp double erhalten.
Gerundet wird erst, wenn man den Pong zeichnet. (Round() verwenden)

kevSTAR 26. Sep 2007 15:49

Re: Bewegungen im PongSpiel
 
danke, jeztt gehts!

damit ich nicht noch ein thread aufmachen muss, die nächste frage :)

Wenn ich nun im Timer überprüfe ob er etwas bestimmtes berührt wie kann ich den ausfallswinkel raus finden?

Torpedo 26. Sep 2007 16:17

Re: Bewegungen im PongSpiel
 
Zitat:

Zitat von kevSTAR
danke, jeztt gehts!

damit ich nicht noch ein thread aufmachen muss, die nächste frage :)

Wenn ich nun im Timer überprüfe ob er etwas bestimmtes berührt wie kann ich den ausfallswinkel raus finden?

Eigentlich sind hier so die Regeln, dass pro Frage ein Thread geöffnet wird. ;)
Aber weil die Frage nur kurz ist antworte ich einfach mal. Einfallswinkel = Ausfallswinkel.
Ich würde die Bewegung nicht mit einem Winkel machen, sondern mit einem Vektor. Damit geht das ganze viel einfacher.
Du hast dann 2 Variablen, in denen die Geschwindigkeit in x-Richtung und die Geschwindigkeit in y-Richtung gespeichert sind.
Z.B.
xs = 1
und
ys = 0.5

Jetzt bei jeder Bewegung xs zu x addieren und ys zu y.
Mit diesen Geschwindigkeiten müsste der Ball in einem 45°-Winkel nach unten rechts fliegen.

Wenn der Ball jetzt z.B. einen Pong-Schläger trifft, wird xs einfach negiert, also xs = xs * -1.
Dadurch prallt er einfach davon ab und fliegt im richtigen Winkel zurück. Wenn er oben oder unten anstößt, einfach ys negieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz