diff --git a/main.py b/main.py index 4c0c135f61696bcf42c375ca5ab62aa5b105afc8..c5de3f8188f4780eb016944924fd4049585d415f 100644 --- a/main.py +++ b/main.py @@ -1 +1,328 @@ -print('欢迎来到 InsCode') \ No newline at end of file +from random import randint,choice +from time import sleep +import json +print("欢迎来到狼人杀!") +try: + fs=open("shengli.dat") + fs.close() +except FileNotFoundError: + lll={"l":0, + "p":0, + "114514":0, + "all":0, + "jsfs":0, + "ch":[], + "yy":0 + } + with open("shengli.dat","w") as f_obj: + json.dump(lll,f_obj) +else: + with open("shengli.dat") as f_obj: + lll=json.load(f_obj) +print("狼人胜场:",lll["l"]) +print("好人胜场:",lll["p"]) +print("你死的次数:",lll["114514"]) +print("总场次:",lll["all"]) +print("识破的狼人数量:",lll["yy"]) +if len(lll["ch"])!=0: + print("称号:"+",".join(lll["ch"])) +sleep(0.3) +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("等待玩家进入游戏中...") +sleep(randint(0,3)) +print("玩家1"+"("+p1+")加入游戏") +sleep(randint(0,3)) +print("玩家2"+"("+p2+")加入游戏") +sleep(randint(0,3)) +print("玩家3"+"("+p3+")加入游戏") +print("玩家已全齐,开始游戏倒计时") +timer=3 +for i in range(3): + print(timer,end=" ") + timer-=1 + 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("\n你的身份是"+player0) +nvwuhuozhe=True +nvwuyouduyao=True +nvwujiuming=True +days=0 +######print(ap) +while True: + days+=1 + print("\t\t\t\t\t\t第"+str(days)+"天~~~~~~~~~~~~~~~") + cc=5 + if len(pl)==2:#如果在场玩家只剩一个,狼人胜利 + print("好人只剩一个,狼人胜利") + lll["l"]+=1 + break + du=5 + duyao=5 + if nvwuyouduyao==False and nvwujiuming==False: + nvwuhuozhe=False + c=','.join(pl) + print("天黑请闭眼") + if a.index(player0)==2: + print("狼人请睁眼\n请选择你要杀害的玩家(输入数字"+c+")") + cc=int(input()) + cd=cc + print("狼人请闭眼") + else: + print("狼人请睁眼\n请选择你要杀害的玩家") + sleep(3) + + cc=randint(0,3) + while cc==langren or str(cc) not in pl: + cc=randint(0,3) + cd=cc + print("狼人请闭眼") + if nvwuhuozhe: + sleep(2) + if a.index(player0)==3: + print("女巫请睁眼") + if nvwujiuming: + if cc==0: + print("今天晚上,你死了,你是否要进行自救(输入0为否,输入1为是)") + ccc=int(input()) + if ccc==1: + nvwujiuming=False + lll["jsfs"]+=1 + cc=5 + else: + print("今天晚上,玩家"+str(cc)+"("+wanjianame[cc-1]+")死了,你是否要救(输入0为否,输入1为是)") + ccc=int(input()) + if ccc==1: + nvwujiuming=False + lll["jsfs"]+=1 + cc=5 + if nvwuyouduyao: + print("你有一瓶毒药,你是否要毒?(输入0为否,输入1为是)") + duyao=int(input()) + if duyao==1: + print("要毒谁呢?(输入数字"+c+")") + du=int(input()) + print("女巫请闭眼") + else: + print("女巫请睁眼") + if nvwujiuming: + print("今天晚上,玩家...死了,你是否要救") + sleep(3) + ccc=randint(0,1) + if ccc==1: + nvwujiuming=False + cc=5 + if nvwuyouduyao: + print("你有一瓶毒药,你是否要毒?") + sleep(3) + if ccc==0: + duyao=0 + else: + duyao=randint(0,1) + if duyao==1: + du=randint(0,3) + while du==nvwu or du==cd or str(du) not in pl: + du=randint(0,3) + print("女巫请闭眼") + sleep(2) + print("天亮了") + if cc==5 and duyao==0: + print("昨天没有人死") + else: + if cc==0 or du==0: + print("你死了,已出局") + lll["114514"]+=1 + break + else: + if cc!=5: + print("昨天晚上玩家"+str(cc)+"("+wanjianame[cc-1]+")死了(狼人杀害)他的身份是:"+ap[cc]) + del pl[pl.index(str(cc))] + else: + print("昨晚狼人没有杀人(女巫拯救)") + if duyao==1: + print("昨天晚上玩家"+str(du)+"("+wanjianame[du-1]+")死了(女巫毒杀)","他的身份是:"+ap[du]) + if ap[du]=="狼人": + print("狼人出局,好人胜利") + if player0=="女巫": + lll["yy"]+=1 + lll["p"]+=1 + break + del pl[pl.index(str(du))] + nvwuyouduyao=False + if len(pl)==2:#如果在场玩家只剩一个,狼人胜利 + print("好人只剩一个,狼人胜利") + lll["l"]+=1 + break + 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 + aaaab=aaaaa + 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 + sleep(3) + if aaaaa==0: + print("玩家1投给了",aaaaa) + else: + print("玩家1投给了",aaaaa,"("+wanjianame[aaaaa-1]+")") + if "2" in pl: + sleep(2) + 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 + sleep(3) + if aaaaa==0: + print("玩家2投给了",aaaaa) + else: + print("玩家2投给了",aaaaa,"("+wanjianame[aaaaa-1]+")") + if "3" in pl: + sleep(2) + 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 + 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("你票数最多,出局") + lll["114514"]+=1 + break + elif n[0]==wanjia1: + print("玩家1"+"("+wanjianame[wanjianame.index(p1)]+")票数最多,出局") + print("玩家1的身份是"+player1) + if a.index(player1)==2: + print("狼人出局,好人胜利") + if aaaab==1: + lll["yy"]+=1 + lll["p"]+=1 + 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[wanjianame.index(p2)]+")票数最多,出局") + print("玩家2的身份是"+player2) + if a.index(player2)==2: + print("狼人出局,好人胜利") + if aaaab==2: + lll["yy"]+=1 + lll["p"]+=1 + 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("狼人出局,好人胜利") + if aaaab==3: + lll["yy"]+=1 + lll["p"]+=1 + 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("好人只剩一个,狼人胜利") + lll["l"]+=1 + break +print("玩家1身份:"+player1+"\n玩家2身份:"+player2+"\n玩家3身份:"+player3) +lll["all"]+=1 +if lll["114514"]/lll["all"]>0.60 and "替罪羊" not in lll["ch"]: + print("恭喜获得称号:替罪羊(自己的死亡数占总场数的60%以上)") + lll["ch"].append("替罪羊") +if lll["114514"]/lll["all"]>0.75 and "究极替罪羊" not in lll["ch"]: + print("恭喜获得称号:究极替罪羊(自己的死亡数占总场数的75%以上)") + lll["ch"].append("究极替罪羊") +if lll["all"]>=15 and "沙场新秀" not in lll["ch"]: + print("恭喜获得称号:沙场新秀(总场数超过15场)") + lll["ch"].append("沙场新秀") +if lll["all"]>=45 and "沙场老兵" not in lll["ch"]: + print("恭喜获得称号:沙场老兵(总场数超过45场)") + lll["ch"].append("沙场老兵") +if lll["all"]>=100 and "沙场战神" not in lll["ch"]: + print("恭喜获得称号:沙场战神(总场数超过100场)") + lll["ch"].append("沙场战神") +if lll["all"]>=500 and "沙场神仙" not in lll["ch"]: + print("恭喜获得称号:沙场神仙(总场数超过500场)") + lll["ch"].append("沙场神仙") +if lll["jsfs"]>=20 and "医者仁心" not in lll["ch"]: + print("恭喜获得称号:医者仁心(使用女巫救人超过20人)") + lll["ch"].append("医者仁心") +if lll["yy"]>=20 and "鹰眼" not in lll["ch"]: + print("恭喜获得称号:鹰眼(识破狼人超过20人)") + lll["ch"].append("鹰眼") +with open("shengli.dat","w") as f_obj: + json.dump(lll,f_obj) +input("按回车继续") diff --git a/shengli.dat b/shengli.dat new file mode 100644 index 0000000000000000000000000000000000000000..b55de563588bd05c407a3af55548478d88daf41e --- /dev/null +++ b/shengli.dat @@ -0,0 +1 @@ +{"l": 0, "p": 0, "114514": 0, "all": 0, "jsfs": 0, "ch": [], "yy": 0} \ No newline at end of file