试着写了一点,试试看:
class Equip():
def __init__(self, name, hp, ad, ap, dd, dp):
self.name = name
self.hp = hp
self.ad = ad
self.ap = ap
self.dd = dd
self.dp = dp
class Skill():
def __init__(self, name, basic, adp, app):
self.name = name
self.basic = basic
self.adp = adp
self.app = app
def damage(self, ad, ap):
if ad >= ap:
type = 'physical'
damage = self.basic + (1+self.adp)*ad
else:
type = 'magical'
damage = self.basic + (1+self.app)*ap
return damage, type
class Hero():
def __init__(self, name, hp, ad, ap, dd, dp):
self.name = name
self.hp = hp
self.ad = ad
self.ap = ap
self.dd = dd
self.dp = dp
self.equipped = None
self.skilled = None
def fight(self, target):
if self.ad < target.ad: self, target = target, self
while self.hp > 0 and target.hp > 0:
self.attack(target)
self, target = target, self
return max(self,target,key=lambda x:x.hp)
def attack(self, target):
if self.skilled:
damage, type = self.skilled.damage(self.ad, self.ap)
if type == 'physical':
skill_damage = (damage*(1000-target.dd))/1000
elif type == 'magical':
skill_damage = (damage*(1000-target.dp))/1000
else:
skill_damage = 0
target.hp -= self.ad*2 + skill_damage
def learn_skill(self, skill):
self.skilled = skill
def wear_equip(self, equip):
self.equipped = equip
self.ad += equip.ad
self.ap += equip.ap
self.dd += equip.dd
self.dp += equip.dp
def drop_equip(self):
if self.equipped:
self.ad -= self.equipped.ad
self.ap -= self.equipped.ap
self.dd -= self.equipped.dd
self.dp -= self.equipped.dp
self.equipped = None