I am trying to make Space Invaders in pygame, sort of as a proof of concept that I can do it, remember, I am a beginner. Any way I have the problem where I can get my bullet to fire and move but not check if it collided with another sprite (in this case, the invaders). I could get it to check collision with one invader but I don't want to have to check collision for every single invader every single frame so I added the invaders to list after trying to research on the internet but I am now stuck, could some one help me.
I have tried to only include the necessary code but please comment if more is needed.
invader_list = pygame.sprite.Group()
invader_list.add(invader1)
invader_list.add(invader2)
invader_list.add(invader3)
invader_list.add(invader4)
invader_list.add(invader5)
invader_list.add(invader21)
invader_list.add(invader23)
invader_list.add(invader24)
invader_list.add(invader25)
invader_list.add(invader31)
invader_list.add(invader32)
invader_list.add(invader33)
invader_list.add(invader34)
invader_list.add(invader35)
invader_list.add(invader41)
invader_list.add(invader42)
invader_list.add(invader43)
invader_list.add(invader44)
invader_list.add(invader45)
invader_list.add(invader51)
invader_list.add(invader52)
invader_list.add(invader53)
invader_list.add(invader54)
invader_list.add(invader55)
space
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
if bullet1 not in all_sprites_list:
bullet1.rect.y = Shooter.rect.y-25
bullet1.rect.x = Shooter.rect.x + 12
all_sprites_list.add(bullet1)
bullet1.move()
if bullet1.rect.y == 0:
all_sprites_list.remove(bullet1)
bullet1.rect.y = Shooter.rect.y
space
class bullet(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = pygame.image.load('Bullet.png')
self.rect = self.image.get_rect()
self.rect.x = Shooter.rect.x + 12
self.rect.y = Shooter.rect.y
def move(self):
self.rect.y -= 5
space
class invader(pygame.sprite.Sprite):
def __init__(self,layer, position):
super().__init__()
self.image = pygame.image.load("Invader.jpg")
self.rect = self.image.get_rect()
c = 35
y_start = 35
if layer == 1:
self.rect.y = y_start
elif layer == 2:
self.rect.y = y_start + c
elif layer == 3:
self.rect.y = y_start + 2*c
elif layer == 4:
self.rect.y = y_start + 3*c
elif layer == 5:
self.rect.y = y_start + 4*c
if position == 1:
self.rect.x = 50
elif position == 2:
self.rect.x = 100
elif position == 3:
self.rect.x = 150
elif position == 4:
self.rect.x = 200
elif position == 5:
self.rect.x = 250
def moving(self):
self.rect.x += 20
def moving1(self):
self.rect.x -= 20