da ich relativ neu in der PB Szene bin aber schon einige Erfahrung aus anderen Programmiersprachen mitgebracht habe, wollte ich einmal um evtl. verbesserungsvorschläge meines Klassikerremakes space invader bitten.
Des weiteren hab ich noch keine Idee wie ich das mit den eigenen häusern(oder auch Schutzschilden) welche sich ja von beiden Seiten "zerschießen lassen" anfangen soll.
und eine Idee für einen kontinuierlichen Gegner spawn loop ohne das sich gegner überschneiden wäre auch gut

wäre nett wenn der ein oder andere mal drüber gucken könnte.
Dank im vorraus
die Initsystem.Pb voraus:
Code: Alles auswählen
width = 800
height = 600
If Not OpenWindow(0,0,0,width,height,"Invasion", #PB_Window_ScreenCentered)
End
EndIf
If Not InitKeyboard()
End
EndIf
If Not InitSprite()
End
EndIf
If Not OpenWindowedScreen(WindowID(0),0,0,width,height,0,0,0)
End
EndIf
If Not LoadFont(0, "OCR A Std", 80)
End
EndIf
und die invasion hinterher
dazu noch gesagt die bilder sind alles mit paint gemacht also 30sek arbeit...
ship ist 50x25 px und der rest ist 50x50 px...
Code: Alles auswählen
IncludeFile "Initsystem.pb"
LoadSprite (0, "ship.bmp")
LoadSprite (2, "enemy.bmp")
LoadSprite (3, "explode.bmp")
If Not CreateSprite (1, 2, 10)
End
EndIf
If StartDrawing(SpriteOutput(1)) ;Mal mir einen hübschen Schuss
Box (0,0,2,10,$FFFFFF)
StopDrawing()
EndIf
Define x = 375 ;Spieler Position
Define shot = 0 ;Ist geschossen oder nicht?
Define tx = 20 ;targetx also X Position des Gegners
Define ty = 20 ;targety also Y Position des Gegners
Define zrichtung = 0 ;Richtung des Gegners 0 = rechts 1 = links
Define Speed = 1 ;Geschwindigkeit des Gegners 1px pro frame
Define hit = 0 ;Ist getroffen oder nicht?
Define sx = -10 ;shotx also X Position des Schusses
Define sy = -10 ;shoty also Y Position des Schusses
Repeat
ExamineKeyboard()
ClearScreen(RGB(0,0,0))
DisplaySprite(0,x,575)
DisplaySprite(2,tx,ty)
DisplaySprite (1,sx,sy)
If KeyboardPushed(#PB_Key_Right) ;Wenn Rechts gedrückt wird Player nach rechts
If x => 750 ;bis zum Ende, dann stehenbleiben
x = 750
Else
x + 3
EndIf
EndIf
If KeyboardPushed(#PB_Key_Left) ;Wenn links gedrückt wird Player nach links
If x =< 0 ;bis zum Ende, dann stehenbleiben
x = 0
Else
x - 3
EndIf
EndIf
If shot = 1 ;Man darf nur einmal schließen bis der schuss
If sy =< -10 ;außerhalb des Bildes ist
shot = 0
Else
sy - 5
EndIf
EndIf
If KeyboardPushed(#PB_Key_Space) And shot = 0 ;Wenn ich schießen darf
sx = x + 25 ; Dann die Koordinaten des Schusses
sy = 565 ; Auf die des Spielers
shot = 1
EndIf
If sx => tx And sx =< tx + 50 And sy => ty And sy =< ty + 50 ;Wenn Schusskoordinaten = Gegnerkoordinaten
hit = 1 ;Dann getroffen
EndIf
If hit = 0 ;Wenn nicht getroffen fliege in Richtung bis zum Rand
If zrichtung = 0
If tx => 750
tx = 750 ;Dann 20px nach unten und Richtung umkehren
ty + 20
zrichtung = 1
Else
tx + speed
EndIf
Else
If tx =< 0 ;Das gleiche in der anderen Richtung
tx = 0
ty + 20
zrichtung = 0
Else
tx - speed
EndIf
EndIf
Else ;Wenn getroffen
DisplaySprite(3,tx,ty) ; Zeige explosion
hit = 0 ;setze auf nicht getroffen
tx = 900 ;setze Gegner unter den Spieler
ty = 900
shot = 0 ;und setze auf Schussfreigabe
EndIf
If shot = 0 ;damit der Schuss nicht im Gegner hängen bleibt
sx = -10 ;setze ihn außerhalb
sy = -10
EndIf
FlipBuffers()
While WindowEvent()
Wend
Until KeyboardReleased(#PB_Key_Escape)