正在显示多余的精灵?

时间:2020-02-27 15:48:05

标签: python pygame

我在为A Level计算项目制作的太空侵略者程序中显示了一个额外的精灵,这是一个问题。

它看起来像这样:space invaders sprites

我的代码如下:

class Enemy(pygame.sprite.Sprite):

    def __init__(self,x,y,direction,enemy_type):
        pygame.sprite.Sprite.__init__(self)

        self.EnemyType = enemy_type
        self.Direction = direction

        if enemy_type == 1:
            enemy_image = pygame.image.load("sprites\\enemy1_1.png")
            self.Speed = 1
            self.Score = 5

        if enemy_type == 2:
            enemy_image = pygame.image.load("sprites\\enemy1_1.png")
            self.Score = 15
            self.Speed = 1

        if enemy_type == 3:
            enemy_image = pygame.image.load("sprites\\enemy1_1.png")
            self.Score = 10
            self.Speed = 1

        if enemy_type == 4:
            enemy_image = pygame.image.load("sprites\\enemy1_1.png")
            self.Score = 20
            self.Speed = 1

        if enemy_type == 5:
            enemy_image = pygame.image.load("sprites\\enemy1_1.png")
            self.Score = 25
            self.Speed = 1

        self.image = pygame.Surface([100, 100])
        self.image.set_colorkey(BLACK)
        self.image.blit(enemy_image,(0,0))
        self.rect = self.image.get_rect()
        self.rect.x = x
        self.rect.y = y

    def move_enemy(self):
        if self.Direction == "right":
            self.rect.x += self.Speed
        if self.Direction == "left":
            self.rect.x -= self.Speed

    #draw image
    def draw(self, screen):
        screen.blit(self.image, self.rect)


allEnemies = pygame.sprite.Group()
a_enemies = Enemy(50,50,"right",1)
allEnemies.add(a_enemies)


#For X coords
    spawnPositions = [100,200,300,400,500,600,700]

    yCoord = 10
#creating enemies
    for n in range(5):
        for i in range(len(spawnPositions)):
            xCoord = spawnPositions[i] 
            enemy_type = random.randint(1,5)
            enemy = Enemy(xCoord, yCoord,"right", enemy_type)
            allEnemies.add(enemy)
        yCoord = yCoord + 50
#update enemy positions
        loop = 0


        for enemy in (allEnemies.sprites()):
            if enemy.rect.x < 5:
                enemy.rect.y = enemy.rect.y + 15
                enemy.Direction = "right"
            if enemy.rect.x > 750:
                enemy.rect.y = enemy.rect.y + 15
                enemy.Direction = "left"
            loop =+1

        for enemy in (allEnemies.sprites()):
            enemy.move_enemy()
#draw enemies
        allEnemies.draw(gameDisplay)

我从程序中删除了无关的代码,以使您更容易理解。我不太确定为什么要这么做,但我只是想让敌人的班级在如图所示的行中移动,但是旁边会出现一个额外的精灵。

1 个答案:

答案 0 :(得分:1)

额外的敌人是由辛格尔敌人造成的,当他们被成化时添加到该组中:

a_enemies = Enemy(50,50,"right",1)
allEnemies.add(a_enemies)

删除该代码以解决问题。