同じ 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)
探索関数の一部として、呼び出されたときに敵に遭遇する機会を提供します。
攻撃関数は、プレイヤーによって呼び出されると、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])
attack 関数は Player クラスの一部であり、do_damage は Player クラスで呼び出される Character クラスの一部です。
参考までに、enemy_dict リストは次のとおりです。
enemy_dict = [
("sprite", 5),
("thief", 10)
]
私が持っているもので、プレイヤーが敵を攻撃できるようにするにはどうすればよいですか?