我不大会写注释,大佬们应该也能看懂。
耗时5小时
#狼人杀 ver2.3~~~
from random import randint,choice
import time,os
a=["平民 ","平民","狼人","女巫"]#身份,用列表表示(用元组也行)
xing=("王","李","张","刘","徐","冯","袁","邓","韩","杜","朴","金","逄")
zhongjian=("既","海","若","树","丽","虎","涵")
zuihou=("羽","生","茵","芹","乔","智","丽")
disi=("玺","霍","获","岚","吾","乐","空","阵")
p1=choice(xing)+choice(zhongjian)
p2=choice(xing)+choice(zhongjian)+choice(zuihou)
p3=choice(xing)+choice(zhongjian)+choice(zuihou)+choice(disi)
wanjianame=[p1,p2,p3]
pl=["0","1","2","3"]#玩家
player0=choice(a)#设置玩家身份
ar=a.index(player0)
print("等待玩家进入游戏中...")
time.sleep(randint(0,3))
print("玩家1"+"("+p1+")加入游戏")
time.sleep(randint(0,3))
print("玩家2"+"("+p2+")加入游戏")
time.sleep(randint(0,3))
print("玩家3"+"("+p3+")加入游戏")
print("玩家已全齐,开始游戏倒计时")
timer=3
for i in range(3):
print(timer)
timer-=1
time.sleep(1)
player1=choice(a)
ae=a.index(player1)
player2=choice(a)
ac=a.index(player2)
player3=choice(a)
ad=a.index(player3)
while ae==ar or ae==ac or ae==ad or ad==ac or ad==ar or ac==ar:
player1=choice(a)
ae=a.index(player1)
player2=choice(a)
ac=a.index(player2)
player3=choice(a)
ad=a.index(player3)
ap=[player0,player1,player2,player3]
langren=ap.index("狼人")
nvwu=ap.index("女巫")
print("你的身份是"+player0)
while True:
if len(pl)==2:#如果在场玩家只剩一个,狼人胜利
print("好人只剩一个,狼人胜利")
break
du=0
nvwuhuozhe=True
nvwuyouduyao=True
nvwujiuming=True
if nvwuyouduyao==False and nvwujiuming==False:
nvwuhuozhe=False
c=','.join(pl)
print("天黑请闭眼")
if a.index(player0)==2:
print("狼人请睁眼n请选择你要杀害的玩家(输入数字"+c+")")
cc=int(input())
print("狼人请闭眼")
else:
print("狼人请睁眼n请选择你要杀害的玩家")
time.sleep(3)
cc=randint(0,3)
while cc==langren or str(cc) not in pl:
cc=randint(0,3)
print("狼人请闭眼")
if nvwuhuozhe:
if a.index(player0)==3:
print("女巫请睁眼")
if nvwujiuming:
if cc==0:
print("今天晚上,你死了,你是否要进行自救(输入0为否,输入1为是)")
ccc=int(input())
else:
print("今天晚上,玩家"+str(cc)+"("+wanjianame[cc-1]+")死了,你是否要救(输入0为否,输入1为是)")
ccc=int(input())
if nvwuyouduyao:
print("你有一瓶毒药,你是否要毒?(输入0为否,输入1为是)")
duyao=int(input())
if duyao==1:
print("要毒谁呢?(输入数字"+c+")")
du=int(input())
print("女巫请闭眼")
else:
print("女巫请睁眼")
if nvwujiuming:
print("今天晚上,玩家...死了,你是否要救")
time.sleep(3)
ccc=randint(0,1)
if nvwuyouduyao:
print("你有一瓶毒药,你是否要毒?")
time.sleep(3)
duyao=randint(0,1)
if duyao==1:
du=randint(0,3)
while du==nvwu or du==cc or str(du) not in pl:
du=randint(0,3)
print("女巫请闭眼")
print("天亮了")
if ccc==1 and du==0:
print("昨天没有人死")
nvwujiuming=False
elif ccc==0:
if cc==0:
print("你死了,已出局")
break
else:
print("昨天晚上玩家"+str(cc)+"("+wanjianame[cc-1]+")死了(狼人杀害)他的身份是:"+ap[cc])
del pl[pl.index(str(cc))]
elif duyao==1:
print("昨天晚上玩家"+str(du)+"("+wanjianame[cc-1]+")死了(女巫毒杀)","他的身份是:"+ap[du])
if du==0:
print("你死了,已出局")
break
if ap[du]=="狼人":
print("狼人出局,好人胜利")
break
del pl[pl.index(str(du))]
nvwuyouduyao=False
myself,wanjia1,wanjia2,wanjia3=0,0,0,0
c=','.join(pl)
print("请你选择要投票的玩家(输入数字"+c+(",投自己将视为弃权)"))
aaaaa=int(input())
if aaaaa==1:
wanjia1+=1
elif aaaaa==2:
wanjia2+=1
elif aaaaa==3:
wanjia3+=1
if "1" in pl:
print("请玩家1选择要投票的玩家")
while aaaaa==1 or str(aaaaa) not in pl:
aaaaa=randint(0,3)
if aaaaa==0:
myself+=1
elif aaaaa==2:
wanjia2+=1
elif aaaaa==3:
wanjia3+=1
time.sleep(3)
if aaaaa==0:
print("玩家1投给了",aaaaa)
else:
print("玩家1投给了",aaaaa,"("+wanjianame[aaaaa-1]+")")
if "2" in pl:
print("请玩家2选择要投票的玩家")
while aaaaa==2 or str(aaaaa) not in pl:
aaaaa=randint(0,3)
if aaaaa==0:
myself+=1
elif aaaaa==1:
wanjia1+=1
elif aaaaa==3:
wanjia3+=1
time.sleep(3)
if aaaaa==0:
print("玩家2投给了",aaaaa)
else:
print("玩家2投给了",aaaaa,"("+wanjianame[aaaaa-1]+")")
if "3" in pl:
print("请玩家3选择要投票的玩家")
while aaaaa==3 or str(aaaaa) not in pl:
aaaaa=randint(0,3)
if aaaaa==0:
myself+=1
elif aaaaa==1:
wanjia1+=1
elif aaaaa==2:
wanjia2+=1
time.sleep(3)
if aaaaa==0:
print("玩家3投给了",aaaaa)
else:
print("玩家3投给了",aaaaa,"("+wanjianame[aaaaa-1]+")")
n=[myself,wanjia1,wanjia2,wanjia3]
n.sort(reverse=True)
if n[1]==n[0]:
print("平票,无人出局")
elif n[0]==myself:
print("你票数最多,出局")
break
elif n[0]==wanjia1:
print("玩家1"+"("+wanjianame.index(p1)+")票数最多,出局")
print("玩家1的身份是"+player1)
if a.index(player1)==2:
print("狼人出局,好人胜利")
break
elif a.index(player1)==3:
nvwuhuozhe=False
del pl[pl.index("1")]
else:
del pl[pl.index("1")]
elif n[0]==wanjia2:
print("玩家2"+"("+wanjianame.index(p2)+")票数最多,出局")
print("玩家2的身份是"+player2)
if a.index(player2)==2:
print("狼人出局,好人胜利")
break
elif a.index(player2)==3:
nvwuhuozhe=False
del pl[pl.index("2")]
else:
del pl[pl.index("2")]
elif n[0]==wanjia3:
print("玩家3"+"("+wanjianame[wanjianame.index(p3)]+")票数最多,出局")
print("玩家3的身份是"+player3)
if a.index(player3)==2:
print("狼人出局,好人胜利")
break
elif a.index(player3)==3:
nvwuhuozhe=False
del pl[pl.index("3")]
else:
del pl[pl.index("3")]
print("你的票数:",myself)
if "1" in pl:
print("玩家1的票数:",wanjia1)
if "2" in pl:
print("玩家2的票数:",wanjia2)
if "3" in pl:
print("玩家3的票数:",wanjia3)
if len(pl)==2:#如果在场玩家只剩一个,狼人胜利
print("好人只剩一个,狼人胜利")
break
input("按回车继续")



