英雄联盟游戏攻击

简略代码
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
=========================================

你可能感兴趣的:(英雄联盟游戏攻击)