Python 显示额外的精灵?
我有一个额外的精灵被显示在我的空间入侵者计划,我为我的a级计算项目的问题 看起来是这样的: 我的代码如下所示: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
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_敌人)