我正在制作基于文本的角色扮演游戏,我认为一次拥有超过2名战士会更好。
所以我的战斗功能中有attack()
功能。我想让我的程序用攻击者的名字来调用这个函数,比如attack("player")
。这与所有在战斗中的人按顺序依赖于他们的速度(这是一个整数变量)。
我知道可以这样做:
if playerspeed<enemyspeed:
attack(enemyname)
attack("player")
if playerspeed>enemyspeed:
attack("player")
attack(enemyname)
但如果有例如四个战士,这样做会很痛苦。那么有什么明智的方法可以做到这一点吗?
答案 0 :(得分:2)
您可以将自己的名字放在一个列表中,然后按攻击速度对其进行排序:
fighters = [(playerspeed, 'player'), (enemyspeed, enemyname)]
fighters.sort()
for speed, fighter in fighters:
attack(fighter)
如果您为玩家和敌人使用了类,则可以将其速度存储在对象的属性中并按该属性排序,而不必使用信息创建元组:
fighters = [player, enemy]
fighters.sort(key=lambda f: f.speed)
for fighter in fighters:
fighter.attack(fighters)
其中对象也有attack()
个方法;在这里,我假设也许这种方法想知道谁参与了战斗。