Explosion in einem Weltraumshooter

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Talinus

Gast

Betreff: Explosion in einem Weltraumshooter

BeitragSo, Okt 02, 2005 13:58
Antworten mit Zitat
Hi Leute,
ich programmiere gerade an meinem ersten richtigen Spiel und bin eigentlich auch ganz gut vorran gekommen doch nun muss ich passen. Wie der Titel schon sagt habe ich Probleme mit den Explosionen. Ich poste mal meinen gesamten Quelltext damit man das alles nachvoll ziehen kann. Der Explosions-Part (so weit wie ich bin, aber ich glaub das ist alles falsch) ist weiter unten ist aber auch beschriftet.

BlitzBasic: [AUSKLAPPEN]

Repeat


;--------------------------------------------------------
;Anzeige

Viewport 0,0,1024,100

TileBlock braun,0,0

Text 180,18, punkte

Text 180,55, level

Text 900,55, leben


;--------------------------------------------------------

Viewport 0,100,1024,678


;--------------------------------------------------------
; Lebst du noch?

If lebenv = 1 Then
leben = leben - 1
lebenv = 0
EndIf

;--------------------------------------------------------


;--------------------------------------------------------
;Verschiedenes

h = h+1
If H=200 Then H=0
TileBlock hintergrund,0,H


If schiffv = 1 Then
DrawImage schiff,X, Y
EndIf

If schiffv = 0 Then

Text 370,350, \"Du hast ein Leben verloren\"

Text 352,400, \"Drücke Enter um fortzufahren\"


x=380
y=600
WaitKey
If KeyHit(28) Then
schiffv = 1
EndIf
EndIf
;--------------------------------------------------------

;--------------------------------------------------------
;Tastaturabfrage

If KeyDown(200) = 1 Then Y = Y - 8
If KeyDown(208) = 1 Then Y = Y + 8
If KeyDown(205) = 1 Then X = X + 9
If KeyDown(203) = 1 Then X = X - 9
;--------------------------------------------------------

;--------------------------------------------------------
;Rand

If X<0 Then X = 0
If X>870 Then X = 875
If Y<0 Then Y = 0
If Y>648 Then Y = 648
;--------------------------------------------------------

;--------------------------------------------------------
;Schüsse

If KeyHit(57) Then
Schuss = Schuss + 1
If Schuss = 100 Then Schuss = 1
Rak(Schuss,0) = 1
Rak(Schuss,1) = X+55
Rak(Schuss,2) = Y-19
PlaySound(klang)
EndIf

For I=1 To 100
If Rak(I,1) < 0 Then Rak(I,1) = 0
If Rak(I,0) = 1 Then
DrawImage rakete,Rak(I,1),Rak(I,2)
Rak(I,2) = Rak(I,2) - 10
EndIf
Next

;--------------------------------------------------------

;---------------------------------------------------------
;Kollision


;Kollision Schüsse/Gegner
For I=1 To 100
If Rak(I,0) <> 0 Then
EndIf

For T=0 To 5

If ImagesCollide(rakete,Rak(I,1),Rak(I,2),Frame1,gegner,gegner2(T,0),gegner2(T,1),Frame1) Then

gegner2(T,0) = 0

Rak(I,2) = 0

punktev = 1

expv = 1

explosionani = 1

gegneranzahl = 1

koord = 1


;Exlplosion (ich glaub das ist alles falsch was ich hier gemacht habe)

If expv = 1 Then
Frame = Frame + 1
DrawImage explosion,gegner2(T,0),gegner2(T,1),Frame
EndIf

If Frame > 19 Then
Frame = 0
explosionani = 2
expv = 0
EndIf


EndIf
Next

Next

If punktev = 1 Then
punkte = punkte + 10
punktev = 0
EndIf




;Kollision: Raumschiff/Gegner


For T=1 To 5

If ImagesCollide(schiff,x,y,Frame1,gegner,gegner2(T,0),gegner2(T,1),Frame1) Then

