![]() |
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: |
Re: Ganz einfaches Fußballgame
Entfernung messen!
(Stichwort: Vektoren) |
Re: Ganz einfaches Fußballgame
Hab im Forum schon gesucht, aber nichts gefunde...weißt du wie ich die Entfernung messen kann?
|
Re: Ganz einfaches Fußballgame
Also, Mathe wasweißichwievielte Klasse:
Distanz zwischen Punkt P1(x1, y1) und P2(x2, y2):
Delphi-Quellcode:
Also, das müsste funzen...wo die Herrschaften stehen weißt du ja,oder?
dist := sqrt(sqr(x2-x1)+sqr(y2-y1));
|
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... |
Re: Ganz einfaches Fußballgame
und abnehmen: du machst
Delphi-Quellcode:
also so in etwa..is teilweise nur symbolisch
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; 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 :-) |
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:
Wenn du nun die If-Abfrage bastelst, in der die Entfernung überprüft wird, dann quadriere besser beide Seiten der Gleichung, d.h. statt
dist:=sqrt(sqr(x1-x2)+sqr(y1-y2));
Delphi-Quellcode:
schreibst du besser
if sqrt(sqr(x1-x2)+sqr(y1-y2))<distmax then blablabla
Delphi-Quellcode:
Inhaltlich passiert genau dasselbe, es ist aber ein kleines bißchen schneller.
if (sqr(x1-x2)+sqr(y1-y2)<distmax*distmax then blablabla
Grüße Seniman |
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? |
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:
Ich glaube du meintest das, oder?
x1 := Image1.Left;
y1 := Image1.Top; x2 := Image2.Left; y2 := Image2.Top; dist := sqrt(sqr((x2+ox2)-(x1+ox1))+sqr((y2+oy2)-(y1+oy1))); |
Re: Ganz einfaches Fußballgame
wie bekomm ich denn den hotspot-offset raus???
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz