num = int(input('请输入玩家数:>=3 \n'))
if num < 3:
print('人数不够,请输入>=3的人数')
#生成一个随机数,指定卧底
import random
wodi = random.randint(1,num) #第几个人是卧底
print(wodi)
word = [] #给他们指定身份列表
for i in range(1,num+1):
word.append('平民')
if i == wodi:
word[i-1] = '卧底'
print(word)
vote = [] #投票列表。判断最高票数
dead = [] #死亡列表,已死的平民
#初始化列表
for i in range(0,num):
vote.append(0)
dead.append(num+10)
#samevote是判断有没有同样最高票数,wodiwin判断卧底赢了没
wodi_win = 0
#投票环节
def all_vote(num,ifMax):
#第一步清空投票池
for j in range(0, num):
vote[j] = 0
#第二部相同最高票数则只能针对最高票数投票,否则直接投票
for j in range(0, num):
if (j not in dead):
if ifMax:
vote2p = int(input('请%d号玩家投票,只能针对最高票数的几位\n' % (j + 1))) - 1
else:
vote2p = int(input('请%d号玩家投票\n' % (j + 1))) - 1
vote[vote2p] += 1
for x in range(0, num - 1):
for k in range(0, num):
if (k not in dead):
print('%d号玩家发言时间' % (k + 1))
print('发言环节结束')
# 将各位玩家的票数置0
all_vote(num,0)
for y in range(0, num):
if ((vote[y] == max(vote)) & (y != vote.index(max(vote)))):
print('不止一位玩家得到最高票数,请这些玩家重新发言')
all_vote(num,1)
#第几位死亡,则加入死亡列表,死的是卧底则游戏结束,否则继续
dead[x] = vote.index(max(vote))
print(vote)
if (dead[x]+1 == wodi):
print('卧底得到最多票数,游戏结束')
wodi_win = 1
break
print('%d号玩家被冤死!' % (dead[x] + 1))
if (wodi_win == 0):
print('只剩两名玩家,卧底胜利!')