Sorry hab nicht viel Zeit weil ich übers Wochenende von Arbeit her weg war/bin, poste schnell den Code, hoffe es ist nicht zu viel..
Code: Alles auswählen
IncludeFile "InitSystem.pb"
IncludeFile "InitGame.pb"
Repeat
  
  ExamineKeyboard()
  
  DisplaySprite(#Sprite_Back, 0, 0)
  
  Gosub steuerung
  Gosub playershots
  Gosub enemy
  
  DisplayTransparentSprite(#Sprite_Player, playerX, playerY)
  
  FlipBuffers()
  
Until KeyboardReleased(#PB_Key_Escape) : End
; GOSUBS -------------------------------------------------------------------------------
steuerung:
If KeyboardPushed(#PB_Key_Left) And playerX > 0
  playerX - playerSpeed
EndIf
If KeyboardPushed(#PB_Key_Right) And playerX < 800 - SpriteWidth(#Sprite_Player)
  playerX + playerSpeed
EndIf
If KeyboardPushed(#PB_Key_Up) And playerY > 0
  playerY - playerSpeed
EndIf
If KeyboardPushed(#PB_Key_Down) And playerY < 600 - SpriteHeight(#Sprite_Player)
  playerY + playerSpeed
EndIf
If KeyboardPushed(#PB_Key_LeftControl) And shootDelay = 0
  AddPlayershot(playerX + 25, playerY - 3, 10, 0)
  AddPlayershot(playerX + 25, playerY + 16, 10, 0)
  
  shootDelay = 15
  PlaySound(#Sound_Blaster)
EndIf
If shootDelay > 0 : shootDelay - 1 : EndIf
Return
playershots:
ForEach(playershot())
  If playershot()\x > 800 : DeleteElement(playershot())
  ElseIf  playershot()\x < 0 : DeleteElement(playershot())
  ElseIf playershot()\y > 600 : DeleteElement(playershot())
  ElseIf playershot()\y < 0 : DeleteElement(playershot())
  EndIf
Next
ForEach(playershot())
  DisplayTransparentSprite(#Sprite_Blaster, playershot()\x, playershot()\y)
  playershot()\x + playershot()\speedX
  playershot()\y + playershot()\speedY
Next
Return
enemy:
If enemyDelay = 0 
  AddEnemy(800, Random(560), -2, 0, 100)
  enemyDelay = enemySetDelay
Else
  enemyDelay - 1
EndIf
ForEach enemy()
  If enemy()\x < 0 - SpriteWidth(#Sprite_Enemy) : DeleteElement(enemy()) : EndIf
  If enemy()\armor < 1 
    DeleteElement(enemy(), 1)
  EndIf
Next
ForEach enemy()
  DisplayTransparentSprite(#Sprite_Enemy, enemy()\x, enemy()\y)
  enemy()\x + enemy()\speedX
Next
Return
InitSystem:
Code: Alles auswählen
;Initialiersierungen
If InitSprite() = 0
  MessageRequester("Fehler", "Kann Grafik nicht Initialisieren..(DirectX 7 oder höher notwendig!)", 0)
  End
EndIf
If InitKeyboard() = 0
  MessageRequester("Fehler", "Kann Keyboard nicht Initialisieren..(DirectX 7 oder höher notwendig!)", 0)
  End
EndIf
If InitSound() = 0
  MessageRequester("Fehler", "Kann Sound nicht Initialisieren..(DirectX 7 oder höher notwendig!)", 0)
  End
EndIf
If InitMouse() = 0
  MessageRequester("Fehler", "Kann Maus nicht Initialisieren..(DirectX 7 oder höher notwendig!)", 0)
  End
EndIf
OpenScreen(800, 600, 16, "Uebung")
InitGame:
Code: Alles auswählen
Global playerX.l 
Global playerY.l
Global playerSpeed.l
Global shootDelay.l
Global enemyDelay.l
Global enemySetDelay.l
playerX = 0
playerY = 300
playerSpeed = 4
enemySetDelay = 100
Enumeration
  #Sprite_Player
  #Sprite_Back
  #Sprite_Blaster
  #Sprite_Enemy
  
  #Sound_Blaster
  #Sound_Hit
EndEnumeration
Structure playershot
  x.l
  y.l
  speedX.l
  speedY.l
EndStructure
Global NewList playershot.playershot()
Structure enemy
  x.l
  y.l
  speedX.l
  speedY.l
  armor.l
EndStructure
Global NewList enemy.enemy()
Procedure AddPlayershot(x, y, speedX, speedY)
  AddElement(playershot())
  playershot()\x = x
  playershot()\y = y
  playershot()\speedX = speedX
  playershot()\speedY = speedY
EndProcedure
Procedure AddEnemy(x, y, speedX, speedY, armor)
  AddElement(enemy())
  enemy()\x = x
  enemy()\y = y
  enemy()\speedX = speedX
  enemy()\speedY = speedY
  enemy()\armor = armor
EndProcedure
LoadSprite(#Sprite_Player, "Grafik\player.bmp")
LoadSprite(#Sprite_Back, "Grafik\back.bmp")
LoadSprite(#Sprite_Blaster, "Grafik\blaster.bmp")
LoadSprite(#Sprite_Enemy, "Grafik\gegner.bmp")
LoadSound(#Sound_Blaster, "Grafik\blaster.wav")
LoadSound(#Sound_Hit, "Grafik\hit.wav")
Vielen lieben dank an alle bisherigen Antworten 
