栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

用python做一个简易的狼人杀

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用python做一个简易的狼人杀

我不大会写注释,大佬们应该也能看懂。

耗时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("按回车继续")

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/883088.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号