Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Pong Abprall des Balles (https://www.delphipraxis.net/128074-pong-abprall-des-balles.html)

thomasku 23. Jan 2009 15:15


Pong Abprall des Balles
 
Hallo

Habe Gestern begonnen ein Pong zu schreiben siehe dazu hier:
http://www.delphipraxis.net/internal...highlight=pong

Geschafft habe ich:
-Spielerbewegung (derzeit synchron (mit keydown))
-Abprall an den Rändern


Nun möchte ich gern dass der Ball auch vom Spieler (Shape) reflektiert wird.

Spieler=Shape7
Ball=Shape5

Zur Überlegung:
(Ball nähert sich der rechten Seite)

i)x-Koordinate
Ball<=Spieler
Also:
Shape5.left<Shape7.Left
(Bzw genauer :)
(Shape5.left+Shape5.Heigth)<Shape7.Left

ii) y-Koordinate
oben<=Ball<=unten
Also:
a.)Shape7.Top<=Shape5.Top
b.)Shape5.Top<=(Shape7.Top+SHape7.Heigth)
(bzw. genauer:)
a)Shape7.Top<=(Shape5.Top+Shape5.Width)
b.)(Shape5.Top+Shape5.Heigth+Shape5.Width)<=(Shape 7.Top+Shape7.Heigth)

=>(einfache Version)
IF ((Shape5.left<Shape7.Left) AND (Shape5.Top=>Shape7.Top) AND (Shape5.Top<=(Shape7.Top+SHape7.Heigth))) THEN
dx:=-dx; //Abprall

Nur Leider fliegt mein Ball dann durch den Schläger -> Wandberührung GameOver
(Die Spielabbruchsbediengung werte ich in einer separaten IF-Anw aus und die Schläger bewege ich über KeyDown)
Habe auch schon probiert alle Relationszeichen zu drehen, dann müsste er ja reflektiert werden, wenn der Schläger nicht da ist, aber dies klappt auch nicht.

Lg

Draos 23. Jan 2009 15:41

Re: Pong Abprall des Balles
 
Also wenn der Ball nach rechts fliegt ist der erste Teil
Delphi-Quellcode:
(Shape5.left<Shape7.Left)
immer true

Schau da doch ob der Ball mit dem rechten Punkt
Delphi-Quellcode:
(Shape5.left+Shape5.Width)>Shape7.Left
ist sprich ob er die Linie des Schlägers überschritten hat.

So sonst seh ich i-wie kein Fehler in der if-Anweisung oder bin ich blind? :gruebel:

thomasku 23. Jan 2009 15:55

Re: Pong Abprall des Balles
 
Hallo Draos, Danke für deine schnelle Antwort.

Kann das leider immo nicht ausprobieren, werde es aber später nachholen, hacke dann gegebenenfalls morgen ab.

Klingt auch ziemlich ein leuchtend stand ich mal wieder auf dem Schlauch :mrgreen:

Lg

//Edit: Mmh mir fällt gerade auf das dann ja der Ball reflektiert werden müsste wenn er sich in dem Intervall (oben- unten) des Spielers (Shapes) befindet und das ist bisher auch nicht der Fall.
Naja werde es einfach mal testen... :)

Draos 23. Jan 2009 16:08

Re: Pong Abprall des Balles
 
Ich weiß deswegen überleg ich ja noch die ganze Zeit. Eigentlich dürfte er sich immer nur hin- und herbewegen.

Vllt an anderer Stelle des Progs nen Fehler?

thomasku 23. Jan 2009 16:24

Re: Pong Abprall des Balles
 
Hallo noch mal, Danke das du dich damit beschäftigst.

Vorher hat alles "eigentlich" funktioniert.
Baue das Programm peu à peu auf:
-Anfang war Ball bleibt im Viereck
-Schlägerbewegung
-Ball prallt oben/ unten ab sowie link/rechts Spiel vorbei

-> Hier sollte nun der Abprall folgen :D

Werde es Morgen mal rein stellen, von diesem PC aus ist mir dies leider nicht möglich.

schönes Wochenende, obwohl ich natürlich hoffe das du Morgen mal rein schaust :mrgreen:
Lg

thomasku 24. Jan 2009 17:20

Re: Pong Abprall des Balles
 
Hallo,

habe es jetzt (rechts):
(((Shape5.Left+Shape5.Width)>Shape7.Left) AND ((Shape5.Top+Shape5.Hight)>Shape7.Top) AND (Shape5.Top<(Shape7.Top+Shape.Height)))

Und so klappt es.
Sehe zwar immer noch nicht, warum es nicht wie oben ging, aber HAuptsache es läuft erstmal. :o
(Hatte das Shape auch mal in der Mitte, dass nicht zufällig vorher die Spielabbruchbediengung erfüllt wird.)

Danke
Lg


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:13 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