Space Shooter
Übersicht

![]() |
dominik |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group