用Python寫個迷你版 狼人殺遊戲
原創:Leoxin菜鳥學Python
狼人殺估計很多小夥伴都玩過,是一個非常有趣的遊戲!以前公司團建的時候,經常一堆人圍一桌玩,心理素質比較高的同學會玩的比較好,有的時候一玩會從下午玩到晚上,真的非常懷念那段時光,今天我們用Python寫一個簡易版的狼人殺,非常有意思,適合小白入門Python。
狼人殺的角色,我們這裡只模擬三種 狼人,獵人和村民
遊戲的邏輯,我們這裡做了處理,弄的很簡單,隨機發牌,用一個死迴圈,讓使用者一直玩這個遊戲時:
列印遊戲的說明;
建立一個狼人殺卡牌的列表;
在3張卡牌中隨機分配狼人、獵人或村名型別;
提示使用者選擇一個牌的編號;
挑選到了狼人,你會被殺死
挑選到了獵人,你會被獲救
挑選到了村名,你會就沒事
遇到了狼人,你可以選擇攻擊
01.
最菜的程式碼邏輯
小白上來寫程式碼一定是讓程式碼work,還記得我曾經給大家講菜鳥寫程式的成長,我們先把程式碼的重要功能一塊一塊先寫出來,然後再進行拼接起來。
1).顯示遊戲主題,獲取使用者輸入
再小的遊戲有一個介紹和玩法,我們肯定要告訴使用者如何玩:
2).建立卡牌的型別
我們用3個角色,這裡用最簡單的
資料結構列表
去存放 。事先設定3種角色,然後用一個隨機數來存放到卡牌列表裡面:
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個角色,打印出來:
為了更直觀,把你選中的那個角色
加粗顯示
出來
5).根據使用者的選擇,顯示遊戲邏輯結果
我們這裡很簡單的邏輯超級簡單,就是把使用者輸入的數字轉為角色,然後進行判斷:狼人直接掛掉,獵人或者村名就倖存。
6).把程式碼串起來
每一個小的功能我們都已經寫好了,下面是該把所以的小塊程式碼連起來,就像樂高一樣。
先顯示遊戲說明show_welcome_msg
接著一個死迴圈hold住,加一個標誌位進行控制
建立卡片的型別資料
獲取使用者的輸入數字
列印狼人殺角色卡片
處理輸入數字,顯示結果
忙活了半天,看一下效果:
02.
增加和狼人對打功能
程式設計寫遊戲其實是一個非常不錯的學習方法!很多初學者老是說程式設計堅持不下來,為啥打遊戲會很放鬆很上癮,就是因為好玩啊!如果你換一個角度用玩Python的心態來學,一定會非常有趣!
如果遇到狼人,進行對打:
每一回合,如果打贏了,玩家的生命值不變,狼人生命值減少
每一回合,如果打輸了,狼人的生命值不變,玩家生命值減少
每一回合生命值的減少是隨機的,我們可以控制一個比例,讓狼人強還是玩家強
1).給角色增加生命值
我們在遇到狼人的時候,希望讓使用者選擇能否攻擊,攻擊的話就會受傷,會出現兩種情況:
可能玩家打敗了狼人,狼人受傷了
可能狼人打敗了玩家,玩家受傷了
為了現在這樣的功能,我們先要給角色弄一個數據結構,初始化生命值,比如玩家:100生命值,敵人:80
def reset_health(health_dict):
health_dict[‘player’]=100
health_dict[‘wolf’]=80
2). 顯示生命值
在遊戲進行的過程中,需要不斷的告知使用者,當然的角色的生命值:
3).攻擊功能
當出現狼人的時候,我們選擇攻擊,每一回合都會都是隨機選擇對手,我們設計一個佇列裡面有
70%的機率是狼人受傷,30%是獵人受傷
:
執行一下看一下效果:
03.增加異常處理
程式碼一定會有異常,因為執行的時候會出現各種各樣的錯誤,為了保證程式碼的穩定性,異常處理那是必須的!
1).比如我們上面的程式碼如果就會出錯:
如果你不是輸入數字1-5,或者輸入負數,或者字母統統都會產生異常,所以異常處理非常必要
2).try/except保護一下
我們希望輸入必須是1-5數字,如果其他的進行異常捕捉,然後進行合理的提示
試一下效果:
限於篇幅,整個的程式碼比較簡單,大家可以動手操練一下!其實這個遊戲可以繼續擴充套件的很豐富,目前的資料結構非常單一,我們還沒有封裝為
類進行第二次的重構,會設計一些介面,類和類之間會用到聚合或者組合
。
其實每一個角色其實可以有很多其他的功能,比如
村民可以增加逃跑功能,獵人可以增加武器庫來攻擊比如火槍,水擊,冰凍,增加道具來恢復生命值比如吃個漢堡,雞腿
等等。
可以加一個
GUI的介面來控制等等
,後面我們會把程式碼弄的更豐富一點,Python其實就是這麼好玩!
Python就是這麼有趣好玩
另外發現很多同學有入門的問題,到處找資料,現在新增我使用者名稱處扣扣,我會送一些我自己精選的入門的資料以及學習方法,有興趣的可以私聊,非誠勿擾!
上一篇:原神求大佬給個配隊和培養意見!?
下一篇:格膚姿GGZ護膚品好用嗎