你好!
因为题目比较有趣就尝试写了一下,代码如下:
若有帮助,请采纳!
注:因为写得比较匆忙还没优化,所以有点长
class equip:
def __init__(self, name=None, hp=0, ad=0, ap=0, dd=0, dp=0):
self.name = name
self.hp = hp
self.ad = ad
self.ap = ap
self.dd = dd
self.dp = dp
def attribute_list(self):
return [self.hp, self.ad, self.ap, self.dd, self.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:
Attack_type = '物理攻击'
damage = self.basic + (1 + self.adp) * ad
else:
Attack_type = '魔法攻击'
damage = self.basic + (1 + self.app) * ap
return damage, Attack_type
class hero():
list = [0, 0, 0, 0, 0]
def __init__(self, name, hp=0, ad=0, ap=0, dd=0, dp=0):
self.name = name
self.hp = hp
self.ad = ad
self.ap = ap
self.dd = dd
self.dp = dp
self.equipment()
def equipment(self, list= list):
self.hp = self.hp + list[0]
self.ad = self.ad + list[1]
self.ap = self.ap + list[2]
self.dd = self.dd + list[3]
self.dp = self.dp + list[4]
def fight(self,target, hero_damage, target_damage):
while True:
if self.ad > target.ad:
target.hp -= hero_damage
if target.hp <= 0:
print('hero胜利!')
break
else:
self.hp -= target_damage
if self.hp <= 0:
print('target胜利!')
break
def attack(self, damage, Attack_type, target):
if Attack_type == '物理攻击':
hero_damage = ((self.ad * 2 + damage) * (1000 - target.dd)) / 1000 + \
((self.ap * 2) * (1000 - target.dp)) / 1000
else:
hero_damage = ((self.ad * 2) * (1000 - target.dd)) / 1000 + \
((self.ap * 2 + damage) * (1000 - target.dp)) / 1000
return hero_damage
if __name__ == "__main__":
Equip = equip('初始木棍',4,5,0,2) # 英雄装备属性
Hero = hero('小米',200,18,0,1,1) #英雄的基本属性
Hero.equipment(Equip.attribute_list()) # 英雄装上装备
Hero_skill = skill('当头一棒', 8, 2, 0) # 英雄使用的技能
target_Equip = equip('奇怪的棒棒糖', 4, 4, 2, 2) # 敌人装备的属性
target = hero('敌人', 250, 30, 22, 3, 3) # 定义敌人的属性
target.equipment(target_Equip.attribute_list()) # 敌人装上装备
target_skill = skill('无情狗叫', 12, 3, 8) # 敌人使用的技能
damage, Attack_type = Hero_skill.damage(Hero.ad, Hero.ap) # 返回技能的伤害 & 技能的类型
hero_damage = Hero.attack(damage, Attack_type, target) # 英雄每次给敌人造成的总伤害
tdamage,target_type = target_skill.damage(target.ad, target.ap) # 返回敌人技能的伤害和属性
target_damage = target.attack(tdamage, target_type, Hero) # 敌人每次给英雄造成的总伤害
# 战斗开始
Hero.fight(target, hero_damage, target_damage)
结果如下:
这里有一个相同问题: 请查看是否对问题有帮助~
https://ask.csdn.net/questions/7723224