python编写赛车游戏单机版_使⽤Python中OrderedDict模拟⼀
个简单的竞速游戏排名
上⼀篇,我们梳理了Python中关于字典排序的⼀些常⽤⽅法(杂乱⽆章的数据结构如何进⾏排序,简明讲述Python字典排序那些事)。其中,我们讲到了Python的collections模块中的OrderedDict类。今天,我们来使⽤它模拟⼀个简单的竞速游戏的排名的操作。
实例分析
我们知道,在现实⽣活中有很多竞速⽐赛,⽐如,汽车竞速、游戏⽐赛竞速、体育竞速等等。这类⽐赛通常是以选⼿完成⽐赛的时间来进⾏排名的,完成⽐赛需要所⽤越短,选⼿的排名越靠前。今天,我们使⽤Python来模拟⼀个竞速⽐赛。
竞速项⽬模拟
编程实现
⾸先,我们创建⼀个⽐赛选⼿列表
import string
player_lst = list(string.ascii_lowercase) # 创建26个选⼿代号列表
我们再来创建⼀个OrderedDict⽤来记录每⼀个选⼿⽐赛的耗时信息。
scroe_dict = OrderedDict()
然后,我们梳理⼀下程序要如何记录⽐较过程及每⼀个选⼿的⽐赛信息。
⽐赛开始,为每⼀名选⼿确定⼀个开始时间,程序等待每⼀名选⼿完成⽐赛,这个⽐赛过程我们就不⽤程序模拟了,直接使⽤input()等待响应,当我们按下任意键后,假设⼀个随机选⼿完成⽐赛。同时,我们将该选⼿移出⽐赛队列,记录选⼿⽐赛所⽤的时间,并将选⼿名次和⽐赛耗时计⼊到score_dict中,依次执⾏,直到⽐赛结束。
竞速游戏
程序实现如下:
# 计时开始⽐赛
start = time()
for i in range(len(player_lst)):
input('按任意键随机产⽣⼀名参赛者成绩')
# ⽐赛完成后弹出列表
pop_p = player_lst.pop(randint(0, 25 - i))
# 记录完成时间
end = time()
# 成绩添加进字典中
学习编程的单机游戏scroe_dict[pop_p] = (i + 1, end - start)
这样,我们就将选⼿⽐赛的名次和耗时信息添加到了OrderedDict字典中。
最后,我们运⾏程序后打印该字典看下结果。
for key in scroe_dict:
print('第{0}名:姓名{1},成绩为{2:.2f}'.format(scroe_dict[key][0], key, scroe_dict[key][1]))
我们来看⼀下⽐赛的具体排名信息,粘贴打印信息如下:
第1名:姓名c,成绩为3.26
第2名:姓名i,成绩为4.11
第3名:姓名x,成绩为4.82
第4名:姓名q,成绩为5.29
第5名:姓名n,成绩为5.69
第6名:姓名v,成绩为6.03
第7名:姓名h,成绩为6.31
第8名:姓名u,成绩为6.54
第9名:姓名s,成绩为6.77
第10名:姓名w,成绩为6.96
第11名:姓名m,成绩为7.15
第12名:姓名a,成绩为7.37
第13名:姓名j,成绩为7.59
。。。
成功模拟了竞速⽐赛项⽬,当然,需要说明的是选⼿排名次序是随机产⽣的,下⼀名选⼿耗时取决于我们按键的频率。
总结
我们成功模拟了⼀个竞速⽐赛,作为⼀个练⼿⼩项⽬,主要是让⼤家熟悉⼀下OrderedDict的使⽤及其优点,作为字典,它可以按照进⼊字典的次序主动对字典内元素进⾏排序,减少了排序代码量。类似项⽬,
建议使⽤OrderedDict这种数据结构。这个项⽬的⽬的是让⼤家掌握类似程序的编写⽅式,如果可以,这个思路可以运⽤到我们的竞速游戏开发中。
思路可⽤于游戏开发
后续会推出更有意思的内容,欢迎⼤家持续关注,有更好的思路请⼤家下⽅留下宝贵的意见。
转载请注明出处,百家号:Python⾼⼿养成
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论