Отображается дополнительный спрайт? - PullRequest
1 голос
/ 27 февраля 2020

У меня проблема с отображением дополнительного спрайта в моей программе космических захватчиков, которую я делаю для своего вычислительного проекта 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 Ответ

1 голос
/ 27 февраля 2020

Дополнительный враг вызван отдельным врагом, который добавляется в группу при инициализации:

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

Удалите этот код, чтобы решить проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...