Python课程设计 第 23 / 52 篇

名称空间-参考答案

程序设计:

简易王者荣耀
1.设计王者荣耀中的英雄类,每个英雄对象可以对其他英雄对象使用技能
2.英雄具备以下属性英雄名称,等级,血量和Q_hurt,W_hurt,E_hurt 三个伤害属性,表示各技能的伤害量
3.具备以下技能Q W E三个技能都需要一个敌方英雄作为参数,当敌方血量小于等于0时输出角色死亡
"""
简易王者荣耀
1.设计王者荣耀中的英雄类,每个英雄对象可以对其他英雄对象使用技能
2.英雄具备以下属性英雄名称,等级,血量和Q_hurt,W_hurt,E_hurt 三个伤害属性,表示各技能的伤害量
3.具备以下技能Q W E三个技能都需要一个敌方英雄作为参数,当敌方血量小于等于0时输出角色死亡
"""
import random

class Hero:
    def __init__(self, name, q_hurt=30, w_hurt=50, e_hurt=70, level=1, life=100):
        self.name = name
        self.level = level
        self.life = life
        self.is_alive = True
        self.Q_hurt = q_hurt
        self.W_hurt = w_hurt
        self.E_hurt = e_hurt
        self.kill_count = 0

    def attack(self, skill, enemy):
        if self.name == enemy.name:
            return
        if enemy.life >= 0:
            enemy.life -= skill
        if enemy.life <= 0:
            enemy.life = 0
            enemy.is_alive = False
            self.kill_count += 1
            print('{}杀死{},击杀数为{}'.format(self.name, enemy.name, self.kill_count))
            return enemy.is_alive, self.kill_count

    def elevate(self):
        if self.kill_count % 5 == 0 and self.kill_count != 0:
            self.level += 1
            self.Q_hurt += 10
            self.W_hurt += 10
            self.E_hurt += 10
            print('{} 等级提升为 {}'.format(self.name, self.level))
            return self.level

obj1 = Hero('小1')
obj2 = Hero('小2')
obj3 = Hero('小3')
obj4 = Hero('小4')
obj5 = Hero('小5')
skill_dict = {
    'q_hurt': 30,
    'w_hurt': 50,
    'e_hurt': 70
}

for i in range(1000):
    random_obj1 = random.choice([obj1, obj2, obj3, obj4, obj5])
    random_obj2 = random.choice([obj1, obj2, obj3, obj4, obj5])
    random_skill = random.choice([skill_dict['q_hurt'], skill_dict['w_hurt'], skill_dict['e_hurt']])
    random_obj1.attack(random_skill, random_obj2)
    random_obj1.elevate()