Space Shooter

Übersicht BlitzBasic Allgemein

Gehe zu Seite Zurück  1, 2, 3

Neue Antwort erstellen

dominik

BeitragSa, Dez 20, 2003 12:41
Antworten mit Zitat
Benutzer-Profile anzeigen
ich lade alle bilder vor der hauptschleife.

Ich glaub nich das euch der viel nutz den hab ich schonmal gepostet und alle ham sich wegen meinem progg stiel beschwert, und das iich des nochmall coden soll aber des werd ich sicher nich ich kenn mich noch sehr gut aus und des is auch mein erstes game.

hier mal der code: (is aber nicht der ganze)

Code: [AUSKLAPPEN]

Graphics 640, 480
AppTitle "S3"
SeedRnd MilliSecs()
;Munition = 500
;Geschwindigkeit = 60
;Level = 1
;Punkte = 0
leben = 3
LP = 0
CH = 1
Hinterg2X = 510
SteinX = 650

;Repeat
;X3 = MilliSecs()
;Stein3X3 = Right(X3,3)
;Until Stein3X3 > 50 And Stein3X3 < 500

;Stein3X = Stein3X3
Const rakspeed = 15
Global Munition = 500
Global X = 100
Global Y = 230
Global lebensspeicher = 3
Global punkte
Global Geschwindigkeit = 60
Global level = 1

Type Steine1
Field x
Field y
Field vorhanden
Field flugges1
End Type

Type Steine2
Field x
Field y
Field vorhanden
Field flugges2
End Type

Type schild
Field x
Field y
Field vorhanden
Field zeit
End Type

Type neumunition
Field x
Field y
Field vorhanden
End Type

Type raketetype
Field x
Field y
Field vorhanden
End Type

Type gegner1
Field x
Field y
Field gegnerflugges1
Field vorhanden
End Type

Type gegner2
Field x
Field y
Field gegnerflugges2
Field vorhanden
End Type

;Laden
Repeat
If start > 420 Then start = start - 10
Until start < 420
SteinzufallY = start
steinY = steinzufallY
Steinzufallspeed = Rand (1,5)
steinzufallspeed = steinspeed

M = PlayMusic ("lied1.wav")
Cls
Text 200, 200, "Laden: 10%"
Shoot = LoadSound ("Musik/shoot.wav")
Font1 = LoadFont("Impact",40,1,0,1)
bild2 = LoadImage("bilder/space.bmp")
gegnera = LoadImage ("bilder/gegner1.bmp")
Cls
Text 200, 200, "Laden: 20%"
font2 = LoadFont("Arial",16,0,0,0)
font3 = LoadFont("Arial",16,1,0,1)
gegnerb = LoadImage ("bilder/gegner2.bmp")
schiffschild = LoadImage("bilder/schiffschild.bmp")
Cls
Text 200, 200, "Laden: 30%"
font4 = LoadFont("Arial",16,1,0,0)
Rakete = LoadImage("bilder/rakete.bmp")
Cls
Text 200, 200, "Laden: 40%"
bild1 = LoadImage("graphics/stars.bmp")
Raumschiff = LoadImage("bilder/spaceship2.bmp")
Cls
Text 200, 200, "Laden: 50%"
Leben1 = LoadImage("bilder/pickups.bmp")
Leben2 = LoadImage("bilder/pickups.bmp")
Cls
Text 200, 200, "Laden: 60%"
Leben3 = LoadImage("bilder/pickups.bmp")
Leben4 = LoadImage("bilder/pickups.bmp")
Cls
Text 200, 200, "Laden: 70%"
Leiste = LoadImage("bilder/rand.bmp")
neuemunition = LoadImage("bilder/neuemunition")
;tile-blockset
Cls
Text 200, 200, "Laden: 80%"
Stein1= LoadImage("bilder/stein1.bmp")
stein2 = LoadImage("bilder/stein2.bmp")
schild = LoadImage("bilder/schild.bmp")

Cls
Text 200, 200, "Laden: 90%"
ScaleImage Stein1, 0.6, 0.6
ScaleImage gegnera, 0.5, 0.5
ScaleImage gegnerb, 0.5, 0.5
ScaleImage stein2, 0.6, 0.6
ScaleImage rakete, 0.8, 0.8
ScaleImage schild, 0.7, 0.7
ScaleImage schiffschild, 0.4, 0.4
Cls
Text 200, 200, "Laden: 100%"
RotateImage Stein1, 0
RotateImage Raumschiff, 90
RotateImage rakete, 90
;Spielstandspeicher Ordner Erstellen
CreateDir "Saves":ChangeDir ("Saves")



