Wie kann ich ein Ziel orten und um eine Rakete ab zufeuern?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

sbrog

Betreff: Wie kann ich ein Ziel orten und um eine Rakete ab zufeuern?

BeitragFr, Jun 04, 2004 20:58
Antworten mit Zitat
Benutzer-Profile anzeigen
ich will in einem spaceshooter abfragen , welches ziel dem gegner am nächsten ist, um dann eine Lenkrakete auf das ziel abzufeuern.

Leider fällt mir nicht ein wie ich das machen soll. Crying or Very sad

Freeman

BeitragFr, Jun 04, 2004 21:02
Antworten mit Zitat
Benutzer-Profile anzeigen
na , deine Gegner auf die du schießt haben doch sicher X/Y Variablen oda? wenn ja dann frag doch einfach ab welche X Variable am kleinsten ist, und dann feuerste deine Rakete drauf ab . So würd ich das machen .

FREeMaN
MacBook | MacOSX 10.5 | 80GB HDD | 1GB | BlitzMax 1.28

sbrog

BeitragFr, Jun 04, 2004 21:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Das wird dann ziemlich ungenau. Wenn ein Gegner die selbe x koordinate hat, aber am anderen ende des bildschirms liegt ?
Man sollte das irgendwie mit radius abfragen können. Aber mit sin und cos kenne ich mich leider nicht aus.

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragFr, Jun 04, 2004 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
alle mit der Position mit deiner Position mit pytagoras abfragen
und den kürzesten nehmen!

Zitat:


Dieses Beispiel zeigt die Berechnung eines Abstands zwischen zwei Punkten (nach Pythagoras-Formel):

Abstand=SQR((X1-X2)^2+(Y1-Y2)^2)
[BB2D | BB3D | BB+]

rambo256

BeitragFr, Jun 04, 2004 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
nimm doch den satz des pythagoras....

Code: [AUSKLAPPEN]
Distanz# = Sqr(((Schiff1_X-Schiff2_X)^2)+((Schiff1_Y-Schiff2_Y)^2))


Edit: Ma Rallimen,du bist wie immer schneller Very Happy
Asus F53z

Das Leben ist eine reine Konkatenation...

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragFr, Jun 04, 2004 21:18
Antworten mit Zitat
Benutzer-Profile anzeigen
aber nur ein paar millisekunden Smile

das sqr kannste normal auch weglassen....
distanz = ((Schiff1_X-Schiff2_X)^2)+((Schiff1_Y-Schiff2_Y)^2)

das reicht schon
[BB2D | BB3D | BB+]

Travis

BeitragFr, Jun 04, 2004 22:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst schon genau nach dem nächsten suchen:

Code: [AUSKLAPPEN]

Abstand = 10000000

 For m.mine = Each mine ; nächste Mine suchen
  If Abstand(m\x, m\y, s\x,s\y) < Abstand Then
   Abstand = Abstand(m\x, m\y, s\x,s\y)
   zx = m\x
   zy = m\y
  EndIf
 Next


Ein Beispiel aus meinem Projekt, in dem eine Mine gesucht werden soll, die dem Spieler am nächsten ist. Es werden alle durchgegangen und am Ende werden die Koordinaten der nächsten Mine in den Variablen zx und zy gespeichert.
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.

Ctuchik

BeitragFr, Jun 04, 2004 23:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Und wo haste die Funktion Abstand gelassen, die würd ich dann schon auch posten:
Code: [AUSKLAPPEN]

Function Abstand(x1,y1,x2,y2)
  Return (((x1 - x2)^2) + ((y1 - y2)^2))
End Function

sbrog

BeitragSa, Jun 05, 2004 9:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Travis hat Folgendes geschrieben:
Du musst schon genau nach dem nächsten suchen:

Code: [AUSKLAPPEN]

Abstand = 10000000

 For m.mine = Each mine ; nächste Mine suchen
  If Abstand(m\x, m\y, s\x,s\y) < Abstand Then
   Abstand = Abstand(m\x, m\y, s\x,s\y)
   zx = m\x
   zy = m\y
  EndIf
 Next


Ein Beispiel aus meinem Projekt, in dem eine Mine gesucht werden soll, die dem Spieler am nächsten ist. Es werden alle durchgegangen und am Ende werden die Koordinaten der nächsten Mine in den Variablen zx und zy gespeichert.



danke schon mal euch allen. So wie ich das sehe ist das
Code: [AUSKLAPPEN]

If Abstand(m\x, m\y, s\x,s\y) < Abstand Then
   Abstand = Abstand(m\x, m\y, s\x,s\y)

einSortierverfahren ?

und was hat das "abstand = 1000000" zu bedeuten ?


ps. kennt ihr irgendwelche seiten, wo man das lernen kann ?

Gossi

BeitragSa, Jun 05, 2004 22:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:

und was hat das "abstand = 1000000" zu bedeuten ?


Travis geht alle Minen durch, und jeder Abstabd der kleiner ist als der bisher kleinste, wird als neuer "kleinster abstand" gespeichert. Wäre der Abstand von ANfang an 0, wäre keiner der gefundenen Abstände kleiner als der bisher kleinste (der ja 0 ist!). Daher nimmt man sich irgendeinen sehr großen Startwert, der garantiert von irgendeinem Objekt unterboten werden kann.

ps @ travis: Ich mag diesen "größten-startwert"-Trick nicht. In meinen Augen ist es ein unsauberes Verfahren. Ich persönlich nehme immer den ersten Wert bei solchen Sachen. Der erste wert aus der Liste, egal was es für einer ist. Also in diesem Fall der Abstand zur erst-besten Mine. Wird der Wert unterboten: schön. Wenn nicht, ist es schon der kleinste Wert. Dabei tritt also kein Fehler auf.
Alle Wasser laufen ins Meer, doch wird das Meer nicht voller; an den Ort, dahin sie fließen, fließen sie immer wieder. (...) Was geschehen ist, eben das wird hernach sein. Was man getan hat, eben das tut man hernach wieder, und es geschieht nichts neues unter der Sonne. Geschieht etwas, von dem man sagen könnte: "Sieh, das ist neu"? Es ist längst vorher auch geschehen in den Zeiten, die vor uns gewesen sind.

sbrog

BeitragSo, Jun 06, 2004 10:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab mich jetzt mal über den Satz des Phytagoras informiert.
Welches sind denn die drei eckpunkte ?

Gossi

BeitragSo, Jun 06, 2004 10:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

A---------B
|        /
|      /
|    /
|  /
|/
C


C bist du und B ist dein Gegner. A ergibt sich also automatisch![/code]
Alle Wasser laufen ins Meer, doch wird das Meer nicht voller; an den Ort, dahin sie fließen, fließen sie immer wieder. (...) Was geschehen ist, eben das wird hernach sein. Was man getan hat, eben das tut man hernach wieder, und es geschieht nichts neues unter der Sonne. Geschieht etwas, von dem man sagen könnte: "Sieh, das ist neu"? Es ist längst vorher auch geschehen in den Zeiten, die vor uns gewesen sind.

BladeRunner

Moderator

BeitragSo, Jun 06, 2004 15:06
Antworten mit Zitat
Benutzer-Profile anzeigen
wobei hier:
Code: [AUSKLAPPEN]
C---------A
|        /
|      /
|    / -->c
|  /
|/
B


immer die Seite gegenüber eines Punkte denselben Buchstaben hat, im Beispiel für c eingezeichnet.
(da du ja für den Pyth. die Seiten und nicht die Punkte brauchst).
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group