英雄联盟游戏攻击

简略代码
class Hero:
    def __init__(self,name,lev,init_self,attack_num):
        self.name = name
        self.lev = lev
        self.init_self = init_self
        self.attack_num = attack_num
    def attack(self,obj):
        # obj.init_self = obj.init_self - self.attack_num  和下面一行作用一样
        obj.init_self -=self.attack_num
        if hasattr(self,'mana'):
            self.init_mana -= self.mana
class Master(Hero):
    def __init__(self,name,lev,init_self,attack_num,init_mana,mana):
        super().__init__(name,lev,init_self,attack_num)
        self.init_mana = init_mana
        self.mana = mana
class Soldier(Hero):
    pass
rz = Master('瑞兹',1,800,70,100,12)
gl = Soldier('盖伦',1,950,80)
print(rz.init_mana)
print(gl.init_self)
rz.attack(gl)
print('*' * 20)
print(rz.init_mana)
print(gl.init_self)
详细解释
#hasattr(self,'mana'):作用是判断是否存在mana蓝值,用mana就是法师,
# 然后self.init_mana -= self.mana的作用就是总蓝量—耗蓝量,
# Master控制,这里是法师,class Master(Hero):是子类,继承hero的所有方法属性
# 在def __init__中我们又加了总蓝量和耗蓝量,又用supper().__init__
# 接受父类的所有方法,然后又添加实例对象属性(总蓝量和耗蓝量)
# Soldier是战士,同法师一样,没有添加内容,默认继承hero父类所有方法属性
# rz = Master('瑞兹', 1, 790, 69, 90, 10)传参
# gl = Soldier('盖伦', 1, 950, 80)传参,格式按照hero父类,
# print(rz.init_mana) 打印rz攻击前蓝量,print(gl.init_self)打印gl攻击前血量
# rz.attack(gl)开始攻击,执行attack(),并传参gl,给obj。obj血量为其
# obj总血量-法师攻击力(self.attack_num),判断为法师后,法师总蓝量为
# 法师原始蓝量-耗蓝量,到这就执行完攻击了,然后打印输出攻击结果
# print(rz.init_mana)
# print(gl.init_self)结果如下
# 100
# 950
# ********************
# 88
# 880
=====================升级版======================
class Hero:
    def __init__(self,name,lev,init_self,attack_num):
        self.name = name
        self.lev = lev
        self.init_self = init_self
        self.attack_num = attack_num
    def attack(self,obj):
        # obj.init_self = obj.init_self - self.attack_num  和下面一行作用一样
        obj.init_self -=self.attack_num
        if hasattr(self,'mana'):
            self.init_mana -= self.mana
    def equip(self):
        #   random
        self.init_self += 1000
        self.attack_num += 400
class Master(Hero):
    def __init__(self,name,lev,init_self,attack_num,init_mana,mana):
        super().__init__(name,lev,init_self,attack_num)
        self.init_mana = init_mana
        self.mana = mana
class Soldier(Hero):
    pass
rz = Master('瑞兹',1,800,70,100,12)
gl = Soldier('盖伦',1,950,80)
# print(rz.init_mana)
# print(gl.init_self)
# rz.attack(gl)
# print('*' * 20)
# print(rz.init_mana)
# print(gl.init_self)
print('瑞兹初始蓝量-->',rz.init_mana)
print('盖伦初始血量-->',gl.init_self)
gl.equip()
print('盖伦装备加血-->',gl.init_self)
print('盖伦装备加攻击-->',gl.attack_num)
rz.attack(gl)
print('战斗后瑞兹剩余蓝量-->',rz.init_mana)
print('战斗后盖伦剩余血量-->',gl.init_self)
#瑞兹初始蓝量--> 100
#盖伦初始血量--> 950
#盖伦装备加血--> 1950
#盖伦装备加攻击--> 480
#战斗后瑞兹剩余蓝量--> 88
#战斗后盖伦剩余血量--> 1880
=========================================
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,267评论 4 61
  • 原文链接 《Python数据分析》(Python for Data Analysis, 2nd Edition)第...
    李绍俊阅读 8,599评论 0 5
  • 我早就叮嘱过你 要把家人的平安与幸福放在心上 你回复我你不会忘 对于我来说,记忆里你总是在忙 留给我独守月光 我们...
    乖乖女妈咪阅读 295评论 0 0
  • 来007阵营快一年了,最近由于琐事缠身,索性请假一个月,没想到,事依然还在,续起作业难度增加了不少,有道是:下山容...
    林山水阅读 745评论 0 0
  • 恍恍惚惚,过了三十多个年头。 在这三十个岁月里,虚度的光阴占了多半,究其原因,大概是得过且过造的孽。 新的一年,如...
    怪物寄语阅读 183评论 0 0