Python 显示额外的精灵?

Python 显示额外的精灵?,python,pygame,Python,Pygame,我有一个额外的精灵被显示在我的空间入侵者计划,我为我的a级计算项目的问题 看起来是这样的: 我的代码如下所示: class Enemy(pygame.sprite.Sprite): def __init__(self,x,y,direction,enemy_type): pygame.sprite.Sprite.__init__(self) self.EnemyType = enemy_type self.Direction = dir

我有一个额外的精灵被显示在我的空间入侵者计划,我为我的a级计算项目的问题

看起来是这样的:

我的代码如下所示:

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)
类敌人(pygame.sprite.sprite):
定义初始(自身、x、y、方向、敌人类型):
pygame.sprite.sprite.\uuuuu init\uuuuuuu(自我)
self.EnemyType=敌人类型
方向
如果敌人类型=1:
敌人图片=pygame.image.load(“精灵\\enemy1\u 1.png”)
自身速度=1
自我评分=5分
如果敌人类型=2:
敌人图片=pygame.image.load(“精灵\\enemy1\u 1.png”)
自我评分=15分
自身速度=1
如果敌人类型=3:
敌人图片=pygame.image.load(“精灵\\enemy1\u 1.png”)
自我评分=10分
自身速度=1
如果敌人类型=4:
敌人图片=pygame.image.load(“精灵\\enemy1\u 1.png”)
自我评分=20分
自身速度=1
如果敌人类型=5:
敌人图片=pygame.image.load(“精灵\\enemy1\u 1.png”)
自我评分=25分
自身速度=1
self.image=pygame.Surface([100100])
self.image.set_颜色键(黑色)
自我镜像blit(敌人镜像,(0,0))
self.rect=self.image.get_rect()
self.rect.x=x
自校正y=y
def移动敌人(自身):
如果self.Direction==“right”:
self.rect.x+=自速度
如果self.Direction==“left”:
自校正x-=自校正速度
#画图
def提取(自身,屏幕):
screen.blit(self.image,self.rect)
allEnemies=pygame.sprite.Group()
a_敌人=敌人(50,50,“右”,1)
所有敌人。添加(一个敌人)
#对于X坐标
产卵位置=[100200300400500600700]
yCoord=10
#制造敌人
对于范围(5)内的n:
对于范围内的i(len(繁殖位置)):
xCoord=位置[i]
敌人类型=随机。随机数(1,5)
敌人=敌人(xCoord,yCoord,“右”,敌人类型)
添加(敌人)
yCoord=yCoord+50
#更新敌军阵地
循环=0
对于(allEnemies.sprites())中的敌人:
如果敌方矩形x<5:
敌方.rect.y=敌方.rect.y+15
敌人。方向=“正确”
如果敌方矩形x>750:
敌方.rect.y=敌方.rect.y+15
敌人。方向=“左”
循环=+1
对于(allEnemies.sprites())中的敌人:
敌人,移动敌人
#招兵买马
allEnemies.draw(游戏显示)

我已经从我的程序中删除了一些不相关的代码,以帮助您更容易理解。我不太清楚它为什么会这样做,但我正试图让敌方职业在如图所示的行内移动,但它们旁边会出现一个额外的精灵。

额外的敌人是由初始化时添加到组中的单个敌人造成的:

a_敌人=敌人(50,50,“右”,1)
所有敌人。添加(一个敌人)

删除该代码,以解决问题。

为什么要使用这些行<代码>a_敌人=敌人(50,50,“右”,1)所有敌人。添加(a_敌人)