查看详细信息的网址
/visualize.html#mode=edit
# 小李飞刀大战伏地魔# 通过对象来实现# 小李将飞刀放入刀袋中,然后带着刀带去找伏地魔,小李飞刀从刀带拿出飞刀飞伏地魔,伏地魔受到伤害# 需要的类:# Person# -属性# -name 姓名# -hp 生命值# -kb 刀带# -方法# -带刀带(take_kb)# -放刀(put_knife_in_kb)# -取刀(get_knife)# -飞刀(fly_knife)# -受伤(掉血 injured)## knife_bag# 属性:-name 名字 -size 容量 -bag[] 放刀# 方法:# -放刀 put_in_bag# -取刀 get_knife# knife# 属性:# -name 名字# -attack 伤害# 方法:# -伤害 damageclass Knife:'''定义飞刀的类'''def __init__(self, name, attack):self.name = name # 刀名self.attack = attack # 攻击力def damage(self, other):'''造成伤害的方法'''other.injured(self.attack)def __str__(self):return f'{self.name}攻击力为 {self.attack}'# kn = Knife('小刀', 10)# print(kn)# knife_bag# 属性:-name 名字 -size 容量 -bag[] 放刀# 方法:# -放刀 put_in_bag# -取刀 get_knifeclass Knife_bag:def __init__(self, name, size):self.name = name # 名字self.size = size # 容量self.bag = [] # 装刀的容器def put_in(self, kf):'''把刀放入到袋中'''# 判断满没满if len(self.bag) < self.size:self.bag.append(kf)def get_knife(self):'''从袋中取刀'''if len(self.bag) == 0:return Nonereturn self.bag.pop()def kn_count(self):return len(self.bag)def __str__(self):if self.bag:return f'{self.name}, 容量是{self.size}, 现在有{self.kn_count()}把{self.bag[0]}'else:return f'{self.name}, 容量是{self.size}, 现在是空的'# kb = Knife_bag('NIKE刀带', 10)# kb.put_in(Knife('小刀', 10))# print(kb.get_knife())# print(kb.get_knife())# print(kb)# Person# -属性# -name 姓名# -hp 生命值# -kb 刀带# -方法# -带刀带(take_kb)# -放刀(put_knife_in_kb)# -取刀(get_knife)# -飞刀(fly_knife)# -受伤(掉血 injured)class Person(object):'''表示人的类'''def __init__(self, name):self.name = name # 名字self.hp = 100 # 生命值self.kb = None # 刀袋def put_knife_in_kb(self, kf, kb):'''将刀放入刀袋中'''kb.put_in(kf)def take_kb(self, kb):'''将刀带带到身上'''self.kb = kbdef get_knife(self):'''取刀'''if self.kb:return self.kb.get_knife()def fly_knife(self, other):# 取刀kf = self.get_knife()# 检查刀有没有if kf:# 飞kf.damage(other)def injured(self, attack):'''受伤'''self.hp -= attackif self.hp < 0:self.hp = 0def __str__(self):if not self.hp:return f'{self.name} 生命值{self.hp} 已挂'if self.kb:return f'{self.name} 生命值{self.hp} 带着 {self.kb}'return f'{self.name} 生命值{self.hp} 什么也没拿'# 创建一个人# hero = Person('李寻欢')# hero.put_knife_in_kb(Knife('小刀', 10), kb)# hero.take_kb(kb)# print(hero)# 创建两个人hero = Person('小李')npc = Person('伏地魔')# 创建刀袋kb = Knife_bag('NIKE刀带', 20)# 小李,向袋中装刀for i in range(20):hero.put_knife_in_kb(Knife('小刀', 10), kb)# 将刀袋带在身上hero.take_kb(kb)print(hero)print(npc)print('-'* 60)# 发起攻击for i in range(15):hero.fly_knife(npc)print(npc)