Python 敌人的精灵在被击中之前不会出现在游戏中

Python 敌人的精灵在被击中之前不会出现在游戏中,python,python-3.x,pygame,sprite,Python,Python 3.x,Pygame,Sprite,我正在制作一个类似太空入侵者的游戏,一切都很好,但自从我使用一个列表添加了多个敌人后,他们的图像/精灵消失了,只出现了一次,然后又消失了一次。 我已经检查过了,图像文件很好,就我所能看到的而言,在“自”后面也没有发生任何异常,而且每当敌人被击中时,分数加起来也很好。 可能是什么问题 导入pygame 随机输入 输入数学 #初始化pygame pygame.init() #屏幕创建和配置 screen=pygame.display.set_模式((1024600)) #背景 background=

我正在制作一个类似太空入侵者的游戏,一切都很好,但自从我使用一个列表添加了多个敌人后,他们的图像/精灵消失了,只出现了一次,然后又消失了一次。 我已经检查过了,图像文件很好,就我所能看到的而言,在“自”后面也没有发生任何异常,而且每当敌人被击中时,分数加起来也很好。 可能是什么问题

导入pygame
随机输入
输入数学
#初始化pygame
pygame.init()
#屏幕创建和配置
screen=pygame.display.set_模式((1024600))
#背景
background=pygame.image.load('court\u level\u bg.jpg'))
#标题和图标
pygame.display.set_标题(“太空入侵者”)
#播放器配置
player\u img=pygame.image.load('Mini\u Bibi.png')
playerX=430
playerY=480
playerX_change=0
#敌方形态
敌人_img=[]
灌肠剂=[]
Enemy=[]
enemyX_change=[]
Enemy_change=[]
数量=5
对于范围内的i(敌人数量):
敌人\ img.append(pygame.image.load('Enemy1.png'))
enemyX.append(random.randint(0,1024))
Enemy.append(random.randint(5150))
enemyX_变更追加(1.5)
Enemy_变更追加(40)
#子弹形态
bullet\u img=pygame.image.load('wearm.png')
bulletX=0
bulletY=480
bulletX_变化=0
bulletY_变化=6
bullet_state=“就绪”
分数=0
#创建玩家
def播放器(x,y):
屏幕。blit(播放器(x,y))
#制造敌人
def敌人(x,y,i):
屏幕。blit(敌方图像[i],(x,y))
def火焰弹(x,y):
全球子弹头状态
bullet_state=“火灾”
屏幕光点(子弹头(x+16,y+10))
def isCollision(灌肠剂、灌肠剂、子弹剂、子弹剂):
距离=math.sqrt((math.pow(enemyX-bulletX,2))+(math.pow(enemyY-bulletY,2)))
如果距离小于27:
返回真值
其他:
返回错误
#游戏循环
scrn_stat=True
而scrn_统计:
#屏幕RGB颜色配置
屏幕填充((0,0,0))
#背景图像
屏幕光点(背景,(0,0))
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
scrn_stat=False
#X轴按键监听
如果event.type==pygame.KEYDOWN:
如果event.key==pygame.K_左:
playerX_change=-4
如果event.key==pygame.K_RIGHT:
playerX_change=4
如果event.key==pygame.K_空间:
如果bullet_状态为“就绪”:
bulletX=playerX
子弹射击(子弹,子弹)
如果event.type==pygame.KEYUP:
如果event.key==pygame.K_左或event.key==pygame.K_右:
playerX_change=0
playerX+=playerX\u更改
#玩家边界
如果playerX=945:
playerX_change=0;
#敌军运动
对于范围内的i(敌人数量):
enemyX[i]+=enemyX_变化[i]
如果enemyX[i]=945:
enemyX_变化[i]=-3
Enemy[i]+=Enemy_变化[i]
#碰撞
冲突=isCollision(enemyX[i],enemyY[i],Bullett,bulletY)
如果发生碰撞:
bulletY=480
bullet_state=“就绪”
分数+=1
打印(分数)
enemyX[i]=random.randint(0945)
enemyY[i]=random.randint(50150)
敌人(enemyX[i],enemyY[i],i)
#子弹运动
如果bulletY
敌方()
必须在每个帧中为每个敌方调用,而不是仅在发生碰撞时调用。这是一个问题:

范围内i的
(数量):
enemyX[i]+=enemyX_变化[i]
如果enemyX[i]=945:
enemyX_变化[i]=-3
Enemy[i]+=Enemy_变化[i]
#碰撞
冲突=isCollision(enemyX[i],enemyY[i],Bullett,bulletY)
如果发生碰撞:
bulletY=480
bullet_state=“就绪”
分数+=1
打印(分数)
enemyX[i]=random.randint(0945)
enemyY[i]=random.randint(50150)

#您只需在
如果碰撞
块中调用then
敌方
函数。如果玩家按下左键或右键,则
玩家X_更改设置为正/负4,然后立即设置为0,但这并不能解决问题,因为当敌方精灵可见时,现在只有1个敌方,而不是5个。。。