Waffen in Array speichern

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

sbrog

Betreff: Waffen in Array speichern

BeitragMi, Mai 26, 2004 14:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich entwickle gerade einen Spaceshooter mit 5 verschiedenen Waffen
dass immer eine Waffe aktiv ist, habe ich so gecodet
Code: [AUSKLAPPEN]

currentweapon = 1  ; Aktuell ausgewählte waffe : 1 ist die kanone

Function waffetesten()

If KeyHit(29)             ; strg
   currentweapon =currentweapon+1      ;waffenmodus um eins höhershalten 
    If currentweapon>5
      currentweapon = 1
   EndIf
EndIf

Select currentweapon
Case 1
Waffe_ Kanone     ;Kanonenmodus aktiv
Case 2
Waffe_Rakete       ;Raketenmodusaktiv usw.
Case 3
Waffe_Laser     
Case 4
Waffe_Waffe4   ;PLatzhalter für 4. Waffe (mir fällt noch keine ein)
Case 5
Waffe_Waffe5   ;Platzhalter für 5. Waffe
End Select

End Function



Wenn ich das ganze in einem array weapon(5) machen will, wie kann ich dann bestimmen, welche waffe aktiv ist ?

BladeRunner

Moderator

BeitragMi, Mai 26, 2004 14:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich verstehe dein Prob nicht ganz. Du hast doch mit currentweapon schon die aktive Waffe festgelegt.
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

sbrog

BeitragMi, Mai 26, 2004 14:25
Antworten mit Zitat
Benutzer-Profile anzeigen
schon, aber mit einem array wäre es übersichtlicher Very Happy

BladeRunner

Moderator

BeitragMi, Mai 26, 2004 14:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du es unbedingt mit einem Array haben willst, kannst Du (warnung sehr ineffizient/unelegant) zB so machen:

Dim Waffe(x,y)
Wobei x der nummer der Waffe entspricht (0-4)
und y den einzelnen Eigenschaften, zB:
0 = Schaden
1 = Reichweite
2 = Feuergeschwindigkeit
3 = Munition
etc.

Dann mit Datas einzulesen:
Bsp:
Data 10,40,1,-1
-> 10 punkte schaden bei Gegner, reicht 40pixel weit, feuert 1* pro sec. und hat unbegrenzt (=-1) Munition.


EDIT: Würde für sowas jedoch eher ein Type empfehlen, da flexibler.
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
  • Zuletzt bearbeitet von BladeRunner am Mi, Mai 26, 2004 14:36, insgesamt einmal bearbeitet

DC

Sieger des B2D Retro Wettbewerb / Aug 04

BeitragMi, Mai 26, 2004 14:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Man müsste wissen was Waffe_Kanone, Waffe_Rakete etc. soll. Wären die Waffen gleich und würden nur z.B. unterschiedlich viel Schaden machen, so könntest du in einem Array den Schaden Speichern und dir das Select / Case sparen in dem du es etwa so machst:
Code: [AUSKLAPPEN]

health=health-weapondamage(currentweapon)


Aber da ich mal annehme das sich die Waffen komplett unterscheiden solltest du das mit dem Array einfach lassen...

Edit:
Oh zu lahm.. Bladerunner hats schon gesagt mehr oder weniger Wink
Core i5 4670K | 4 x 3,40 GHZ | 16 GB Ram | GeForce GTX 960 | HTC Vive | Win 10 Pro
www.UnrealSoftware.de | www.StrandedOnline.de | www.CS2D.com |
www.CarnageContest.com | www.Stranded3.com

sbrog

BeitragMi, Mai 26, 2004 14:39
Antworten mit Zitat
Benutzer-Profile anzeigen
die einzelnen eigenschaften werde ich in types speichern, ich will eigentlich nur ein array, damit ich festlegen kann, welche waffe aktiv ist.

ich will eigentlich eine funktion schreiben, die jede waffe prüft, ob sie aktiv ist. Wenn sie es ist, wird zur schussfunktion der aktiven waffe gesprungen.

BladeRunner

Moderator

BeitragMi, Mai 26, 2004 14:43
Antworten mit Zitat
Benutzer-Profile anzeigen
bleib bei der Variablen. Wofür nen Array wenn nur eine Waffe aktiv ist?
Wenn du mehrere aktive Waffen willst: dim Waffe(Anzahl der Waffen-1)
for i = 0 to (Anzahl der waffen-1)
if waffe(i)=1 then Feuer_Waffe(i)
next
aktive waffen 1 andere 0. fertig.
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

sbrog

BeitragMi, Mai 26, 2004 14:46
Antworten mit Zitat
Benutzer-Profile anzeigen
so was ähnliches habe ich mir gedacht, dass die aktive waffe 1 ist und der rest 0.
Aber ich werde für jede waffe eine eigene funktion schreiben, da sie sich auch in der bewegungsweise unterscheiden.
Danke euch beiden Very Happy

BladeRunner

Moderator

BeitragMi, Mai 26, 2004 14:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Nochmal: wenn du nur EINE aktive Waffe zur gleichen Zeit hast, benötigst Du kein Array zur Auswahl.
CurrentWeapon=nummer der aktiven Waffe reich dann vollkommen. mach es dir doch nit unnötig kompliziert.
Weshalb ein Array? Welchen Zweck siehst du darin?
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

sbrog

BeitragMi, Mai 26, 2004 14:54
Antworten mit Zitat
Benutzer-Profile anzeigen
ich kann den gesamten case-teil weglassen,das bringt übersicht

BladeRunner

Moderator

BeitragMi, Mai 26, 2004 14:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Du konstruierst dir über 5 Zeilen ein Array, um dann weiter jeder Waffe ne einzelne Funktion zu lassen welche (mmmm... mit case select?) einzeln aufgerufen werden muss um dir 5 Zeilen Case-select zu ersparen ???

Wenn du übersicht willst bei den fünf Zeilen, lager sie als Mini-Func aus oder Flankier sie mit Kommentaren.
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

sbrog

BeitragMi, Mai 26, 2004 15:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Also mit kommentaren flankier ich meinen Code sowieso immer, Very Happy

Aber ich denke, letztendlich kommt es auf das gleiche heraus, ob ich es in arrays schreib, oder nicht Wink

sbrog

BeitragMi, Mai 26, 2004 15:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab mal kurz vorrausgedacht, und festgestellt, dass wenn ich den waffenmodus wechsle und immer noch schüsse unterwegs sind, dass diese dann einfach verschwinden werden. Kann ich das irgenwie verhindern ?

BladeRunner

Moderator

BeitragMi, Mai 26, 2004 15:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst die Routine zum Updaten der Schüsse unabhängig von der zum Erzeugen eines Schusses halten
zB:
Create_Laser()
Create_Cannon()

aber nur eine:

Update_Shots() welche Allgemeingültig ist. Noch besser ist es allerdings auch die einzelnen Waffentypen unter einen Hut zu bringen.
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

sbrog

BeitragMi, Mai 26, 2004 15:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:

Noch besser ist es allerdings auch die einzelnen Waffentypen unter einen Hut zu bringen.


ich habe aber keine ahnung, wie ich das machen soll, da die einzelnen waffen so verschieden sind[/quote]
 

HOT-BIT

Gast

BeitragMi, Mai 26, 2004 16:19
Antworten mit Zitat
hmm....

Toni

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group