Zielzuweisung für Raketen (TYPE)
Übersicht

![]() |
IguanBetreff: Zielzuweisung für Raketen (TYPE) |
![]() Antworten mit Zitat ![]() |
---|---|---|
halli hallo!
Viele denken jetzt wohl... Moment mal! Dieses Thema hatten wir doch schon mindestens 1000 mal! Aber ich habe bei der Forensuche nur Beiträge gefunden, die Die Steuerung von zielsuchenden Raketen beschreiben. Ich habe aber ein Problem mit der Zielzuweisung von zielsuchenden Raketen. in meinem Space Shooter habe ich ein Type mit Gegnern.. ..etwa so: Code: [AUSKLAPPEN] For Gegner = Each GegnerWerte Gegner\X = Gegner\X - 1 ;.... Next .. und ein Type mit Raketen.. etwa so: Code: [AUSKLAPPEN] For Schuss = Each SchussWerte Schuss\Istwinkel# = Schuss\Istwinkel# + .... .... if Schuss\Istwinkel# < Schuss\Sollwinkel# then.... ... Next Nun möchte ich, dass sich jede Rakete ein Ziel aussucht, und dann ständig dieses verfolgt. Die Steuerung der Rakete läuft ohne Probleme.. aber die Zielzuweisung eben nicht ![]() wie macht man das? Bisher hatte ich es so gemacht, dass die Koordinaten des N-ten Gegner im GegnerType, An der N-ten Position in Arrays mit den Namen Dim RaketenZielX(10) Dim RaketenZielY(10) gespeichert wurden. Aber dies gab Probleme, wenn ich einen neuen Gegner erstellte oder einen Gegner löschte... weil sich dann alles um eine Position verschob, und die Raketen plötzlich das Ziel wechselten. Wie könnte man dies sonst lösen? Recht herzlichen dank! ![]() |
||
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Warum machst du keinen Raketen Type?
Code: [AUSKLAPPEN] Type raketen
Field x#,y#,... Field ziel.GegnerWerte End Type Dann kannst du wie hier als Zielvariable den entsprechenden Type des Gegner angeben. Zugriff dann so: Code: [AUSKLAPPEN] g.GegnerWerte = First GegnerWerte
r.raketen = New raketen r\ziel = g ;Beispiel für Abruf: r\ziel\x = 483 ;halt abhängig was für Fieldes der Gegnertype hat. MfG D2006 EDIT: hoppla, du hast ja einen Raketentype. Sorry, überlesen. Mein Ansatz sollte trotzdem helfen. |
||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
- Zuletzt bearbeitet von D2006 am Mo, Apr 10, 2006 20:06, insgesamt einmal bearbeitet
![]() |
SoNenTyp |
![]() Antworten mit Zitat ![]() |
---|---|---|
Immer wenn sich etwas an einem Gegner aendert überprüfen ob er ein Ziel ist. Wenn ja, einfach die Rakete entsprechend Reaigieren lassen. | ||
Gruss Der Typ.
User posted image |
HW |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Es ließe sich schon mal einfach lösen, der Rakete ein neues Ziel zuzuweisen, falls das aktuelle Ziel zerstört wurde. In der Hauptschleife ungefähr:
BlitzBasic: [AUSKLAPPEN] If r/ziel.gegner=Null Then Ich habe übrigens gegner statt GegnerWerte benutzt. Müsstest du dann anpassen. |
||
![]() |
Iguan |
![]() Antworten mit Zitat ![]() |
---|---|---|
@ D2006:
Code: [AUSKLAPPEN] r\ziel\x geht das? ich meine mit zwei Backslashes? Das kapier ich irgendwie nicht! ![]() bisher hatte ich jeweils nur ein Backslash benötigt. Variable\Untervariable Kenne in diesem Falle wohl noch nicht alle Tricks mit den Types! Könntest du mir das erklären? Wie kann ich mir das vorstellen? Bisher stellte ich mir bei Types wie Schubladen einer Komode vor: Komode = Variablen Schubladen = Untervariablen (Field) Vielen dank! PS: Meine Types: Code: [AUSKLAPPEN] Type SchussWerte Field X Field Y Field Staerke Field Istwinkel# Field SollWinkel# Field Geschw# End Type Global Schuss.SchussWerte Type GegnerWerte Field X Field Y Field Energie Field ID End Type Global Gegner.Gegnerwerte |
||
HW |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Da das Ziel ja ein Type (Und zwar GegnerWerte) ist, geht das mit den zwei Backslashes. Du musst bei dem Schusstype noch das Field ziel.gegnerwerte einfügen. | ||
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Stell dir ne Minikomode in der Schublade der Komode vor.
Allerdins ist r\ziel nur eine "Referenz" auf einen anderen Type, also auf eine Gegnertype. Ist dann quasi ne Abkürzung um darauf zuzugreifen. Beispiel: Code: [AUSKLAPPEN] Type a
Field x End Type Type b Field t.a End Type Im zweiten Type habe ich als ein Field den ersten Typ. Nun kann ich einfach einen Type a erstellen (test.a = new a). Das gleiche für Type b (test2.b = new b). Nun kann ich b\t den zuerst erschaffenen Type zuweisen: (b\t = test). Jetzt habe ich 2 Möglichkeiten die test Instanz aufzurufen: einmal normal über a\x und einmal über b\t\x. Wenn du das nicht so verstehst, kannst du es auch gerne nochmal in TheShadows Type Tutorial nachlesen, er behandelt Types in Types dort auch. MfG D2006 |
||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
![]() |
Iguan |
![]() Antworten mit Zitat ![]() |
---|---|---|
Coool! ![]() ![]() Vielen Dank an euch zwei!!!!! |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group