1

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
E.Schwerdt
  • 47
  • 6

0 Answers0