练习1 _ 类和对象

≯℡__Kan透↙ 提交于 2019-11-30 23:54:38

"""
aggressivity 攻击力
armor 护甲
damage_value 伤害值
"""
class Riven:
camp = 'Noxus'

def __init__(self, nickname,
             aggressivity=200,
             life_value=600,
             money=1000,
             armor=10):
    self.nickname = nickname
    self.aggressivity = aggressivity
    self.life_value = life_value
    self.money = money
    self.armor = armor

def attack(self, enemy):
    if enemy.life_value <= 0:
        return True

    if self.life_value:
        damage_value = self.aggressivity - enemy.armor  # 一次攻击伤害值
        enemy.life_value -= damage_value  # 被攻击一次后剩余的生命值
        print(
            f'''
            [{self.nickname}]攻击:[{enemy.nickname}]
            [{enemy.nickname}]掉血:[{damage_value}]
            还剩血量:[{enemy.life_value}]            
        ''')

class Garen:
camp = 'Demacia'

def __init__(self, nickname,
             aggressivity=250,
             life_value=500,
             money=1100,
             armor=5):
    self.nickname = nickname
    self.aggressivity = aggressivity
    self.life_value = life_value
    self.money = money
    self.armor = armor

def attack(self, enemy):
    if enemy.life_value <= 0:
        return True

    if self.life_value:
        damage_value = self.aggressivity - enemy.armor  # 一次攻击伤害值
        enemy.life_value -= damage_value  # 被攻击一次后剩余的生命值
        print(
            f'''
            [{self.nickname}]攻击:[{enemy.nickname}]
            [{enemy.nickname}]掉血:[{damage_value}]
            还剩血量:[{enemy.life_value}]            
        ''')

class BlackCleaver:
def init(self, price=500, aggrev=10, life_value=100):
self.price = price
self.aggrev = aggrev
self.life_value = life_value

def update(self, obj):
    obj.money -= self.price  # 减钱
    obj.aggressivity += self.aggrev  # 加攻击
    obj.life_value += self.life_value  # 加生命值

def fire(self, obj):  # 主动攻击技能,喷火,烧死对方
    obj.life_value -= 1000  # 火烧得攻击力定为1000

r1 = Riven('飞灵')
g1 = Garen('盖轮')
b1 = BlackCleaver()

print(r1.aggressivity, r1.life_value, r1.money)

if r1.money > b1.price:

r1.b1 = b1

b1.update(r1)

print(r1.aggressivity, r1.life_value, r1.money)

print(g1.aggressivity, g1.life_value, g1.money)

r1.attack(g1) # 普通攻击

print(g1.life_value)

r1.b1.fire(g1) # 用装备攻击

print(g1.life_value) # g1的生命值小于等于0就死了

while True:
flag1 = r1.attack(g1)
if flag1:
print(f'{g1.nickname}已挂')
break

flag2 = g1.attack(r1)
if flag2:
    print(f'{r1.nickname}已挂')
    break
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!