这几天学习了类对象!听起来不是很难写作业的时候却直接懵逼了,因为自身实力不足导致很多想法没有实现

看了老师的意见感觉得到了莫大的安慰——–

思考了很久却又很多功能没有实现的作业

 

"""
在之前设计的游戏英雄类中定义以下内容:

1. 属性:
   - 定义一个 类属性 列表 `top_score_list` 记录游戏的 最高分排行榜
   - 定义一个 实例属性 `player_name` 记录 当前游戏的玩家姓名
2. 方法:
   - 类方法 `show_help` 显示游戏帮助信息

     ```
     飞机大战小游戏
     飞行一次速度加2
     每次改变大小速度减1
     ```

   - 类方法 `show_top_score` 显示历史最高分

     打印游戏榜的历史最高分

   - 实例方法*`start_game` 开始当前玩家的游戏

     打印 `某某玩家开始游戏`
3. 主程序步骤
   - 1) 查看帮助信息 ——main-?点错了-来,开始游戏吧
   - 2) 创建游戏对象,开始游戏——input对象
   - 3) 查看最高分排行榜 ——自动执行-尝试实现倒计时
   - 4) 查看正在玩游戏的人”——所以这个游戏究竟玩啥?
"""
import time

play_list = []


class Hero:
    top_score_list = [2, 3, 0, 0, 1]  # 假装有数据
    top_score_dict = {"岛风": 3}

    @classmethod
    def show_top_score(cls):
        top = max(zip(cls.top_score_dict.keys(), cls.top_score_dict.values()))
        return "最高纪录玩家为:<{}>,他的分数为:{}。".format(top[0], top[1])

    def __init__(self, name, high, width, player, speed=200):
        self.name = name
        self.high = high
        self.width = width
        self.speed = speed
        self.player_name = player

    def start_game(self):  # 假装是个游戏函数
        print("\n这是一个美好的下午,魔王出现在了世界边界,在不可视界限的加护下,勇者们出发了!")
        time.sleep(1)
        self.data_out()
        print("---当前游戏分数排行榜---")
        for i in sorted(Hero.top_score_list, reverse=True):
            print(i)
        print('---------------------')
        time.sleep(1)
        print(Hero.show_top_score())
        time.sleep(1)
        self.fly()

    def fly(self):
        print("{}换上了新鞋。\n".format(self.name))
        self.speed += 2

    def change_size(self):
        print("叮!{} level up !\n".format(self.name))
        self.high += 1
        self.width += 1

    def data_out(self):  # 输出函数
        print("玩家昵称:{}\t英雄名称:{}\n攻击力:{}\t防御力:{}\n移动速度:{}".format(self.player_name, self.name, self.high, self.width,
                                                                 self.speed))  # 定义高为攻击力,宽为防御力,速度为移动速度


class Tina(Hero):
    def __init__(self, name, high, width, player, speed=230, blood=1000):
        super().__init__(name, high, width, player, speed)
        self.blood = blood

    def start_game(self):  # 假装是个游戏函数
        print("\n这是一个美好的下午,魔王出现在了世界边界,在不可视界限的加护下,勇者们出发了!")
        time.sleep(1)
        self.data_out()
        print("---当前游戏分数排行榜---")
        for i in sorted(Hero.top_score_list, reverse=True):
            print(i)
        print('---------------------')
        time.sleep(1)
        print(Hero.show_top_score())
        time.sleep(1)
        self.fight()

    def fight(self):
        print("缇娜发动了技能射击,对敌方造成大量伤害,HP-10!\n")
        self.blood -= 10

    def data_out(self):  # 输出函数
        print("玩家昵称:{}\t英雄名称:{}\n攻击力:{}\t防御力:{}\n移动速度:{}".format(self.player_name, self.name, self.high, self.width,
                                                                 self.speed, self.blood))


