这几天学习了类对象!听起来不是很难写作业的时候却直接懵逼了,因为自身实力不足导致很多想法没有实现
看了老师的意见感觉得到了莫大的安慰--------
思考了很久却又很多功能没有实现的作业
"""
在之前设计的游戏英雄类中定义以下内容:
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
闲暇时间有空我要多研究研究,感觉还蛮有趣的!
评论 (0)