您當前的位置:首頁 > 舞蹈

用Python寫個迷你版 狼人殺遊戲

作者:由 信盈達馮老師 發表于 舞蹈時間:2018-10-12

原創:Leoxin菜鳥學Python

狼人殺估計很多小夥伴都玩過,是一個非常有趣的遊戲!以前公司團建的時候,經常一堆人圍一桌玩,心理素質比較高的同學會玩的比較好,有的時候一玩會從下午玩到晚上,真的非常懷念那段時光,今天我們用Python寫一個簡易版的狼人殺,非常有意思,適合小白入門Python。

狼人殺的角色,我們這裡只模擬三種 狼人,獵人和村民

遊戲的邏輯,我們這裡做了處理,弄的很簡單,隨機發牌,用一個死迴圈,讓使用者一直玩這個遊戲時:

列印遊戲的說明;

建立一個狼人殺卡牌的列表;

在3張卡牌中隨機分配狼人、獵人或村名型別;

提示使用者選擇一個牌的編號;

挑選到了狼人,你會被殺死

挑選到了獵人,你會被獲救

挑選到了村名,你會就沒事

遇到了狼人,你可以選擇攻擊

用Python寫個迷你版 狼人殺遊戲

01.

最菜的程式碼邏輯

小白上來寫程式碼一定是讓程式碼work,還記得我曾經給大家講菜鳥寫程式的成長,我們先把程式碼的重要功能一塊一塊先寫出來,然後再進行拼接起來。

1).顯示遊戲主題,獲取使用者輸入

再小的遊戲有一個介紹和玩法,我們肯定要告訴使用者如何玩:

用Python寫個迷你版 狼人殺遊戲

2).建立卡牌的型別

我們用3個角色,這裡用最簡單的

資料結構列表

去存放 。事先設定3種角色,然後用一個隨機數來存放到卡牌列表裡面:

用Python寫個迷你版 狼人殺遊戲

3).提示使用者輸入

因為我們的遊戲是透過讓使用者選卡牌數字進行,所以一定會用到input這樣函式,提示使用者輸入資訊:

def handle_user_choice():

# promot user to choose a card

msg = ‘\033[1m’ + “Choose a card number to enter(1-5):” + “\033[0m”

return int(input(msg))

4).展現卡片的內容

我們隨機產生的卡片列表,我們需要展現給使用者看,哦目前有5張卡片,3個角色,打印出來:

用Python寫個迷你版 狼人殺遊戲

為了更直觀,把你選中的那個角色

加粗顯示

出來

5).根據使用者的選擇,顯示遊戲邏輯結果

我們這裡很簡單的邏輯超級簡單,就是把使用者輸入的數字轉為角色,然後進行判斷:狼人直接掛掉,獵人或者村名就倖存。

用Python寫個迷你版 狼人殺遊戲

6).把程式碼串起來

每一個小的功能我們都已經寫好了,下面是該把所以的小塊程式碼連起來,就像樂高一樣。

用Python寫個迷你版 狼人殺遊戲

先顯示遊戲說明show_welcome_msg

接著一個死迴圈hold住,加一個標誌位進行控制

建立卡片的型別資料

獲取使用者的輸入數字

列印狼人殺角色卡片

處理輸入數字,顯示結果

忙活了半天,看一下效果:

用Python寫個迷你版 狼人殺遊戲

02.

增加和狼人對打功能

程式設計寫遊戲其實是一個非常不錯的學習方法!很多初學者老是說程式設計堅持不下來,為啥打遊戲會很放鬆很上癮,就是因為好玩啊!如果你換一個角度用玩Python的心態來學,一定會非常有趣!

如果遇到狼人,進行對打:

每一回合,如果打贏了,玩家的生命值不變,狼人生命值減少

每一回合,如果打輸了,狼人的生命值不變,玩家生命值減少

每一回合生命值的減少是隨機的,我們可以控制一個比例,讓狼人強還是玩家強

1).給角色增加生命值

我們在遇到狼人的時候,希望讓使用者選擇能否攻擊,攻擊的話就會受傷,會出現兩種情況:

可能玩家打敗了狼人,狼人受傷了

可能狼人打敗了玩家,玩家受傷了

為了現在這樣的功能,我們先要給角色弄一個數據結構,初始化生命值,比如玩家:100生命值,敵人:80

def reset_health(health_dict):

health_dict[‘player’]=100

health_dict[‘wolf’]=80

2). 顯示生命值

在遊戲進行的過程中,需要不斷的告知使用者,當然的角色的生命值:

用Python寫個迷你版 狼人殺遊戲

3).攻擊功能

當出現狼人的時候,我們選擇攻擊,每一回合都會都是隨機選擇對手,我們設計一個佇列裡面有

70%的機率是狼人受傷,30%是獵人受傷

用Python寫個迷你版 狼人殺遊戲

執行一下看一下效果:

用Python寫個迷你版 狼人殺遊戲

03.增加異常處理

程式碼一定會有異常,因為執行的時候會出現各種各樣的錯誤,為了保證程式碼的穩定性,異常處理那是必須的!

1).比如我們上面的程式碼如果就會出錯:

如果你不是輸入數字1-5,或者輸入負數,或者字母統統都會產生異常,所以異常處理非常必要

2).try/except保護一下

我們希望輸入必須是1-5數字,如果其他的進行異常捕捉,然後進行合理的提示

用Python寫個迷你版 狼人殺遊戲

試一下效果:

用Python寫個迷你版 狼人殺遊戲

用Python寫個迷你版 狼人殺遊戲

限於篇幅,整個的程式碼比較簡單,大家可以動手操練一下!其實這個遊戲可以繼續擴充套件的很豐富,目前的資料結構非常單一,我們還沒有封裝為

類進行第二次的重構,會設計一些介面,類和類之間會用到聚合或者組合

其實每一個角色其實可以有很多其他的功能,比如

村民可以增加逃跑功能,獵人可以增加武器庫來攻擊比如火槍,水擊,冰凍,增加道具來恢復生命值比如吃個漢堡,雞腿

等等。

可以加一個

GUI的介面來控制等等

,後面我們會把程式碼弄的更豐富一點,Python其實就是這麼好玩!

Python就是這麼有趣好玩

另外發現很多同學有入門的問題,到處找資料,現在新增我使用者名稱處扣扣,我會送一些我自己精選的入門的資料以及學習方法,有興趣的可以私聊,非誠勿擾!

標簽: 狼人  使用者  遊戲  程式碼  角色