Ich habe ein Spiel gemacht und bin nun dabei ein Raumschiff zum schießen zu bringen.
Ich habe in dem PureBasic Beispiel Weaponz II diese Funktuin "AddBullet()" gefunden und habe meinen code so umgestaltet
Code: Alles auswählen
InitSprite()
InitKeyboard()
InitMovie()
OpenScreen(800,600,32,"eating Sv")
LoadSprite(1,"data\pics\player.bmp")
LoadSprite(2,"data\pics\battery.bmp")
LoadSprite(3,"data\pics\bonus.bmp")
LoadSprite(4,"data\pics\background.bmp")
LoadSprite(6,"data\pics\schuss.bmp")
LoadSprite(7,"data\pics\schuss.bmp")
LoadSprite(10,"data\pics\start.bmp")
LoadMovie(1,"data\1.wav")
LoadMovie(2,"data\2.wav")
LoadMovie(3,"data\exp.wav")
LoadMovie(4,"data\schuss.wav")
LoadMovie(5,"data\timetofly.wav")
player_x = 363
player_y = 559
schuss_x = 1000
schuss_y = 1000
schuss2_x = 1000
schuss2_y = 1000
ice_x = 0
ice_y = 0
bonus_x = 60
bonus_y = 40
back_y = 0
Structure Bullet
x.w
y.w
Width.w
Height.w
Image.w
SpeedX.w
SpeedY.w
EndStructure
NewList Bullet.Bullet()
Procedure AddBullet(Sprite, x, y, SpeedX, SpeedY)
AddElement(Bullet())
Bullet()\x = x
Bullet()\y = y
Bullet()\Width = SpriteWidth(Sprite)
Bullet()\Height = SpriteHeight(Sprite)
Bullet()\Image = Sprite
Bullet()\SpeedX = SpeedX
Bullet()\SpeedY = SpeedY
EndProcedure
explosion_x = 1000
explosion_y = 1000
wetter = 4
punkte = 0
speed = 3
zeit = 30000
playerspeed = 3
start = 0
PlayMovie(5,0)
Repeat
DisplaySprite(10,0,0)
ExamineKeyboard()
;GAME START
If KeyboardPushed(#PB_Key_S)
StopMovie()
start = 1
EndIf
If start = 1
zeit - 1
back_y + 1
ice_y + speed
If back_y > 0
back_y = -600
EndIf
bonus_y + speed
If ice_y > 600
ice_y = 0
ice_x = Random(770-20)
EndIf
If bonus_y > 600
bonus_y = -5000
bonus_x = Random(770-20)
EndIf
If schuss_y > 0
schuss_y - 6
schuss2_y -6
Else
schuss2_y = -1000
schuss_y = -1000
EndIf
If schuss3_y > 0
schuss3_y - 6
schuss4_y -6
Else
schuss4_y = -1000
schuss3_y = -1000
EndIf
ExamineKeyboard()
ClearScreen(0,0,0)
If KeyboardPushed(#PB_Key_Space)
AddBullet(6,player_x,player_y,0,1)
EndIf
If KeyboardReleased(#PB_Key_Space)
PlayMovie(4,0)
EndIf
StartDrawing(ScreenOutput())
Locate(150-TextLength("Punkte: "+Str(punkte)), 10)
DrawText("Punkte: "+Str(punkte))
StopDrawing()
StartDrawing(ScreenOutput())
Locate(750-TextLength("Zeit: "+Str(zeit)), 10)
DrawText("Zeit: "+Str(zeit))
StopDrawing()
If zeit = 0
CloseScreen()
MessageRequester("game by Sven Schober","Punkte: "+Str(punkte))
EndIf
If Punkte > 600
If punkte < 1000
speed = 4
EndIf
EndIf
If Punkte > 1000
If punkte < 2000
speed = 6
EndIf
EndIf
If Punkte > 2000
speed = 8
EndIf
If SpriteCollision(1,player_x,559,2,ice_x,ice_y) = 1
punkte + 10
PlayMovie(1,0)
ice_y = 0
ice_x = Random(640-20)
EndIf
If SpriteCollision(1,player_x,559,3,bonus_x,bonus_y) = 1
playerspeed + 1
PlayMovie(2,0)
bonus_y = -5000
bonus_x = Random(640-20)
EndIf
If SpriteCollision(6,schuss_x,schuss_y,2,ice_x,ice_y) = 1
punkte + 50
PlayMovie(3,0)
ice_y = 0
ice_x = Random(640-20)
EndIf
If SpriteCollision(6,schuss_x,schuss_y,3,bonus_x,bonus_y) = 1
playerspeed + 1
PlayMovie(3,0)
bonus_y = -5000
bonus_x = Random(640-20)
EndIf
If SpriteCollision(7,schuss2_x,schuss2_y,2,ice_x,ice_y) = 1
punkte + 50
PlayMovie(3,0)
ice_y = 0
ice_x = Random(640-20)
EndIf
If SpriteCollision(7,schuss2_x,schuss2_y,3,bonus_x,bonus_y) = 1
playerspeed + 1
PlayMovie(3,0)
bonus_y = -5000
bonus_x = Random(640-20)
EndIf
If KeyboardPushed(#PB_Key_Left)
player_x - playerspeed
If player_x < 0
player_x = 0
EndIf
EndIf
If KeyboardPushed(#PB_Key_Right)
player_x + playerspeed
If player_x > 700
player_x = 700
EndIf
EndIf
DisplayTransparentSprite(wetter,0,back_y)
DisplayTransparentSprite(1,player_x,559)
DisplayTransparentSprite(2,ice_x,ice_y)
DisplayTransparentSprite(3,bonus_x,bonus_y)
DisplayTransparentSprite(6,schuss_x,schuss_y)
DisplayTransparentSprite(7,schuss2_x,schuss2_y)
EndIf
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
CloseScreen()
MessageRequester("game by Sven Schober","Punkte: "+Str(punkte))
Gruß Sven