class Shino(Tina):
    def __init__(self, name, high, width, player, speed=190, blood=1000, energy=100):
        super().__init__(name, high, width, player, speed, blood)
        self.energy = energy

    def start_game(self):  # 假装是个游戏函数
        print("\n这是一个美好的下午,魔王出现在了世界边界,在不可视界限的加护下,勇者们出发了!")
        time.sleep(1)
        self.data_out()
        print("---当前游戏分数排行榜---")
        for i in sorted(Hero.top_score_list, reverse=True):
            print(i)
        print('---------------------')
        time.sleep(1)
        print(Hero.show_top_score())
        time.sleep(1)
        self.hecate()

    def fight(self):
        print("诗乃发动了技能狙击,对敌方造成大量伤害,HP-10!MP+10!\n")
        self.blood -= 10
        self.energy += 10
        if self.energy > 100:
            self.energy = 100

    def hecate(self):
        if self.energy == 100:
            print("诗乃消耗了全部魔力唤醒了黑卡蒂,能力大幅上升!HP+50,攻击力提升了!")
            self.blood += 50
            if self.blood > 1000:
                self.blood = 1000
            self.energy = 0
            self.high += 5
        else:
            print("诗乃能量值不足,无法发动技能:唤醒黑卡蒂!\n")

    def data_out(self):  # 输出函数
        print("玩家昵称:{}\t英雄名称:{}\n攻击力:{}\t防御力:{}\n移动速度:{}".format(self.player_name, self.name, self.high, self.width,
                                                                 self.speed, self.blood,
                                                                 self.energy))


def play_score(i):  # 懒得算分函数
    if int(i) == 1:
        return 5
    elif int(i) == 2:
        return 7
    elif int(i) == 3:
        return 1
    elif int(i) == 4:
        return 10
    elif int(i) == 5:
        return 3
    else:
        return 0


def ending(end_name, end_score):  # 实际上没有意义的写分、判断函数
    score_temp = play_score(end_score)
    try:
        if int(Hero.top_score_dict[end_name]) >= int(score_temp):
            del (play_list[0:])  # 假装要删除数据
            return score_temp
        else:
            Hero.top_score_dict[end_name] = score_temp
            Hero.top_score_list.append(score_temp)
            del (play_list[0:])
            return score_temp
    except:
        Hero.top_score_dict[end_name] = score_temp
        Hero.top_score_list.append(score_temp)
        del (play_list[0:])  # 此处可以优化为通过len()来选择写入/删除数据
        return score_temp


swich = {
    '1': "韩信负剑而行,发现前方有一棵杨柳树,路过时天上射下一柄光剑,韩信被击败了。游戏结束。",
    '2': "阿狸把自己伪装成普通人,而这位占卜巫女也装着自己的秘密。她们都在隐藏什么?此时一道暗红色的光出现,阿里失去了意识。游戏结束。",
    '3': "李白游山玩水,吟诗作对,忘记了与魔物战斗。游戏结束。",
    '4': "但由于帕切斯计划的败露,世界各国政府希望掩埋真相,UNION与韩政府对红狼小队进行了通缉。为了避风头,游戏结束。",
    '5': "但是冰之狙击手诗乃忙于参加第四届BOB大赛,先行告退了,游戏结束。"
}
score = 0
Name = input("请输入游戏昵称:")
play_list.append(Name)
han_xin = Hero('韩信', 15, 20, Name)
a_li = Hero('阿狸', 20, 20, Name)
li_bai = Hero('李白', 19, 19, Name)
tina = Tina("缇娜", 27, 12, Name)
shino = Shino("诗乃", 32, 10, Name)
# while 1:
#     i = input("请选择英雄:\n1、韩信\n2、阿狸\n3、李白\n4、缇娜\n5、诗乃\n")
#     if int(i) == 1 or 2 or 3 or 4 or 5:   语法错误
#         break
while 1:
    i = input("请选择英雄:\n1、韩信\n2、阿狸\n3、李白\n4、缇娜\n5、诗乃\n")
    if int(i) == 1 or int(i) == 2 or int(i) == 3 or int(i) == 4 or int(i) == 5:
        break

print("当前游戏玩家为:{}".format(play_list[-1]))
time.sleep(1)
if int(i) == 1:
    han_xin.start_game()
    print(swich[i])
elif int(i) == 2:
    a_li.start_game()
    print(swich[i])
elif int(i) == 3:
    li_bai.start_game()
    print(swich[i])
elif int(i) == 4:
    tina.start_game()
    print(swich[i])
elif int(i) == 5:
    shino.start_game()
    print(swich[i])
time.sleep(1)
print("你的得分为:{}".format(ending(play_list[-1], i)))
time.sleep(1)
Hero.show_top_score()

还学习了飞机大战项目,说难也不难,说简单也不简单,就像道理我都懂,但是我不会一样23333

闲暇时间有空我要多研究研究,感觉还蛮有趣的!