;                                                                  Hauptschleife
Repeat
SetFont font2
If CH = 0 Then StopChannel(M)
If CH = 1 Or LP = 1 Then If ChannelPlaying(M) = 0 Then PlayMusic ("lied.wav")
Cls
;Steuerung
If KeyDown(61) Then Gosub Pause
If KeyDown(62) Then Gosub Menü
SetBuffer BackBuffer()
If Y < 20 Then Y = 20
If KeyDown(63) Then PauseChannel(M): LP = 0: CH = 3
If KeyDown(64) Then ResumeChannel(M): LP = 1: CH = 3
If KeyDown(66) Then StopChannel(M): PlayMusic(M): LP = 1: CH = 1
If KeyDown(65) Then StopChannel(M):LP = 3: CH = 0
If KeyDown(203) Then schiffbewxmi = 3: X = X - schiffbewxmi
If KeyDown(205) Then schiffbewxpl = 3: X = X + schiffbewxpl
If KeyDown(200) Then schiffbewymi = 3: Y = Y - schiffbewymi
If KeyDown(208) Then schiffbewypl = 3: Y = Y + schiffbewypl
If KeyHit(67) Then screen = screen + 1 SaveBuffer FrontBuffer(), "screenshot" + screen + ".bmp"
If KeyHit(67) Then  Gosub Speichern: Speicher1 = 1
If KeyDown(88) Then Gosub Laden

;schiffsteurung - weicher
If schiffbewxpl > 1 Then schiffbewxpl = schiffbewxpl - .6
If schiffbewypl > 1 Then schiffbewypl = schiffbewypl - .6
If schiffbewxmi > 1 Then schiffbewxmi = schiffbewxmi - .6
If schiffbewymi > 1 Then schiffbewymi = schiffbewymi - .6

If schiffbewxmi > 1 Then X = X - schiffbewxmi
If schiffbewxpl > 1 Then X = X + schiffbewxpl
If schiffbewymi > 1 Then Y = Y - schiffbewymi
If schiffbewypl > 1 Then Y = Y + schiffbewypl

;Bildschirmbegrenzung
If X < 1 Then Gosub zurueck
If X > 500 Then X = 500
If Y < 27 Then Y = 27
If Y > 445 Then Y = 445
;Leertaste = Schießen
If KeyDown(57) = 1 Then Munition = Munition - 1: If Munition < 0 Then Munition = 0
If KeyHit(57) = 1 Then If Munition > 0 Then a = 1;PlaySound shoot

;rakete
If KeyDown(57) = 1 Then If Munition > 0 Then
For raketen = 1 To 20
rak1.raketetype = New raketetype
rak1\vorhanden = 1
rak1\X = X + 1
rak1\Y = Y + 12
rakzustand = rakzustand + 1
FlushKeys
Next
EndIf

;Abdrifften des schiffens
If KeyDown(203) = 0 Then X = X - 1

;Hintergrundbewegung
DrawImage bild2, Hinterg1X, 0
DrawImage bild2, Hinterg2X, 0
DrawImage bild2, Hinterg3X, 0
Hinterg1X = Hinterg1X - 2
Hinterg2X = Hinterg2X - 2
Hinterg3X = Hinterg3X - 2
If Hinterg2X = 100 Then Hinterg3X = 600
If Hinterg1X = 100 Then Hinterg2X = 600
If Hinterg3X = 100 Then Hinterg1X = 600

DrawImage leiste, 0,0
DrawImage Raumschiff, X, Y

If level = 1 Then G = 30
If level = 1 Then A = 35

If level = 2 Then G = 25
If level = 2 Then A = 30

If level = 3 Then G = 20
If level = 3 Then A = 25

If level = 4 Then G = 15
If level = 4 Then A = 20

If level = 5 Then G = 10
If level = 5 Then A = 15

If level = 6 Then G = 2
If level = 6 Then A = 7

;Gegner
gegnerpro1 = Rnd(1,G)
gegnerpro2 = Rnd(1,G)
gegnerspeed2 = Rnd(3,10)
gegnerspeed1 = Rnd(3,10)

;Typ1
If gegnerpro1 = 1 Then
For gegner1 = 1 To 1
schiff1.gegner1 = New gegner1
schiff1\vorhanden = 1
schiff1\gegnerflugges1 = gegnerspeed1
schiff1\X = 650
schiff1\X = steineX
schiff1\Y = Rnd(27,440)
Next
EndIf

For schiff1.gegner1 = Each gegner1
schiff1\X = schiff1\X - schiff1\gegnerflugges1
If schiff1\X <= - 70 Then schiff1\vorhanden = 2
If schiff1\vorhanden = 1 Then DrawImage gegnera, schiff1\X, schiff1\Y
If ImagesOverlap (gegnera,schiff1\X,schiff1\Y,raumschiff,X,Y) Then schiff1\vorhanden = 2
Next

;Typ2
If gegnerpro2 = 1 Then
For gegner2 = 1 To 1
schiff2.gegner2 = New gegner2
schiff2\vorhanden = 1
schiff2\gegnerflugges2 = gegnerspeed2
schiff2\X = 650
schiff2\X = steineX
schiff2\Y = Rnd(27,440)
Next
EndIf

For schiff2.gegner2 = Each gegner2
schiff2\X = schiff2\X - schiff2\gegnerflugges2
If schiff2\X <= - 70 Then schiff2\vorhanden = 2
If schiff2\vorhanden = 1 Then DrawImage gegnerb, schiff2\X, schiff2\Y
If ImagesOverlap (gegnerb,schiff2\X,schiff2\Y,raumschiff,X,Y) Then schiff2\vorhanden = 2:
Next

