我设法创建了一种方法来访问列表中的每个敌人,并检测它是否被击中了……我认为……除了问题之外。我的问题是,每当我要创建多个敌人时,都会收到错误消息:“敌人不是可召唤的对象”
老实说,我不知道这里出了什么问题。 Ive查看了其他帖子,一个类似的帖子分享了一些有关“确保我不做我的对象=其他东西”的内容。但是,除了将对象添加到列表中之外,没有其他地方调用我的对象。
循环之外
Enemies = []
print("Enemies at start: ",len(Enemies))
返回“ 0”
在while循环内创建敌人
if len(Enemies) <= 5:
Enemies.append(Enemy(random.randint(0,500),-50,70,70))
#Spawns an enemy while the list is still less than 5 not really relevant and should be removed after code below is fixed.
print("Enemies at creation point: ",len(Enemies))
for Enemy in Enemies:
#Enemies.append(Enemy(random.randint(0,500),-50,70,70))
print("Created")
if Enemy.health <= 0:
Enemies.pop(Enemies.index(Enemy))
print("Destroyed")
else:
print("Skipping")
错误:“敌人”对象不可调用
我希望输出只是在屏幕上随机位置产生这些敌人。虽然5不同时存在。因此,一开始它不会再产生敌人。但是,当一个被销毁时,会产生一个新的。
答案 0 :(得分:2)
您的错误是您对类定义Enemy
和变量for Enemy in Enemies
使用相同的名称
PEP 8 -- Style Guide for Python Code中有一个很好的规则,将小写名称用作变量,将驼峰式名称(首字母大写)用作类名
所以您宁可拥有
enemies = []
print("Enemies at start:", len(enemies))
if len(enemies) <= 5:
enemies.append(Enemy(random.randint(0,500),-50,70,70))
#Spawns an enemy while the list is still less than 5 not really relevant and should be removed after code below is fixed.
print("Enemies at creation point: ", len(enemies))
for enemy in enemies:
#enemies.append(Enemy(random.randint(0,500),-50,70,70))
print("Created")
if enemy.health <= 0:
enemies.pop(enemies.index(enemy))
print("Destroyed")
else:
print("Skipping")
如您所见,我仅在Enemy
中使用Enemy(random.randint(0,500),-50,70,70)
。在其他地方,我使用enemy
顺便说一句:即使是SO的编辑者也知道此规则,它使用浅蓝色显示类Enemy
并使代码更具可读性。