作为同一个 RPG 的一个单独部分,我在攻击敌人时遇到了问题。函数 do_damage 从enemy_dict 列表中获取名称/值(健康)并计算造成的伤害。
def do_damage(self, enemy):
damage = min(
max(randint(0, self.health) - randint(0, self.enemy[1]), 0), self.enemy[1])
self.enemy[1] = self.enemy[1] - damage
if damage == 0:
print "The %s evades %s's attack." % (self.enemy[0], self.name)
else:
print "%s hurts the %s! -%dhp" % (self.name, self.enemy[0], damage)
return enemy[1] <= 0
self.enemy 是这样分配的:
self.enemy = random.choice(enemy_dict)
作为 explore 函数的一部分,当被调用时,它提供了一个遇到敌人的机会。
当玩家调用攻击函数时,会调用 do_damage 函数。
def attack(self):
if self.state != 'fight':
print"%s swings wildly at nothing." % self.name
else:
if self.do_damage(self.enemy[1]):
print "%s slaughters %s!" % (self.name, self.enemy[0])
self.enemy = None
self.state = 'normal'
eloot = randint(0,25)
self.loot = self.loot + eloot
qxp = randint(0,30)
self.xp = qxp + self.xp
print "You find %d gold on the corpse." %(eloot)
stimp = randint(0,4)
if stimp == 0:
self.stim = self.stim + 1
print "You find a potion!"
else:
self.enemy_attacks()
def enemy_attacks(self):
if self.enemy[0].do_damage(self): print "%s was disemboweled by %s!" % (self.name, self.enemy[0])
攻击函数是 Player 类的一部分,而 do_damage 是 Character 类的一部分,在 Player 类中调用。
作为参考,这里是enemy_dict 列表:
enemy_dict = [
("sprite", 5),
("thief", 10)
]
我如何让玩家用我所拥有的攻击敌人?