Space Invaders Schussystem
Verfasst: Dienstag 12. Juli 2022, 21:27
Hallo, ich bin derzeit dabei, ein Space Invader zu programmieren, ich hänge gerade nur am Schussystem fest, da ich es nicht hinkriege, dass ich mehrere Schüsse schießen kann. Mir ist klar, das das mit einer Liste funktionieren muss, zu der immer ein neuer Schuss hinzugefügt werden muss. Ich bin mir gerade ehrlich gesagt nicht ganz sicher, ob aktuell die Schüsse übereinander sind, oder wie das gerade aussieht. Hier ist mein Code.
import pygame
import sys
pygame.init()
class Laser:
def __init__(self):
self.x_bullet= -20
self.y_bullet= 300
self.laser_img = None
self.x_bullet_speed = 0
self.y_bullet_speed = 0
self.cooldown = True
self.bullet = pygame.image.load(("BlueShot.PNG"))
self.bullets = []
def Cooldown(self):
pass
def Bullets(self, window, x_bullet):
for self.bullet in self.bullets:
window.blit(self.bullet,(x_bullet ,self.y_bullet ))
def MoveLasers(self):
print(self.x_bullet)
print(self.bullets)
self.bullets.append(self.bullet)
for self.bullet in self.bullets:
self.y_bullet_speed = -0.01
self.x_bullet = 200
def Movement(self):
self.y_bullet+= self.y_bullet_speed
self.x_bullet += self.x_bullet_speed
LASERS = Laser()
class Ship:
def __init__(self):
self.width = 500
self.height = 500
self.mov_speedright = 0
self.mov_speedleft = 0
self.x_ship = 250
self.x_bullet = -40
def Shoot(self):
pass
def Shotupstairs(self):
self.x_bullet= self.x_ship
def Screen(self):
self.screen = pygame.display.set_mode([self.width, self.height])
def Ship(self):
LASERS.Bullets(self.screen, self.x_bullet)
pygame.draw.rect(self.screen, (255,255,0),(self.x_ship,400, 20,200), 0)
def Border(self):
if self.x_ship <= 0:
self.mov_speedleft = 0
self.x_ship = 1
if self.x_ship >= 481:
self.mov_Speedright = 0
self.x_ship = 480
def PlayMovLeft(self):
self.mov_speedleft = -0.5
def PlayMovRight(self):
self.mov_speedright = 0.5
def PlayMovRightSt(self):
self.mov_speedleft = 0
def PlayMovLeftSt(self):
self.mov_speedright = 0
def Movement(self):
self.x_ship += self.mov_speedright
self.x_ship += self.mov_speedleft
def main():
SHIP = Ship()
SHIP.Screen()
start = True
while start:
SHIP.Shoot()
SHIP.Screen()
SHIP.Ship()
SHIP.Border()
SHIP.Movement()
LASERS.Movement()
pygame.display.flip()
#screen.fill(0,0)
for event in pygame.event.get():
if event.type == pygame.QUIT: sys.exit()
if event.type == pygame.KEYDOWN:
# moving
if event.key == pygame.K_a:
SHIP.PlayMovLeft()
if event.key == pygame.K_d:
SHIP.PlayMovRight()
# shooting
if event.key == pygame.K_w:
LASERS.MoveLasers()
SHIP.Shotupstairs()
if event.type == pygame.KEYUP:
if event.key == pygame.K_a:
SHIP.PlayMovRightSt()
if event.key == pygame.K_d:
SHIP.PlayMovLeftSt()
main()
import pygame
import sys
pygame.init()
class Laser:
def __init__(self):
self.x_bullet= -20
self.y_bullet= 300
self.laser_img = None
self.x_bullet_speed = 0
self.y_bullet_speed = 0
self.cooldown = True
self.bullet = pygame.image.load(("BlueShot.PNG"))
self.bullets = []
def Cooldown(self):
pass
def Bullets(self, window, x_bullet):
for self.bullet in self.bullets:
window.blit(self.bullet,(x_bullet ,self.y_bullet ))
def MoveLasers(self):
print(self.x_bullet)
print(self.bullets)
self.bullets.append(self.bullet)
for self.bullet in self.bullets:
self.y_bullet_speed = -0.01
self.x_bullet = 200
def Movement(self):
self.y_bullet+= self.y_bullet_speed
self.x_bullet += self.x_bullet_speed
LASERS = Laser()
class Ship:
def __init__(self):
self.width = 500
self.height = 500
self.mov_speedright = 0
self.mov_speedleft = 0
self.x_ship = 250
self.x_bullet = -40
def Shoot(self):
pass
def Shotupstairs(self):
self.x_bullet= self.x_ship
def Screen(self):
self.screen = pygame.display.set_mode([self.width, self.height])
def Ship(self):
LASERS.Bullets(self.screen, self.x_bullet)
pygame.draw.rect(self.screen, (255,255,0),(self.x_ship,400, 20,200), 0)
def Border(self):
if self.x_ship <= 0:
self.mov_speedleft = 0
self.x_ship = 1
if self.x_ship >= 481:
self.mov_Speedright = 0
self.x_ship = 480
def PlayMovLeft(self):
self.mov_speedleft = -0.5
def PlayMovRight(self):
self.mov_speedright = 0.5
def PlayMovRightSt(self):
self.mov_speedleft = 0
def PlayMovLeftSt(self):
self.mov_speedright = 0
def Movement(self):
self.x_ship += self.mov_speedright
self.x_ship += self.mov_speedleft
def main():
SHIP = Ship()
SHIP.Screen()
start = True
while start:
SHIP.Shoot()
SHIP.Screen()
SHIP.Ship()
SHIP.Border()
SHIP.Movement()
LASERS.Movement()
pygame.display.flip()
#screen.fill(0,0)
for event in pygame.event.get():
if event.type == pygame.QUIT: sys.exit()
if event.type == pygame.KEYDOWN:
# moving
if event.key == pygame.K_a:
SHIP.PlayMovLeft()
if event.key == pygame.K_d:
SHIP.PlayMovRight()
# shooting
if event.key == pygame.K_w:
LASERS.MoveLasers()
SHIP.Shotupstairs()
if event.type == pygame.KEYUP:
if event.key == pygame.K_a:
SHIP.PlayMovRightSt()
if event.key == pygame.K_d:
SHIP.PlayMovLeftSt()
main()