;Asteroiden
steinpro1 = Rnd(1,A)
steinpro2 = Rnd(1,A)
Steinspeed1 = Rnd(3,8)
Steinspeed2 = Rnd(3,8)

;Typ1
If Steinpro1 = 1 Then
For steine1 = 1 To 1
asteroid1.steine1 = New steine1
asteroid1\vorhanden = 1
asteroid1\flugges1 = steinspeed1
SteineX = 650
asteroid1\X = steineX
steineY = Rnd(27,440)
asteroid1\Y = steineY
Next
EndIf

For asteroid1.steine1 = Each steine1
asteroid1\X = asteroid1\X - asteroid1\flugges1
If asteroid1\X <= - 50 Then asteroid1\vorhanden = 2
If asteroid1\vorhanden = 1 Then DrawImage Stein1, asteroid1\X, asteroid1\Y
If ImagesOverlap (stein1,asteroid1\X,asteroid1\Y,raumschiff,X,Y) Then asteroid1\vorhanden = 2
Next


;typ2
If Steinpro2 = 1 Then
For steine2 = 1 To 1
asteroid2.steine2 = New steine2
asteroid2\vorhanden = 1
asteroid2\flugges2 = steinspeed2
SteineX = 650
asteroid2\X = steineX
steineY = Rnd(27,440)
asteroid2\Y = steineY
Next
EndIf

For asteroid2.steine2 = Each steine2
asteroid2\X = asteroid2\X - asteroid2\flugges2
If asteroid2\X <= - 50 Then asteroid2\vorhanden = 2
If asteroid2\vorhanden = 1 Then DrawImage Stein2, asteroid2\X, asteroid2\Y
If ImagesOverlap (stein2,asteroid2\X,asteroid2\Y,raumschiff,X,Y) Then asteroid2\vorhanden = 2
Next

;Raketen
For rak1.raketetype = Each raketetype
rak1\X = rak1\X + rakspeed
If rak1\X >= 660 Then rak1\vorhanden = 2: rakzustand = rakzustand - 1
If rak1\vorhanden = 1 Then DrawImage rakete, rak1\X, rak1\Y
Next

;schild
schildpro = Rnd(1,400)
If schildpro = 1 Then
schutz.schild = New schild
schutz\vorhanden = 1
schutz\X = 650
schutz\Y = Rnd(27,440)
schutz\zeit = MilliSecs()
EndIf

For schutz.schild = Each schild
schutz\X = schutz\X - 4
If schutz\X <= - 50 Then schutz\vorhanden = 2
If schutz\vorhanden = 1 Then DrawImage schild, schutz\X, schutz\Y
If ImagesOverlap (schild,schutz\X,schutz\Y,raumschiff,X,Y) Then schutz\vorhanden = 3
If schutz\vorhanden = 3 Then DrawImage schiffschild, x + 10, y - 10
;If ImagesOverlap (schiffschild,X + 10,Y - 4,steine1, asteroid1\x, asteroid1\y) Then asteroid1\vorhanden = 2
;If ImagesOverlap (schiffschild,X + 10,Y - 4,steine2, asteroid2\x, asteroid2\y) Then asteroid2\vorhanden = 2
;If ImagesOverlap (schiffschild,X + 10,Y - 4,gegner1, gegner1\x, gegner1\y) Then gegner1\vorhanden = 2
;If ImagesOverlap (schiffschild,X + 10,Y - 4,gegner2, gegner2\x, gegner2\y) Then gegner2\vorhanden = 2
If MilliSecs() - schutz\zeit => 1000000 Then schutz\vorhanden = 2
Next

;neuemunition
munitionpro = Rnd(1,400)
If munitionpro = 1 Then
schuss.neumunition = New neumunition
schuss\vorhanden = 1
schuss\X = 650
schuss\Y = Rnd(27,440)
EndIf

;                                                                                      hier kommt jetzt der "Kaputte" teil

;For schuss.neumunition = Each neumunition
;schuss\X = schutz\X - 4
;If schuss\X <= - 50 Then schuss\vorhanden = 2
;If schuss\vorhanden = 1 Then DrawImage neumunition, schuss\X, schuss\Y
;If ImagesOverlap (neuemunition,schuss\X,schuss\Y,raumschiff,X,Y) Then munition = munition + 500
;If schuss\vorhanden = 3 Then DrawImage neuemunition, schuss\x, schuss\y
;Next


;Beschriftung
Text 140, 3, "Leben: " + leben
Text 310, 3, Munition
Text 560, 3, "Ende ESC"
Text 428, 3, "Menü F4"
Text 35, 3, "Level:"
Text 70, 3, Level :Text 80, 3, "/":Text 90, 3, Punkte

;FrontBuffer und Backbufferwechsel
Flip
Delay Geschwindigkeit
Until KeyDown(1)
;Wenn das Spielbeendet wird und kein Spielstand gespeichert wurde wird der Save Ordner wieder gelöscht wenn
;ein Spielstand gespeichert wurde kann er nicht mehr gelöscht werden
ChangeDir ("..")
DeleteDir ("Saves")
End

Gehe zu Seite Zurück  1, 2, 3

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group