【发布时间】:2019-04-29 19:30:52
【问题描述】:
我正在制作一个游戏。现在游戏需要生成特定数量的特定类型的敌人。为了优化,我决定将它们全部放入一个列表/数组中。虽然我完全知道如何检查所述特定对象是否在数组中,但我不确定如何检查其中有多少。游戏之前按预期运行,但那是在我尝试将其放入一个列表之前。
我目前正在尝试使用“检查”模块来执行此操作。 我已经尝试过使用 for 循环。即
for enemy in entities:
if isinstance(enemy,Enemy)#"Enemy" is a class
#do something worthwhile
名单
Entities = []
控制生成的代码。
if len(entities) == 0:
global enemypresent,enemyApresent,alienApresent
enemypresent = 0
enemyApresent = 0
alienApresent = 0
for enemy in entities:
if isinstance(enemy,Enemy):
enemypresent += 1
if isinstance(enemy,EnemyAttack):
enemyApresent += 1
#if enemypresent < 5:
# entities.append(Enemy(random.randint(0,WIDTH-70),-50,70,70))
if enemyApresent == 0:
if random.randint(0,100) >= 75:
entities.append(AlienAttack(random.randint(0,WIDTH-70),-50,70,70))
else:
entities.append(EnemyAttack(random.randint(0,WIDTH-70),-50,70,70))
我希望代码检查列表中有多少特定对象。即“实体列表中有 4 个常规敌人” “实体列表中有 5 个正在攻击的敌人”等。
也欢迎任何替代品。
【问题讨论】:
-
您可以创建许多列表 -
entities、enemy_entities、enemyattack_entities,然后您可以创建len(enemy_entities)- 但您必须自己从所有列表中插入和删除项目。或者您可以使用pygame.sprite.Group,您可以将相同的对象保留在不同的组中,即。all_group,enemy_group,enemyattack_group,然后你可以做len(enemy_group)。您必须手动将项目添加到组中,但如果您杀死项目,那么它将自动从所有组中删除。
标签: arrays class object pygame python-3.7