schiffv = 0

lebenv = 1

If leben < 1 Then
Ende = 1
EndIf


gegner2(T,0) = 0

EndIf
Next


;--------------------------------------------------------

;--------------------------------------------------------
;Gegner

For T=1 To 5
If gegner2(T,0) = 0 Then
gegner2(T,0) = Rand(40,940)
gegner2(T,1) = Rand(-700,-50)
EndIf

gegner2(T,1) = gegner2(T,1) + 4

If gegner2(T,1) > 780 Then gegner2(T,0) = 0
DrawImage gegner, gegner2(T,0), gegner2(T,1)

Next



;---------------------------------------------------------



Flip
Until KeyHit(1) Or Ende = 1

;=========================================================Ende der Hauptschleife======================================================

Repeat
Locate 410,370
Print \"GAME OVER COMMANDER!\"
Locate 430,400
Print \"Dein Score:\"
Locate 600,400
Print punkte
Locate 400,700
Print \"Drücke Enter um zu beenden\"

Until KeyHit(28)


End


PS: Ich weiß das der Code teilweise sehr unsauber und umständlich geschrieben ist. Manche Variablen haben auch keinen Sinn, die kommen später nochmal raus.
 

E. Urbach

ehemals "Basicprogger"

BeitragSo, Okt 02, 2005 16:43
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Was genau funktioniert denn nicht?
2. Ich habs zwar nur überflogen, aber müsste es nicht so sein:

DrawImage explosion,gegner2(T,0),gegner2(T,1),explosionani

Edit: an deiner Stelle würd ich mir wirklich mal einen andern Programmierstil zulegen
 

Talinus

Gast

BeitragSo, Okt 02, 2005 17:19
Antworten mit Zitat
Zitat:
DrawImage explosion,gegner2(T,0),gegner2(T,1),explosionani


Hab ich schon ausprobiert. Aber dann wird bei jedem Gegner die Explosion gezeichnet.

simi

BeitragSo, Okt 02, 2005 17:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Also zuerst würde ich dir mal anraten den ganzen code zu überarbeiten, das sieht ja aus wie ein Schlachtfeld Smile

Zu den Explosionen:

Ich würds ähnlich wie bei den raketen machen: Gegener(t,0) = existiert Gegner;Gegner(t,1) = X-Position;gegner(t,2) = y-position

Jetzt kannst du machen, wenn Rakete(t,0) kleiner als 0 ist, dass das dann die Explosion ist..... Dann kannst du einfach jeden Schleifendurchlauf Gegener(t,0) um eins "kleinermachen", dann hast du sozusagen die Frames.... wenn jetzt Gegner(t,0) -19 ist, kannst du Gegner(t,0) auf 0 setzen, und dann wird automatisch wieder ein neuer Gegner erstellt Wink

Das ist jetzt noch sehr schlecht, aber es sollte erstmals funktionieren.....

viel spass beim einbuggen Wink

cu simi
 

Talinus

Gast

BeitragSo, Okt 02, 2005 18:06
Antworten mit Zitat
Danke für deinen Vorschlag Simi ich werd das mal morgen ausprobieren.

Zitat:
Also zuerst würde ich dir mal anraten den ganzen code zu überarbeiten, das sieht ja aus wie ein Schlachtfeld


Ich weiß sieht schlimm aus, und das ist noch nichtmal der gesamte Code. Menü und Einstellungungen fehlen noch. Ich muss mal gucken wie ich das mache.

5k41

BeitragMo, Okt 10, 2005 16:45
Antworten mit Zitat
Benutzer-Profile anzeigen
ICh verweise mal wieder auf Funktionen und Konstanten...das kann schonmal ganzschön was aus machn wenns um die "ordentlichkeit"(oder so Razz) des codes geht! Naja von mir auch von viel spass und vor allem glück Wink (wenn ich an mein erstes spiel denke *schmunzel*)

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group