李白和貂蝉打主宰和小兵
要求:
实验一:
主要实现功能:
A、模拟场景,某个英雄与某个怪物打斗,英雄可以对怪物释放技能,怪物也可以对英雄释放技能,双方每释放一个技能输出对方的血量值
B、模拟场景,两个英雄与某个怪物打斗,英雄可以对怪物释放技能,怪物也可以对英雄释放技能,
双方每释放一个技能输出对方的血量值(考虑怪物释放的技能是指向性技能还是群伤技能)
1、设计一个Hero类作为基类,基类中有哪些属性和方法自行定义
2、设计一个Libai类作为Hero类的派生类,类中有哪些属性和方法自行定义,设计一个Diaochan类作为Hero类的派生类,类中有哪些属性和方法自行定义
3、设计一个Gost类作为一个基类,基类中有哪些属性和方法自行定义
4、设计一个Xiaobing类作为派生类
设计一个Drag类作为派生类
5、设计一个技能类
import random as rn # 引入随机数
class Skill(object):
def __init__(self, name, value):
self.name = name
self.value = value
class Hero(object):
def __init__(self, name, blood, skill):
self.name = name
self.blood = blood
self.skill = skill
def attack(self, gost):
i = rn.randint(0, 1)
gost.blood -= self.skill[i].value
if gost.blood < 0:
gost.blood = 0
print(self.name, "使用", self.skill[i].name, "攻击了",
gost.name, "造成了", self.skill[i].value, ,
gost.name, "剩余", gost.blood, )
def has_living(self):
if self.blood > 0:
return True
return False
class Libai(Hero):
def __init__(self):
self.a = Skill('普通攻击', 20)
self.s = Skill('青莲剑歌', 40)
self.skill = [self.a, self.s]
super().__init__('李白', 100, self.skill)
def get_skill(self):
return self.a
class Diaochan(Hero):
def __init__(self):
self.a = Skill('普通攻击', 10)
self.s = Skill('落-红雨', 50)
self.skill = [self.a, self.s]
super().__init__('貂蝉', 100, self.skill)
def get_skill(self):
return self.a
class Gost(object):
def __init__(self, name, blood, power):
self.name = name
self.blood = blood
self.power = power
def attack(self, hero):
hero.blood -= self.power
if hero.blood < 0:
hero.blood = 0
print(self.name, "攻击了", hero.name, "造成了", self.power,
, hero.name, "剩余", hero.blood, )
def has_living(self):
if self.blood > 0:
return True
return False
class Xiaobing(Gost):
def __init__(self):
super().__init__("小兵", 100, 5)
class Drag(Gost):
def __init__(self):
super().__init__("大龙", 200, 20)
self.angry = 40
def attack(self, hero):
if self.blood < 100:
hero.blood -= self.angry
else:
hero.blood -= self.power
if hero.blood < 0:
hero.blood = 0
if self.blood < 100:
print(self.name, "使用主宰之怒,攻击了", hero.name, "造成了",
self.angry, , hero.name, "剩余", hero.blood, )
else:
print(self.name, "攻击了", hero.name, "造成了",
self.power, , hero.name, "剩余", hero.blood, )
if __name__ == '__main__':
lb = Libai()
dc = Diaochan()
xb = Xiaobing()
drag = Drag()
# 这是李白和大龙的战斗
print(lb.name + ' 的初始血量:' + str(lb.blood))
print(drag.name + ' 的初始血量:' + str(drag.blood))
while lb.has_living() and drag.has_living():
if lb.has_living() and drag.has_living():
lb.attack(drag)
if lb.has_living() and drag.has_living():
drag.attack(lb)
if lb.has_living():
print(lb.name + ' 胜利!')
elif drag.has_living():
print(drag.name + ' 胜利!')
else:
print("同归于尽")
print("游戏结束")
# 下面代码是李白和小兵的战斗
# print(lb.name + ' 的初始血量:' + str(lb.blood))
# print(xb.name + ' 的初始血量:' + str(xb.blood))
#
# while lb.has_living() and xb.has_living():
# if lb.has_living() and xb.has_living():
# lb.attack(xb)
# if lb.has_living() and xb.has_living():
# xb.attack(lb)
#
# if lb.has_living():
# print(lb.name + ' 胜利!')
# elif xb.has_living():
# print(xb.name + ' 胜利!')
# else:
# print("同归于尽")
# print("游戏结束")
还有各种不同的英雄和怪物的打法,只需修改变量和参数就好了