Hey Leute bin ganz neu hier und hab mal vor einiger Zeit eine art Spaceshooter geschrieben. Ich wollte jetzt wieder Anfangen ein neues Spiel zu Programmieren aber vorher wollte ich mal meine Code posten ob ihr ein paar Tips für mich hab
Ich weiß der Code ist echt Mist aber damals (halbes Jahr her glaub ich) wusste ich es noch nicht besser wenn ihr trotz nicht eingerücktem Code und vieler unnötiger Zeilen trotzdem mal drüber gucken wollt wär das echt cool
Info das ich beim nächsten mal types und dims verwenden sollte ist mir schon klar
BlitzBasic: [AUSKLAPPEN] [EINKLAPPEN] Global xmax=800,ymax=600 Graphics3D xmax,ymax,32,1 SetBuffer = BackBuffer() Global frametimer = CreateTimer(60) SeedRnd MilliSecs() HidePointer
font = LoadFont("Arial",18,1) SetFont font
Global enemy1 = LoadImage("gfx\feind.png") MidHandle enemy1 MaskImage enemy1,0,0,255 Global enemy2 = LoadImage("gfx\feind2.png") MidHandle enemy2 MaskImage enemy2,0,0,255 Global enemy3 = LoadImage("gfx\feind3.png") MidHandle enemy3 MaskImage enemy3,0,0,255 Global enemy4 = LoadImage("gfx\feind4.png") MidHandle enemy4 MaskImage enemy4,0,0,255 Global enemy5 = LoadImage("gfx\feind5.png") MidHandle enemy5 MaskImage enemy5,0,0,255 Global enemy6 = LoadImage("gfx\feind6.png") MidHandle enemy6 MaskImage enemy6,0,0,255 Global enemy7 = LoadImage("gfx\feind7.png") MidHandle enemy7 MaskImage enemy7,0,0,255 Global spieler = LoadImage("gfx\spieler.png") MidHandle spieler MaskImage spieler,0,0,255 Global schuss = LoadImage("gfx\schuss.png") MidHandle schuss MaskImage schuss,0,0,255 Global stars = LoadImage("gfx\stars.bmp") MaskImage stars,0,0,0 Global hauptmenu = LoadImage("gfx\hauptmenu.bmp") Global pfeile = LoadImage("gfx\pfeile.png")
Global sound1 = LoadSound("sound\schuss.wav") Global sound2 = LoadSound("sound\treffer.wav") Global sound3 = LoadSound("sound\loose.wav")
Global enemy = enemy1 Global xspieler# = 400 Global yspieler = 560 Global xschuss = "" Global yschuss# =530 Global xenemy = 400 Global yenemy = 60 Global lebenenemy = 5 Global leben = 5 Global xrichtung = 3 Global schussan = 0 Global nextenemy = 0 Global neustart = 0 Global gegnerzahler = 0 Global minusbewegung = -3 Global plusbewegung = 3 Global gegnervor = 1 Global weiter = 0 Global level = 1 Global hauptmenuan = 3 Global steuerungmenu = 1 Global schussspeed = 3 Global sspeed = 4 Global name$ = "" Global punkte = 0 Global stream Global file Global rundenpunkte = 0 Global sscore = 0 Global mscore = 0 Global lscore = 0 Global lsname$ Global msname$ Global ssname$ Global neu = 1 Global zwischen
Function spielersteuerung() If KeyDown(203) Then xspieler = xspieler - sspeed If KeyDown(205) Then xspieler = xspieler + sspeed If xspieler > 775 Then xspieler = 775 If xspieler < 33 Then xspieler = 33 End Function
Function gegner() If yenemy < 600 Then xenemy = xenemy + xrichtung If yenemy < 680 Then yenemy = yenemy + gegnervor If yenemy = 680 Then neustart = 1 channel4 = PlaySound(sound3) Delay(200) StopChannel channel4 EndIf If xenemy > 750 Then xrichtung = -3 If xenemy < 50 Then xrichtung = 3 End Function
Function hauptmenu() Flip:Cls Repeat DrawImage hauptmenu,200,100 Locate 200,460 Print "Hauptmenü" Locate 200,480 Print "Steuere mit Pfeil hoch und runter" Locate 200,550 Print "Name = "+name+ " Geld = "+ punkte+"" Locate 10,230 Print "Highscore" Locate 10,250 Print "Leicht: "+lsname+" "+lscore+"" Locate 10,270 Print "Mittel: "+msname+" "+mscore+"" Locate 10,290 Print "Schwer: "+ssname+" "+sscore+"" Locate 470,580 Print "Zum speichern und Beenden Esc drücken" If KeyHit(1) Then If Not name = "" Then stream = WriteFile("spielstaende\"+name+".txt") WriteLine stream,name WriteInt stream,punkte CloseFile stream EndIf End EndIf Delay(100) If KeyHit(200) Then steuerungmenu = steuerungmenu + 1 If KeyHit(208) Then steuerungmenu = steuerungmenu - 1 If steuerungmenu < 1 Then steuerungmenu = 5 If steuerungmenu > 5 Then steuerungmenu = 1 Flip:Cls Locate 300,500 If steuerungmenu = 1 Then Print "Leicht" If steuerungmenu = 2 Then Print "Mittel" If steuerungmenu = 3 Then Print "Schwer" If steuerungmenu = 4 Then Print "Speichern und Beenden" If steuerungmenu = 5 Then Print "Zum Spiel" If Not steuerungmenu = 5 Then zwischen = steuerungmenu EndIf Until KeyHit(28) If steuerungmenu = 1 Then minusbewegung = -2 plusbewegung = 2 schussspeed = 8 sspeed = 6 gegnerzahler = 0 level = 1 xspieler = 400 lebenenemy = 5 enemy = enemy1 schussan = 0 neustart = 0 leben = 5 xenemy = 400 yenemy = 60 gegnervor = 1 EndIf If steuerungmenu = 2 Then minusbewegung = -3 plusbewegung = 3 schussspeed = 5 sspeed = 4 gegnerzahler = 0 level = 1 xspieler = 400 lebenenemy = 10 enemy = enemy1 schussan = 0 neustart = 0 leben = 10 xenemy = 400 yenemy = 60 EndIf If steuerungmenu = 3 Then minusbewegung = -5 plusbewegung = 5 schussspeed = 2 sspeed = 3 gegnervor = 2 gegnerzahler = 0 level = 1 xspieler = 400 lebenenemy = 25 leben = 10 enemy = enemy1 leben = 25 schussan = 0 neustart = 0 xenemy = 400 yenemy = 60 EndIf If steuerungmenu = 4 Then If Not name = "" Then stream = WriteFile("spielstaende\"+name+".txt") WriteLine stream,name WriteInt stream,punkte CloseFile stream EndIf End EndIf If steuerungmenu = 5 Then Flip:Cls Locate 400,300 Print "Weiter gehts" Delay(1000) Locate 400,320 Print "3..." Delay(1000) Locate 400,340 Print "2..." Delay(1000) Locate 400,360 Print "1..." Delay(100) EndIf hauptmenuan = 0 steuerungmenu = zwischen End Function
Repeat SetBuffer = BackBuffer() WaitTimer (frametimer)
file = OpenFile("score\score.txt") lsname = ReadLine$(file) lscore = ReadInt%(file) msname = ReadLine$(file) mscore = ReadInt%(file) ssname = ReadLine$(file) sscore = ReadInt%(file) CloseFile file
If hauptmenuan = 3 Then Repeat DrawImage hauptmenu,200,100 If KeyHit(200) Then neu = neu + 1 If KeyHit(208) Then neu = neu - 1 If neu < 1 Then neu = 2 If neu > 2 Then neu = 1 DrawImage pfeile,240,440 Locate 300,500 If neu = 1 Then Print "Spieler Laden" If neu = 2 Then Print "Neuen Spieler" Locate 450,500 Print "-------------->Rechte Pfeiltaste" hauptmenuan = 2 Flip:Cls Until KeyHit(205) EndIf
If hauptmenuan = 2 Then Delay(100) DrawImage hauptmenu,200,100 Locate 300,450 Print "Bitte geben Sie ihren Namen ein" Locate 300,470 name$ = Input() Delay(500) hauptmenuan = 1 hauptmenu Flip:Cls EndIf
If hauptmenuan > 0 Then hauptmenu
If punkte = 0 And neu = 1 Then file = OpenFile("spielstaende\"+name+".txt") name = ReadLine$(file) punkte = ReadInt%(file) CloseFile file EndIf
spielersteuerung gegner
If KeyHit(30) Then hauptmenuan = 1
ystar = ystar + 1 If ystar = 2000 Then ystar = 1
If schussan = 0 Then If KeyHit(200) Then xschuss = xspieler - schussspeed yschuss = 533 schussan = 1 channel1 = PlaySound(sound1) EndIf EndIf If schussan = 1 Then yschuss = yschuss - schussspeed If yschuss < 1 Then schussan = 0 If yschuss < 500 Then StopChannel channel1 EndIf
If hauptmenuan > 0 Then Flip:Cls Else If schussan = 1 Then DrawImage schuss,xschuss,yschuss DrawImage spieler,xspieler,yspieler DrawImage enemy,xenemy,yenemy TileImage stars,1,1 Flip:Cls EndIf
If ImagesCollide(enemy,xenemy,yenemy,0,schuss,xschuss,yschuss,0) Then xschuss = "" yschuss = "" lebenenemy = lebenenemy - 5 schussan = 0 StopChannel channel1 EndIf
Locate 1,520 Print "Leben: "+lebenenemy Locate 1,540 Print "Geld: "+punkte Locate 1,560 Print "Score: "+rundenpunkte Locate 1,580 Print "Level: "+level
If ImagesCollide(enemy,xenemy,yenemy,0,spieler,xspieler,yspieler,0) Then channel3 = PlaySound(sound2) Delay(420) neustart = 1 EndIf
If lebenenemy < 1 Then nextenemy = 1 channel2 = PlaySound(sound2) EndIf
If nextenemy = 1 Then If steuerungmenu = 1 Then punkte = punkte + 1 EndIf If steuerungmenu = 2 Then punkte = punkte + 2 EndIf If steuerungmenu = 3 Then punkte = punkte + 5 EndIf If steuerungmenu = 1 Then rundenpunkte = rundenpunkte + 1 EndIf If steuerungmenu = 2 Then rundenpunkte = rundenpunkte + 1 EndIf If steuerungmenu = 3 Then rundenpunkte = rundenpunkte + 1 EndIf schussan = 0 gegnerzahler = gegnerzahler + 1 xenemy = Rand(730,70) yenemy = 60 lebenenemy = leben + 5 leben = leben + 5 If xenemy > 400 Then xrichtung = -3 If xenemy < 400 Then xrichtung = 3 If gegnerzahler = 1 Then enemy = enemy2 If gegnerzahler = 2 Then enemy = enemy3 If gegnerzahler = 3 Then enemy = enemy4 If gegnerzahler = 4 Then enemy = enemy5 If gegnerzahler = 5 Then enemy = enemy6 If gegnerzahler = 6 Then enemy = enemy7 If gegnerzahler = 7 Then enemy = enemy1 If gegnerzahler = 8 Then enemy = enemy2 If gegnerzahler = 9 Then enemy = enemy3 If gegnerzahler = 10 Then enemy = enemy4 If gegnerzahler = 11 Then enemy = enemy5 If gegnerzahler = 12 Then enemy = enemy6 If gegnerzahler = 13 Then enemy = enemy7 If gegnerzahler = 14 Then enemy = enemy1 If gegnerzahler = 15 Then enemy = enemy2 If gegnerzahler = 16 Then enemy = enemy3 If gegnerzahler = 17 Then enemy = enemy4 If gegnerzahler = 18 Then enemy = enemy5 If gegnerzahler = 19 Then enemy = enemy6 If gegnerzahler = 20 Then enemy = enemy7 If gegnerzahler = 21 Then enemy = enemy1 If gegnerzahler = 22 Then enemy = enemy2 If gegnerzahler = 23 Then enemy = enemy3 If gegnerzahler = 24 Then enemy = enemy4 If gegnerzahler = 25 Then enemy = enemy5 If gegnerzahler = 26 Then enemy = enemy6 If gegnerzahler = 27 Then enemy = enemy7 If gegnerzahler = 28 Then enemy = enemy1 If gegnerzahler = 29 Then enemy = enemy2 If gegnerzahler = 30 Then enemy = enemy3 If gegnerzahler = 31 Then enemy = enemy4 If gegnerzahler = 32 Then enemy = enemy5 If gegnerzahler = 33 Then enemy = enemy6 If gegnerzahler = 34 Then enemy = enemy7 If gegnerzahler = 35 Then enemy = enemy1 If gegnerzahler = 36 Then enemy = enemy2 If gegnerzahler = 37 Then enemy = enemy3 If gegnerzahler = 38 Then enemy = enemy4 If gegnerzahler = 39 Then enemy = enemy5 If gegnerzahler = 41 Then enemy = enemy6 If gegnerzahler = 42 Then enemy = enemy7 If gegnerzahler = 43 Then enemy = enemy1 If gegnerzahler = 44 Then enemy = enemy2 If gegnerzahler = 45 Then enemy = enemy3 If gegnerzahler = 46 Then enemy = enemy4 If gegnerzahler = 47 Then enemy = enemy5 If gegnerzahler = 48 Then enemy = enemy6 If gegnerzahler = 49 Then enemy = enemy7 If gegnerzahler = 50 Then enemy = enemy1 If gegnerzahler = 51 Then enemy = enemy2 schussan = 0 nextenemy = 0 EndIf
If gegnerzahler = 10 And level = 1 Then weiter = 1 If gegnerzahler = 20 And level = 2 Then weiter = 1 If gegnerzahler = 30 And level = 3 Then weiter = 1 If gegnerzahler = 40 And level = 4 Then weiter = 1 If gegnerzahler = 50 And level = 5 Then weiter = 1 If weiter = 1 Then level = level + 1 If steuerungmenu = 1 Then lebenenemy = 5 If steuerungmenu = 2 Then lebenenemy = 10 If steuerungmenu = 3 Then lebenenemy = 25 StopChannel channel1 StopChannel channel2 StopChannel channel3 schussan = 0 If steuerungmenu = 1 Then leben = 5 If steuerungmenu = 2 Then leben = 10 If steuerungmenu = 3 Then leben = 25 minusbewegung = minusbewegung - 2 plusbewegung = plusbewegung + 2 gegnervor = gegnervor + 1 Flip:Cls While weiter = 1 If KeyHit(1) Then End EndIf Locate 300,270 Print "Juhhuuu Level "+level+"" Locate 350,300 Print "Press enter" Locate 350,350 Print "Du hast es in den "+level+" Level geschaft" Locate 350,380 Print "jetzt werden die gegner schneller" If KeyHit(28) Then weiter = 0 EndIf Wend EndIf
If yenemy > 80 Then StopChannel channel2 EndIf
If neustart = 1 Then Flip:Cls If steuerungmenu = 1 And rundenpunkte > lscore Then If Not name = "" Then If level > 1 Then lscore = rundenpunkte Else lscore = rundenpunkte EndIf EndIf lsname = name EndIf If steuerungmenu = 2 And rundenpunkte > mscore Then If Not name = "" Then If level > 1 Then mscore = rundenpunkte Else mscore = rundenpunkte EndIf EndIf msname = name EndIf If steuerungmenu = 3 And rundenpunkte > sscore Then If Not name = "" Then If level > 1 Then sscore = rundenpunkte Else sscore = rundenpunkte EndIf EndIf ssname = name EndIf rundenpunkte = 0 stream = WriteFile("score\score.txt") WriteLine stream,lsname WriteInt stream,lscore WriteLine stream,msname WriteInt stream,mscore WriteLine stream,ssname WriteInt stream,sscore CloseFile stream StopChannel channel1 StopChannel channel2 StopChannel channel3 Delay(200) StopChannel channel4 enemy = enemy1 If steuerungsmenu = 1 Or 2 Then gegenervor = 1 EndIf xspieler# = 400 yspieler = 560 xschuss = "" yschuss# =530 xenemy = Rand(730,70) yenemy = 60 schussan = 0 nextenemy = 0 If steuerungmenu = 1 Then leben = 5 lebenenemy = 5 EndIf If steuerungmenu = 2 Then leben = 10 lebenenemy = 10 EndIf If steuerungmenu = 3 Then leben = 25 lebenenemy = 25 EndIf While neustart = 1 Flip:Cls If KeyHit(1) Then End Locate 350,300 Print "Press Enter" Locate 350,325 Print "Du hast Level " + level + " erreicht und" Locate 350,350 Print "Du hast " + gegnerzahler + " Gegner vernichtet" Locate 350,375 Print "Drücke a um ins Hauptmenü zu kommen" If KeyHit(30) Then hauptmenu If KeyHit(28) Then neustart = 0 gegnerzahler = 0 level = 1 EndIf Wend EndIf
Until KeyHit(1) End
|