Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Kleines Fussball Spiel / Problem! (https://www.delphipraxis.net/102122-kleines-fussball-spiel-problem.html)

kevSTAR 23. Okt 2007 21:13


Kleines Fussball Spiel / Problem!
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Leute!

Ich habe gestern angefangen ein kleines spiel zu programmieren doch ich komme nicht weiter!
Der ball rollt und prallt ab etc. aber es gibt probleme beim spieler also der kollision und der punkte vergabe die klappt nur manchmal etc. habe den Code mal angehangen, könnt es euch ja mal anschauen, wäre nett!

mfG

rawsoul 23. Okt 2007 22:48

Re: Kleines Fussball Spiel / Problem!
 
Setze doch mal einfacher an:

Delphi-Quellcode:
[...]
var
  geschwindigkeit:tpoint;
[...]
if (ball.left<feld.left) or (ball.left>feld.width+feld.left-ball.width) then geschwindigkeit.x:=-geschwindigkeit.x;
if (ball.top<feld.top) or (ball.top>feld.height+feld.top-ball.height) then geschwindigkeit.y:=-geschwindigkeit.y;
[...]
Das wäre doch bereits die komplette Kollisionsabfrage mit Änderung der Vektoren.

Edit: Schlechtschreibung :)

kevSTAR 23. Okt 2007 23:23

Re: Kleines Fussball Spiel / Problem!
 
hm wo kommt das hin? verstehe das nicht :(

rawsoul 24. Okt 2007 14:48

Re: Kleines Fussball Spiel / Problem!
 
Wie beschrieben: es ist die Kollisionsabfrage inclusive der Vektoränderung. Ich kommentiere es einfach mal, vielleicht hilft es Dir ja.

Delphi-Quellcode:
[...]
var
  //dies ist dein Geschwindigkeitsvektor mit .x und .y Eigenschaft.
  geschwindigkeit:tpoint;

[...] //deine restlichen Abfragen/Prozedurabläufe

//falls der Ball außerhalb deines Spielfeldes ist (links oder rechts),
//dann wird der Geschwindigkeitsvektor negiert, das heißt, er bewegt
//sich von dort an in die andere x-Richtung, "prallt also ab"
if (ball.left<feld.left) or (ball.left>feld.width+feld.left-ball.width) then geschwindigkeit.x:=-geschwindigkeit.x;

//und gleich nochmal für die y-Koordinaten
if (ball.top<feld.top) or (ball.top>feld.height+feld.top-ball.height) then geschwindigkeit.y:=-geschwindigkeit.y;

[...] //Darstellung etc.


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