您現在的位置是:首頁 > 武術
Python版“狼人殺”:帶你解密臥底程式碼
- 由 考研交流 發表于 武術
- 2021-09-13
誰是臥底 詞語
前言
隨之而起的各大狼人殺APP,則利用線上更高效的陌生人組局和多樣的休閒場景,將社交做到了極致。以假面科技研發的首款狼人殺APP為例,其遊戲模式只是APP中為社互動動服務的敲門磚,使用者基本都是在快速體驗狼人殺遊戲後,將遊戲關係沉澱為社交關係展開互撩。
這種透過狼人殺來APP實現社交目的的現象,在貼吧中尤為壯觀。開啟狼人殺APP貼吧,首頁清一色公會招人、加好友處cp之類帶有社交目的性的帖子,也有不少回帖互動,說明狼人殺已成為使用者進行社交的平臺。
本節為大家解密一下一個最簡單的“狼人殺” 程式碼,只需要3個以上就可以玩。
大致分為幾個階段:
1。分配平民詞語和臥底詞語
2。玩家依次發言
3。根據發言投票認為誰是臥底
4。得到票數最多的玩家出局
5。出局玩家剛好是臥底則平民勝利
6。如果出局玩家是平民則被冤死並繼續第2步
7。當剩下的平民只有1個時臥底勝利。
下面來看下程式碼吧
#!/usr/local/bin/python3
import random
from spyword import spyword
num=int(input(‘請輸入玩家數(至少為3) ’))
#臥底玩家
spy=random。randint(0,num-1)
#隨機產生詞語 定義詞語列表 計算玩家票數的列表 統計死亡玩家的列表
list_rand=spyword。popitem
word=[]
cnt=[]
dead=[]
#給三個列表賦值
for i in range(0,num):
word。append(‘a’)
cnt。append(0)
dead。append(num+2)
#給玩家詞語 其中print是除錯用的,sanmeVote是出現相同票數的標誌,spyWin是臥底勝利的判決條件
for i in range(0,num):
if (i==spy):
word[i]=str(list_rand[1])
else:
word[i]=str(list_rand[0])
print (word[i])
sameVote=0
spyWin=0
#遊戲開始
for x in range(0,num-1):
for k in range(0,num):
if ((k not in dead) & (sameVote==0)):
print (‘%d號玩家發言時間’%(k+1))
print (‘發言環節結束’)
#將各位玩家的票數置0
for j in range(0,num):
if (j not in dead):
cnt[j]=0
for j in range(0,num):
if (j not in dead):
vote2p=int(input(‘請%d號玩家投票’%(j+1)))-1
cnt[vote2p]=cnt[vote2p]+1
sameVote=0
for y in range(0,num):
if((cnt[y]==max(cnt)) & (y!=cnt。index(max(cnt)))):
print (‘不止一位玩家得到最高票數,請這些玩家重新發言’)
sameVote=1
if (sameVote==0):
dead[x]=cnt。index(max(cnt))
if (dead[x]==spy):
print (‘臥底得到最多票數,遊戲結束’)
spyWin=1
break
print (‘%d號玩家被冤死!’%(dead[x]+1))
#遊戲結束
if(spyWin==0):
print (‘只剩兩名玩家,臥底勝利!’)
有一行程式碼是
from spyword import spyword
這裡spyword是我自己定義的臥底詞字典,執行時把這個檔案放在python的工作目錄下,就可以讓python程式呼叫該字典了。要檢視python工作目錄,你需要執行python後輸入
>>> import os
>>> os。getcwd
當然你也可以更改python工作目錄。
小編推薦一個學python的學習qun 7403,222,34
無論你是大牛還是小白,是想轉行還是想入行都可以來了解一起進步一起學習!裙內有開發工具,很多幹貨和技術資料分享!
程式設計思想
輸入玩家數量num,玩家數量為0-num-1,然後定義包含num元素的三個列表:單詞列表、玩家投票列表、死亡玩家列表。列表的下標從0到num-1,隨機生成區域中的數字x,表示X的玩家是臥底,然後分配臥底詞和便民詞。請注意,當提示臥底或被錯誤殺死的玩家時,將列印資訊時的時間下標新增到1,例如,0的下標表示實際上是1號的玩家。在生活中,很少有人習慣於說他們是“第0個人”,除了程式設計師。
在遊戲的每一輪中,擁有最多票數的玩家將被淘汰(同樣的票數將被重新說出),退出的玩家將被列入死亡玩家名單。然後開始下一輪。
所以,如果有num玩家,遊戲最多結束幾輪?答案是num-2,因為只有兩個玩家的遊戲結束了。也就是說,上面的過程需要迴圈num-2次。
總結
Python是一種簡潔、高效、易於理解的高階動態程式語言,許多人也把它稱為“膠水語言”。在接收大型專案時,通常使用Python來編寫主框架,然後在一些特定的模組中使用Java/JS/C++來實現特定的需求。掌握python並不難。透過本節中提到的這個遊戲,我希望您能找到Python的樂趣,並快速找到Python程式設計的訣竅。
素材來源於網路,侵刪