python编写赛车游戏单机版_使用Python中OrderedDict模拟一个简单的竞速游戏排名
上一篇,我們梳理了Python中關(guān)于字典排序的一些常用方法(雜亂無章的數(shù)據(jù)結(jié)構(gòu)如何進(jìn)行排序,簡明講述Python字典排序那些事)。其中,我們講到了Python的collections模塊中的OrderedDict類。今天,我們來使用它模擬一個(gè)簡單的競速游戲的排名的操作。
實(shí)例分析
我們知道,在現(xiàn)實(shí)生活中有很多競速比賽,比如,汽車競速、游戲比賽競速、體育競速等等。這類比賽通常是以選手完成比賽的時(shí)間來進(jìn)行排名的,完成比賽需要所用越短,選手的排名越靠前。今天,我們使用Python來模擬一個(gè)競速比賽。
競速項(xiàng)目模擬
編程實(shí)現(xiàn)
首先,我們創(chuàng)建一個(gè)比賽選手列表
import string
player_lst = list(string.ascii_lowercase) # 創(chuàng)建26個(gè)選手代號列表
我們再來創(chuàng)建一個(gè)OrderedDict用來記錄每一個(gè)選手比賽的耗時(shí)信息。
scroe_dict = OrderedDict()
然后,我們梳理一下程序要如何記錄比較過程及每一個(gè)選手的比賽信息。
比賽開始,為每一名選手確定一個(gè)開始時(shí)間,程序等待每一名選手完成比賽,這個(gè)比賽過程我們就不用程序模擬了,直接使用input()等待響應(yīng),當(dāng)我們按下任意鍵后,假設(shè)一個(gè)隨機(jī)選手完成比賽。同時(shí),我們將該選手移出比賽隊(duì)列,記錄選手比賽所用的時(shí)間,并將選手名次和比賽耗時(shí)計(jì)入到score_dict中,依次執(zhí)行,直到比賽結(jié)束。
競速游戲
程序?qū)崿F(xiàn)如下:
# 計(jì)時(shí)開始比賽
start = time()
for i in range(len(player_lst)):
input('按任意鍵隨機(jī)產(chǎn)生一名參賽者成績')
# 比賽完成后彈出列表
pop_p = player_lst.pop(randint(0, 25 - i))
# 記錄完成時(shí)間
end = time()
# 成績添加進(jìn)字典中
scroe_dict[pop_p] = (i + 1, end - start)
這樣,我們就將選手比賽的名次和耗時(shí)信息添加到了OrderedDict字典中。
最后,我們運(yùn)行程序后打印該字典看下結(jié)果。
for key in scroe_dict:
print('第{0}名:姓名{1},成績?yōu)閧2:.2f}'.format(scroe_dict[key][0], key, scroe_dict[key][1]))
我們來看一下比賽的具體排名信息,粘貼打印信息如下:
第1名:姓名c,成績?yōu)?.26
第2名:姓名i,成績?yōu)?.11
第3名:姓名x,成績?yōu)?.82
第4名:姓名q,成績?yōu)?.29
第5名:姓名n,成績?yōu)?.69
第6名:姓名v,成績?yōu)?.03
第7名:姓名h,成績?yōu)?.31
第8名:姓名u,成績?yōu)?.54
第9名:姓名s,成績?yōu)?.77
第10名:姓名w,成績?yōu)?.96
第11名:姓名m,成績?yōu)?.15
第12名:姓名a,成績?yōu)?.37
第13名:姓名j,成績?yōu)?.59
。。。
成功模擬了競速比賽項(xiàng)目,當(dāng)然,需要說明的是選手排名次序是隨機(jī)產(chǎn)生的,下一名選手耗時(shí)取決于我們按鍵的頻率。
總結(jié)
我們成功模擬了一個(gè)競速比賽,作為一個(gè)練手小項(xiàng)目,主要是讓大家熟悉一下OrderedDict的使用及其優(yōu)點(diǎn),作為字典,它可以按照進(jìn)入字典的次序主動對字典內(nèi)元素進(jìn)行排序,減少了排序代碼量。類似項(xiàng)目,建議使用OrderedDict這種數(shù)據(jù)結(jié)構(gòu)。這個(gè)項(xiàng)目的目的是讓大家掌握類似程序的編寫方式,如果可以,這個(gè)思路可以運(yùn)用到我們的競速游戲開發(fā)中。
思路可用于游戲開發(fā)
后續(xù)會推出更有意思的內(nèi)容,歡迎大家持續(xù)關(guān)注,有更好的思路請大家下方留下寶貴的意見。
轉(zhuǎn)載請注明出處,百家號:Python高手養(yǎng)成
總結(jié)
以上是生活随笔為你收集整理的python编写赛车游戏单机版_使用Python中OrderedDict模拟一个简单的竞速游戏排名的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 冻库多少钱啊?
- 下一篇: 雅音宫羽是谁画的呢?