Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Ganz einfaches Fußballgame (https://www.delphipraxis.net/21694-ganz-einfaches-fussballgame.html)

Neuni 6. Mai 2004 16:08


Ganz einfaches Fußballgame
 
Hallo,
ich wüde gerne ein gaaaanz einfach Fußball game proggen...

Der Spieler soll immer in der Mitte stehen, und um ihn herum soll das Spielfeld sich bewegen...das klappt auch alles.

meine Frage: Wie bekomm ich es hin, dass man dem anderen, wenn man neben ihm steht auf Tastendruck den Ball bnehmen kann? Also wie bei Fifa, dass man auf den anderen zuläuft, und ihm dann den Ball abnehmen kann wenn man in seiner näche steht. Man könnte zwar abfragen ob die beiden Spieler die gleiche Position haben, aber man sollte den Ball auch bekommen, wenn man neben ihm steht, also egal aus welcher richtung.

jemand ne idee?

Danke schonmal :thuimb:

dizzy 6. Mai 2004 17:05

Re: Ganz einfaches Fußballgame
 
Entfernung messen!
(Stichwort: Vektoren)

Neuni 6. Mai 2004 17:55

Re: Ganz einfaches Fußballgame
 
Hab im Forum schon gesucht, aber nichts gefunde...weißt du wie ich die Entfernung messen kann?

alcaeus 6. Mai 2004 17:59

Re: Ganz einfaches Fußballgame
 
Also, Mathe wasweißichwievielte Klasse:
Distanz zwischen Punkt P1(x1, y1) und P2(x2, y2):
Delphi-Quellcode:
dist := sqrt(sqr(x2-x1)+sqr(y2-y1));
Also, das müsste funzen...wo die Herrschaften stehen weißt du ja,oder?

dizzy 6. Mai 2004 18:02

Re: Ganz einfaches Fußballgame
 
Du hast zwei Koordinaten, mit je einmal X und einmal Y.

Angemommen ein Spieler steht bei
X=10, Y=20
ein weiterer bei
X=15, Y=50

(hier ists sofort ersichtlich, soll so sein, damit man sieht, dass es wirklich so geht ;) )

Dies sind 2 Vektoren A=(10, 20); B=(15, 20)
Der Koordinatenunterschied ergibt sich aus A-B = (-5, 0)
Dies ist der Vektor zwischen den beiden Spielern. Und dessen Länge ist dann die Entfernung - die sich wie folgt berechnet:
Länge = sqrt(x² + y²)
ind diesem Fall
Länge = sqrt(-5² + 0²) = sqrt(-5²) = sqrt(25) = 5
*tädäää* - der Abstand zwischen den Spielern - ganz egal wie sie zueinander stehen.


gruss,
dizzy

\\edit: mal wieder zu langsam...

glkgereon 6. Mai 2004 19:01

Re: Ganz einfaches Fußballgame
 
und abnehmen: du machst
Delphi-Quellcode:
if keydown(watweissich)
then
Begin
gegner.image:=ohneball;
for i:=1 to x1-x2 do
   begin
   ball.x:=ball.x- (x1-x2);
   ball.y:=ball.y- (y1-y2) div (x1-x2);//dann bewegts sich gleichmässig
   end;
spieler.image:=mitball;
end;
also so in etwa..is teilweise nur symbolisch
gibt noch ungelöste frage, aber so isses doc vom grundsatz schon ma ganz gut
auch so sachen obs nicht ball.x:=ballx.x + sein muss, ausprobieren :-)

Seniman 6. Mai 2004 19:02

Re: Ganz einfaches Fußballgame
 
Hallo,

noch ein kleiner Tipp für die Umsetzung.

Die Entfernung berechnet sich, wie ja schon beschreiben, mit
Delphi-Quellcode:
dist:=sqrt(sqr(x1-x2)+sqr(y1-y2));
Wenn du nun die If-Abfrage bastelst, in der die Entfernung überprüft wird, dann quadriere besser beide Seiten der Gleichung, d.h. statt

Delphi-Quellcode:
if sqrt(sqr(x1-x2)+sqr(y1-y2))<distmax then blablabla
schreibst du besser

Delphi-Quellcode:
if (sqr(x1-x2)+sqr(y1-y2)<distmax*distmax then blablabla
Inhaltlich passiert genau dasselbe, es ist aber ein kleines bißchen schneller.

Grüße
Seniman

Neuni 6. Mai 2004 19:33

Re: Ganz einfaches Fußballgame
 
ähhh...ja
Ich bin nicht gerade DAS Ass in Mathe, also falls jemand dass alles versteht, könnte er mir vielleicht nen Beispiel geben, wie ich die entfernung zwisch image1 und image2 messe?

alcaeus 6. Mai 2004 19:40

Re: Ganz einfaches Fußballgame
 
Naja, du musst die Position eines Images kennen: x1, y1.
Außerdem musst du einen Hotspot-Offset definieren: ox1, oy1. Der Hotspot ist der Punkt, von dem die Entfernung aus gemessen wird. Die Position ist immer relativ zu (x1, y1) definiert. Für das zweite Image gilt natürlich das gleicht. Also:
Delphi-Quellcode:
x1 := Image1.Left;
y1 := Image1.Top;
x2 := Image2.Left;
y2 := Image2.Top;
dist := sqrt(sqr((x2+ox2)-(x1+ox1))+sqr((y2+oy2)-(y1+oy1)));
Ich glaube du meintest das, oder?

Neuni 6. Mai 2004 20:26

Re: Ganz einfaches Fußballgame
 
wie bekomm ich denn den hotspot-offset raus???


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:07 Uhr.
Seite 1 von 2  1 2      

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