母连接: https://www.acwing.com/blog/content/18148/
声明/注意:
1.本代码免费向大家开放,安全,大约是狼人杀 1.5-2.0 的版本
2.最终解释权归作者所有
3.欢迎大家在这基础上进行改编,祝大家加油
//狼人杀旧版代码
#include <bits/stdc++.h>
#include <unistd.h>
#include <stdio.h>
#include <conio.h>
using namespace std;
const int N=201;
long long rss;//总人数
long long io;//随意选项
long long lrrs;//狼人人数
long long cmrs;//村民人数
long long szrs;//神职人数
long long lrsy;
pair<int,int>ql;//情侣编号
bool lwd=0;//女巫的毒药状态
bool lwj=0;//女巫的解药状态
int zjbh=0;//自己的编号
bool zb=0;//有无作弊码
bool gz=0;//是否观战
bool kf=0;//开发者模式
int sws=0;//守卫上一晚守护的谁
bool jsq[110];//角色参与权
int jss[110];//角色参与数量
int getc() {//快速输入
char n=getch();
return n-'0';
}
struct box
{
int sfh;//身份信息
int sw;//死亡状态
int bsd;//被谁杀死
}wj[N];
void sj()
{
fstream ww("sd.dll");
ww<<zb<<"\n";
ww<<gz<<"\n";
for(int i=1;i<110;i++)
{
ww<<jss[i]<<" ";
}
ww<<"\n";
for(int i=1;i<110;i++)
{
ww<<jsq[i]<<" ";
}
ww<<"\n";
}
void dr()
{
cout<<"导入设置文件中...\n";
fstream www("sd.dll");
if(!www)
{
cout<<"导入失败!\n";
cout<<"文件创建中...\n";
ofstream qq("sd.dll");
qq.close();
memset(jss,1,sizeof jss);
cout<<"文件创建成功!\n";
fstream ww("sd.dll");
ww<<"0\n0\n";
for(int i=1;i<110;i++)
{
ww<<"1 ";
}
ww<<"\n";
for(int i=1;i<110;i++)
{
ww<<"1 ";
}
ww<<"\n";
return;
}
/*
1.有没有 作弊码 /0.1/
*/
www>>zb;
www>>gz;
for(int i=1;i<110;i++)
{
www>>jss[i];
}
for(int i=1;i<110;i++)
{
www>>jsq[i];
}
www.close();
}
int cx2(long long bh,int fs)
{
if(fs==1)//查询身份bh的位置
{
for(int i=1;i<=rss;i++)
{
if(wj[i].sfh==bh) return i;
}
return 0;
}
else if(fs==2)
{
if(bh==-1)
{
for(int i=1;i<=rss;i++)
{
if(wj[i].sw==1) return i;
}
return 0;
}
else
{
for(int i=1;i<=rss;i++)
{
if(wj[i].sw==0) return i;
}
return 0;
}
}
}
void fp(int bbq,long long io,int mb)//分配身份(更改后,更改数量,更改前)
{
int i=1,j=0;
while(j<io)
{
if(cx2(mb,1)==0) break;
if(wj[i].sfh==mb&&rand()%2==1)
{
wj[i].sfh=bbq;
j++;
}
if(i==rss)
{
i=0;
}
i++;
}
}
void szpp(int bbq,long long io,int mb)//神职的匹配
{
if(szrs>0)
{
fp(bbq,io,mb);
szrs--;
}
}
void swcs()
{
for(int i=1;i<=rss;i++)
{
if(wj[i].sw==1) wj[i].sw=2;
}
}
string cx(long long bh,short ss)//(编号,标号表示)//1为玩家编号,2为职位编号 ,3为显示所有 ,4为查询第一个职位编号为bh的人
{
if(ss==1)
{
if(wj[bh].sw==1)
{
return "(目标死亡)";
}
if(wj[bh].sw==2)
{
return "(死亡,“"+cx(wj[bh].sfh,2)+"”)";
}
return cx(wj[bh].sfh,2);
}
else if(ss==2)
{
if(bh==1)
{
return "狼人";
}
else if(bh==2)
{
return "村民";
}
else if(bh==3)
{
return "(未知神职)";
}
else if(bh==4)
{
return "预言家";
}
else if(bh==5)
{
return "女巫";
}
else if(bh==6)
{
return "猎人";
}
else if(bh==7)
{
return "丘比特";
}
else if(bh==8)
{
return "白痴";
}
else if(bh==9)
{
return "守卫";
}
}
else if(ss==3)
{
cout<<"+-------------------------+\n"<<"|人物编号| 身份名称 |\n"<<"+-------------------------+\n";
for(int i=1;i<=rss;i++)
{
cout<<"|"<<setw(4)<<i<<" |"<<setw(13)<<cx(i,1)<<" |";
if(i==zjbh) cout<<"<--你";
else if(wj[zjbh].sfh==1&&wj[i].sfh==1) cout<<"<--狼人同伴";
if(i==ql.first||i==ql.second) cout<<"-情侣";
cout<<"\n";
}
cout<<"+-------------------------+\n";
return "0";
}
else
{
cout<<"错误(错误码:cx"<<ss<<")\n";
}
}
int zy(int i)
{
if(i==ql.first||i==ql.second)
{
if(zy(ql.second)!=zy(ql.first)) return 3;
}
if(wj[i].sfh==1) return 1;
if(wj[i].sfh==2||wj[i].sfh==4||wj[i].sfh==5||wj[i].sfh==6||wj[i].sfh==7||wj[i].sfh==8||wj[i].sfh==9) return 2;
}
int sy()//判断输赢
{
int szx=0,lrx=0,cmx=0;
bool qls=1;
for(int i=1;i<=rss;i++)
{
if(wj[i].sw!=0) continue;
if(zy(i)==1) lrx++;
else if(zy(i)==2)
{
if(wj[i].sfh==2) cmx++;
else szx++;
}
if(i!=ql.first&&i!=ql.second) qls=0;
}
if(qls==1) return 3;
if(szx==0||cmx==0) return 1;
if(lrx==0) return 2;
return 0;
}
int ff(int ss,char bb)//转为正负数
{
if(bb=='z')//转为正数
{
if(ss>=0) return ss;
int sb=ss;
int ww=0;
while(sb<0) ww++,sb++;
return ss+ww+ww;
}
else if(bb=='f')//转为负数
{
if(ss<0) return ss;
int sb=ss;
int ww=0;
while(sb>0) ww++,sb--;
return ss-ww-ww;
}
}
void hh(string bb)//清屏+开头语
{
system("cls");//system("export TERM=xterm && clear");
cout<<" 狼人杀("<<bb;
if(bb=="游戏中..."&&gz==0)
{
cout<<",你是"<<zjbh<<"号,身份是 "<<cx(zjbh,1)<<")\n";
cout<<" 还剩";
int maxv=0;
for(int i=1;i<=rss;i++)
if(wj[i].sw==0)
maxv++;
cout<<maxv<<"人,剩余狼人";
int w=0;
for(int i=1;i<=rss;i++) if(wj[i].sfh==1&&wj[i].sw==0) w++;
cout<<w<<"个\n";
}
else if(gz==1&&bb=="游戏中...")
{
cout<<")\n";
cout<<" 还剩";
int maxv=0;
for(int i=1;i<=rss;i++)
if(wj[i].sw==0)
maxv++;
cout<<maxv<<"人,剩余狼人";
int w=0;
for(int i=1;i<=rss;i++) if(wj[i].sfh==1&&wj[i].sw==0) w++;
cout<<w<<"个\n";
}
else cout<<")\n";
}
int main()
{
system("title 狼人杀(2.0)");//设置cmd窗口标题
//system("mode con cols=70 lines=30");//窗口宽度高度
memset(jss,1,sizeof jss);
memset(jsq,1,sizeof jsq);
dr();
srand(time(0));
while(1)
{
hh("界面");
printf("界面选项:\n ");
system("date /T");
printf(" ");
system("TIME /T");
cout<<"0.退出游戏\n1.开始游戏\n2.作品介绍\n3.游戏角色介绍\n4.游戏设置\n";
io=getc();
if(io==1)
{
if(wj[0].sw!=0)
{
cout<<"敬爱的狼人杀玩家,抱歉,因技术原因,请退出游戏重进才可以完!抱歉!\n";
sleep(3);
continue;
}
wj[0].sw=1;
hh("设置中");
do{
cout<<"请问有多少为玩家(包括你,至少6人):";
cin>>rss;
}while(rss<6);
do{
cout<<"要多少狼人(至多"<<rss/2<<"人,最少1人):";
cin>>io;
if(io<1) cout<<"选择错误(狼人人数不对)\n";
else if(rss-io<io) cout<<"选择错误(狼人人数不可比好人多)\n";
}while(io<1||rss-io<io);
lrrs=io;
lrsy=lrrs;
fp(1,lrrs,0);//狼人分配
do{
cout<<"要多少村民(至多"<<rss-lrrs-1<<"人,最少1人):";
cin>>io;
if(io>rss-3||io<1) cout<<"选择错误(村民人数不对)\n";
else if(rss-lrrs-1<io) cout<<"选择错误(村民人数不可比狼人少,还要留神职)\n";
}while(rss-lrrs-1<io||io<1);
cmrs=io;//记录村民人数
fp(2,cmrs,0);//村民分配
szrs=rss-cmrs-lrrs;//记录神职人数
fp(3,szrs,0);//记录神职
hh("正在匹配中...");
if(jsq[4]==1) szpp(4,jss[4],3);//预言家
if(jsq[5]==1) szpp(5,jss[5],3);//女巫
if(jsq[6]==1) szpp(6,jss[6],3);//猎人
if(jsq[7]==1) szpp(7,jss[7],3);//丘比特
if(jsq[9]==1) szpp(9,jss[9],3);//守卫
if(jsq[8]==1) szpp(8,jss[8],3);//白痴
if(zb==0) zjbh=1+rand()%rss;
else if(gz==0)
{
cx(0,3);
cout<<"你要当几号:";
cin>>io;
zjbh=io;
cout<<"设置成功\n";
}
if(gz==0)
{
cout<<"\n匹配成功!你的身份是"<<cx(zjbh,1)<<",编号为"<<zjbh<<"\n\n开始游戏\n";
sleep(3);
}
else zjbh=rss+1;
int ww=1;//第几个晚上
while(1)
{
hh("游戏中...");
if(zb==1||gz==1) cx(0,3);
else
{
cout<<"+-----------------------+\n"<<"|玩家编号| 身份名称 |\n"<<"+-----------------------+\n";
for(int i=1;i<=rss;i++)
{
cout<<"| "<<setw(3)<<i<<" |"<<setw(12);
if(wj[i].sw!=0) cout<<"(已死亡,身份为:"<<cx(wj[i].sfh,2)<<")";
else cout<<"(未死亡)";
cout<<" |";
if(i==zjbh) cout<<"<--你";
else if(wj[zjbh].sfh==1&&wj[i].sfh==1) cout<<"<--狼人同伴";
cout<<"\n";
}
cout<<"+-----------------------+\n";
}
if(sy()!=0) break;
int jys=0;
cout<<"法官:天黑请闭眼\n";
cout<<"法官:狼人请睁眼\n";
cout<<"法官:你们今晚要杀的人是?请指示!\n";
if(wj[zjbh].sfh==1&&wj[zjbh].sw==0)
{
cout<<"你是狼人,其他狼人同伴选的分别有:\n";
}
int xzb[N]={0};
memset(xzb,0,sizeof xzb);
for(int i=1;i<=rss;i++)
{
if(wj[i].sfh!=1) continue;
if(i==zjbh&&wj[i].sfh==1)
{
if(wj[i].sw!=0) cout<<"同伴"<<i<<"号 --> (已死亡) <-- 你\n";
else cout<<"同伴"<<i<<"号 --> (未抉择) <-- 你\n";
}
else
{
int sss;
do{
sss=1+rand()%rss;
}while(wj[sss].sfh==1||wj[sss].sw!=0);
xzb[sss]++;
if(wj[i].sw==0&&wj[zjbh].sfh==1) cout<<"同伴"<<i<<"号 --> "<<sss<<"号\n";
else if(wj[i].sw!=0&wj[zjbh].sfh==1) cout<<"同伴"<<i<<"号 --> (已死亡)\n";
if(gz==1)
{
if(wj[i].sw==0) cout<<"狼人"<<i<<"号 --> "<<sss<<"号\n";
else if(wj[i].sw!=0) cout<<"狼人"<<i<<"号 --> (已死亡)\n";
}
}
}
if(wj[zjbh].sfh==1&&wj[zjbh].sw==0)
{
cout<<"\n请指示你要选几号:";
cin>>io;
xzb[io]++;
}
else if(wj[zjbh].sfh==1&&wj[zjbh].sw!=0)
{
cout<<"\n你已死亡,无法选择!\n";
}
int maxv=0;
bool xt=0;
for(int i=1;i<=rss;i++)
{
//if(maxv==i) continue;
if(xzb[maxv]<xzb[i])
{
maxv=i;
xt=0;
}
else if(xzb[maxv]==xzb[i])
{
xt=1;
}
}
if((xt==1||maxv==0))
{
if(wj[zjbh].sfh==1||gz==1) cout<<"狼人选择均为相同,无法杀人!\n";
else
{
do
{
maxv=1+rand()%rss;
}while(wj[maxv].sfh==1||wj[maxv].sw!=0);
wj[maxv].sw=1;
wj[maxv].bsd=1;
jys++;
}
}
else
{
wj[maxv].sw=1;
if(wj[zjbh].sfh==1||gz==1) cout<<"已将"<<maxv<<"杀掉!\n";
wj[maxv].bsd=1;
jys++;
}
if(wj[zjbh].sfh==1&&wj[zjbh].sw!=0) system("pause");
else sleep(3);
cout<<"法官:好,狼人请闭眼\n";
if(cx2(5,1)!=0&&wj[cx2(5,1)].sw==0) cout<<"法官:女巫请睁眼\n法官:你们今晚要杀的人是?请指示!\n";
if(wj[zjbh].sfh==5&&wj[zjbh].sw==0&&cx2(5,1)!=0)
{
do{
cout<<"你是女巫,请指示今晚你要毒人还是要救人(今晚"<<cx2(-1,2)<<"号要死)(1为救,0为毒,2为跳过):";
if(lwj==1&&lwd==1)
{
cout<<"毒药解药都已用完!自动退出\n";
io=100;
break;
}
io=getc();
if(io==1&&(lwj==1||cx2(-1,2)==0))
{
if(cx2(-1,2)==0) cout<<"今晚没人死!\n";
else cout<<"解药用完了!\n";
io=3;
}
else if(lwd==1&&io==0)
{
cout<<"毒药用完了!\n";
io=3;
}
}while(io!=1&&io!=0&&io!=2);
if(io==1)
{
io=cx2(-1,2);
cout<<"女巫大人,已将"<<io<<"号救治成功"<<endl;
wj[io].bsd=0;
wj[io].sw=0;
jys--;
}
else if(io==0)
{
do
{
cout<<"女巫,请问今晚你要毒谁(今晚"<<cx2(-1,2)<<"号要死):";
cin>>io;
}while(io==zjbh||wj[io].sw!=0);
wj[io].sw=1;
jys++;
cout<<"女巫大人,已将"<<io<<"号毒掉!\n";
wj[io].bsd=5;
lwd=1;
}
else if(io==3) cout<<"好!\n";
}
else if(wj[cx2(-1,2)].sfh==5&&cx2(5,1)!=0&&ww==1)
{
if(wj[zjbh].sfh==5)
{
cout<<"你是女巫,今晚你要被杀,是否自救(1.是 2.否)?\n";
io=getc();
if(io==1)
{
cout<<"自救成功!";
wj[zjbh].sw=0;
wj[zjbh].bsd=0;
}
}
else
{
wj[zjbh].sw=0;
wj[zjbh].bsd=0;
}
}
else if(wj[cx2(5,2)].sw==0&&cx2(5,1)!=0)
{
io=rand()%2;
if(io==1&&lwj==0&&cx2(-1,2)!=0)
{
if(gz==1) cout<<"女巫将"<<cx2(-1,2)<<"号救治。\n"<<endl;
wj[cx2(-1,2)].sw=0;
jys--;
lwj=1;
}
else if(io==0&&lwd==0&&maxv!=0&&xt==0)
{
io=0;
while(io==0||wj[io].sw!=0||wj[io].sfh==5) io=1+rand()%rss;
wj[io].sw=1;
jys++;
lwd=1;
if(gz==1) cout<<"女巫将"<<io<<"号毒掉!\n";
}
}
sleep(1);
if(cx2(5,1)!=0&&wj[cx2(5,1)].sw==0) cout<<"法官:好,女巫请闭眼\n";
if(cx2(4,1)!=0&&wj[cx2(4,1)].sw==0) cout<<"法官:预言家请睁眼\n";
if(wj[zjbh].sfh==4&&wj[zjbh].sw==0)
{
cout<<"你是预言家,请问你要预言谁的身份:";
cin>>io;
if(zy(io)==1) cout<<"TA是:狼人。\n";
else cout<<"TA是:好人。\n";
}
if(cx2(9,1)!=0&&wj[cx2(9,1)].sw==0)
{
cout<<"法官:守卫请睁眼\n";
io=0;
if(wj[zjbh].sfh==9)
{
cout<<"你是守卫,你今晚要守谁(输入编号,0为不守)?";
do
{
cin>>io;
if(io<0||io>rss||io==sws||wj[io].sw==2)
{
if(io<0||io>rss) cout<<"人物编号错误有!请你重新输入:";
else if(io==sws) cout<<"上一晚守过了!请你重新输入:";
else if(wj[io].sw==2) cout<<"该玩家已彻底死亡!请你重新输入:";
}
}while(io<0||io>rss||io==sws||wj[io].sw==2);
if(io!=0)
{
cout<<"设置守护人成功!";
}
sws=io;
}
else
{
do
{
io=1+rand()%rss;
}while(io==sws||wj[io].sw==2);
if(gz==1) cout<<" 守卫选择守护"<<io<<"号玩家!\n";
}
if(wj[io].sw==1&&io!=0)
wj[io].sw=0;
cout<<"法官:守卫请闭眼\n";
}
if(cx2(4,1)!=0&&wj[cx2(4,1)].sw==0) cout<<"法官:好,预言家请闭眼\n";
if(cx2(7,1)!=0&&ww==1)
{
cout<<"法官:丘比特请睁眼\n";
if(wj[zjbh].sfh==7)
{
cout<<"你是丘比特,请问你要指认谁和谁成为情侣(输入编号,空格隔开):";
int i1=0,i2=0;
cin>>i1>>i2;
while(i1==0||i2==0||wj[i1].sw!=0||wj[i2].sw!=0||i1==i2||i1>rss||i2>rss)
{
cout<<"输入错误,请问你要指认谁和谁成为情侣(输入编号,空格隔开):" ;
cin>>i1>>i2;
}
ql.first=i1;
ql.second=i2;
cout<<"指认成功!\n";
}
else
{
int i1=0,i2=0;
while(i1==0||i2==0||wj[i1].sw!=0||wj[i2].sw!=0||i1==i2)
{
i1=1+rand()%rss;
i2=1+rand()%rss;
}
ql.first=i1;
ql.second=i2;
if(gz==1)
cout<<" 情侣是"<<i1<<"和"<<i2<<"号\n";
}
cout<<"法官:好,丘比特请闭眼\n";
if(ql.first==zjbh||ql.second==zjbh)
{
cout<<"系统提示:你是情侣中的一位,另外一位是:";
if(zjbh==ql.first) cout<<ql.second;
else cout<<ql.first;
cout<<"号!\n";
}
}
ww++;
cout<<"法官:天亮了,昨晚";
if(jys==0) cout<<"是个平安夜\n";
else
{
cout<<"死了"<<jys<<"个人,分别为:\n+--------+-------------------------+\n";
for(int i=1;i<=rss;i++)
{
if(wj[i].sw==1) cout<<"+"<<setw(5)<<i<<"号 +"<<setw(15)<<cx(wj[i].sfh,2)<<" +\n";
if(wj[i].sfh==1&&wj[i].sw!=0) lrsy--;
}
cout<<"+--------+-------------------------+\n";
for(int i=1;i<=rss;i++)
{
if(wj[i].sw==1&&wj[i].bsd!=5&&wj[i].sfh==6)
{
if(zjbh==i)
{
cout<<"你的身份是猎人,你可以枪毙一名玩家,你选择:";
cin>>io;
cout<<"好,完成枪毙!\n";
}
else
{
cout<<"这其中有一名为猎人,他/她选择枪毙的人为:";
io=0;
while(io==0||wj[io].sw!=0)
{
io=1+rand()%rss;
}
cout<<io<<"号\n";
}
cout<<" "<<io<<"号的身份为"<<cx(io,1)<<endl;
wj[io].sw=1;
wj[io].bsd=6;
if(io==ql.first||io==ql.second)
{
cout<<io<<"号是情侣的一位,他和";
if(ql.first==io) cout<<ql.second<<"号是情侣,他的身份是"<<cx(wj[ql.second].sfh,2);
else cout<<ql.first<<"号是情侣,他的身份是"<<cx(wj[ql.first].sfh,2);
cout<<endl;
wj[ql.first].sw=wj[ql.second].sw=1;
wj[ql.first].bsd=wj[ql.second].bsd=6;
}
}
else if((ql.first==i&&wj[i].sw==1)||(ql.second==i&&wj[i].sw==1))
{
cout<<i<<"号是情侣的一位,他和";
if(ql.first==i) cout<<ql.second<<"号是情侣,他的身份是"<<cx(wj[ql.second].sfh,2);
else cout<<ql.first<<"号是情侣,他的身份是"<<cx(wj[ql.first].sfh,2);
cout<<endl;
wj[ql.first].sw=wj[ql.second].sw=1;
wj[ql.first].bsd=wj[ql.second].bsd=2;
}
}
swcs();
}
sleep(2);
if(sy()!=0)
{
system("pause");
break;
}
cout<<"法官:开始全员裁选!\n";
bool ssb=0;
int num=0,mpp[N];
memset(mpp,0,sizeof mpp);
cout<<"其他玩家选的是:\n";
for(int i=1;i<=rss;i++)
{
if(i==zjbh)
{
if(wj[zjbh].sw==0) cout<<"玩家"<<i<<"号 --> (未抉择) <--你\n";
else cout<<"玩家"<<i<<"号 --> "<<"(死亡,“"<<cx(wj[i].sfh,2)<<"”) <--你\n";
}
else if(wj[i].sw==0)
{
int sss;
do{
sss=1+rand()%rss;
}while(sss==i||wj[sss].sw!=0||(wj[i].sfh==1&&wj[sss].sfh==1));
mpp[sss]++;
cout<<"玩家"<<i<<"号 --> "<<sss<<"号\n";
}
else
{
cout<<"玩家"<<i<<"号 --> "<<"(死亡,\""<<cx(wj[i].sfh,2)<<"\")\n";
}
}
if(wj[zjbh].sw==0&&gz==0)
{
cout<<"你选几号(0为弃票):";
cin>>io;
if(io!=0) mpp[io]++;
}
for(int i=1;i<=rss;i++)
{
if(wj[i].sw!=0) continue;
if(mpp[num]<mpp[i])
{
num=i;
ssb=0;
}
else if(mpp[num]==mpp[i])
{
ssb=1;
}
}
if(ssb==1||num==0) cout<<" 群众选择均为相同,无法裁员!\n";
else
{
cout<<" 已将"<<num<<"杀掉!\n";
wj[num].sw=1;
if(wj[num].sfh==1)
{
int w=0;
for(int i=1;i<=rss;i++) if(wj[i].sfh==1&&wj[i].sw==0) w++;
cout<<" 她/他的身份是狼人,目前还有"<<w<<"个狼人!\n";
}
else if(ql.first==num||ql.second==num)
{
cout<<num<<"号是情侣的一位,他和";
if(ql.first==num) cout<<ql.second<<"号是情侣,他的身份是"<<cx(wj[ql.second].sfh,2);
else cout<<ql.first<<"号是情侣,他的身份是"<<cx(wj[ql.first].sfh,2);
cout<<endl;
wj[ql.first].sw=wj[ql.second].sw=1;
wj[ql.first].bsd=wj[ql.second].bsd=2;
}
else if(wj[num].sfh==8)
{
cout<<"此人的身份是白痴,免受放逐!\n";
wj[num].sw=0;
}
else
{
cout<<" 此人身份为"<<cx(wj[num].sfh,2)<<",目前还有";
int w=0;
for(int i=1;i<=rss;i++) if(wj[i].sfh==1&&wj[i].sw==0) w++;
cout<<w<<"个狼人!\n";
}
if(wj[num].sfh==6)
{
if(zjbh==num)
{
cout<<"你的身份是猎人,你可以枪毙一名玩家,你选择:";
cin>>io;
cout<<"好,完成枪毙!\n";
}
else
{
cout<<"这其中有一名为猎人,他/她选择枪毙的人为:";
io=1+rand()%rss;
while(wj[io].sfh==6||wj[io].sw!=0) io=1+rand()%rss;
cout<<io<<"号\n";
}
cout<<" "<<io<<"号的身份为"<<cx(io,1)<<endl;
wj[io].sw=1;
wj[io].bsd=6;
if(io==ql.first||io==ql.second)
{
cout<<io<<"号是情侣的一位,他和";
if(ql.first==io) cout<<ql.second<<"号是情侣,他的身份是"<<cx(wj[ql.second].sfh,2);
else cout<<ql.first<<"号是情侣,他的身份是"<<cx(wj[ql.first].sfh,2);
cout<<endl;
wj[ql.first].sw=wj[ql.second].sw=1;
wj[ql.first].bsd=wj[ql.second].bsd=6;
}
}
swcs();
}
system("pause");
}
io=sy();
if(io==1) cout<<"狼人胜利!\n";
else if(io==2) cout<<"好人胜利!\n";
else if(io==3) cout<<"情侣胜利!\n";
cout<<"游戏结束!\n";
cout<<"下面是身份名单:\n";
cx(0,3);
system("pause");
}
else if(io==2)
{
cout<<" 介绍:\n 1)角色有:村民,狼人,预言家,巫女,猎人,丘比特+情侣\n 2)有作弊模式和观战模式,两者区别是作弊模式可以参与游戏而观战模式不能。\n 3.本产品可以保存您的设置,文件名为sd.dll。\n 4)关于角色设定功能:用户可以根据自己的喜好,设置各种神职的参与权以及数量,更好的体验游戏的乐趣!\n 5)备注:因为对方玩家是AI,在3.0中没有白天发言功能\n";
cout<<"\n作品可能会有问题,如发现请告知作者:\n微信:zzm1276788770\nQQ:1276788770\nQQ邮箱:12767888770@qq.com\n电话:19873023052\n 制作方:邹梓墨\n 版权所有,盗者必究!\n\n";
system("pause");
}
else if(io==3)
{
hh("游戏介绍");
cout<<"好人阵营:\n";
cout<<" 【角色】:平民\n【阵营】:好人阵营,平民\n【人数】:不限\n【能力】:无特殊技能,一觉睡到天亮。\n【目标】:分析其他玩家发言,认真地投出每一票,直到驱逐所有狼人。\n\n";
cout<<" 【角色】:预言家\n【阵营】:好人阵营,神职\n【人数】:1人\n【能力】:每天晚上可以查验一名玩家的身份是好人还是狼人。\n【目标】:利用自己的能力带领大家找出、驱逐所有狼人。\n\n";
cout<<" 【角色】:女巫\n【阵营】:好人阵营,神职\n【人数】:1人\n【能力】:女巫拥有两瓶药,解药可以救活一名当晚被狼人杀害的玩家,毒药可以毒杀一名玩家,女巫每天晚上最多使用一瓶药,女巫不可自救。\n【目标】:善用毒药和解药,驱逐全部狼人出局。\n\n";
cout<<" 【角色】:猎人\n【阵营】:好人阵营,神职\n【人数】:1人\n【能力】:当且仅当猎人被狼人杀害或被投票放逐时,猎人可以亮出自己的身份牌并指定枪杀一名玩家,被女巫毒杀则无法发动技能。\n【目标】:一命换一命,驱逐全部狼人出局。\n\n";
cout<<" 【角色】:守卫\n【阵营】:好人阵营,神职\n【人数】:1人\n【能力】:可以在夜晚守卫一个人免受狼人杀害(两晚不可以守同一个人,可以守自己)\n";
cout<<" 【角色】:白痴\n【阵营】:好人阵营,神职\n【人数】:1人\n【能力】:在白天时被放逐可以报身份来免受放逐,报身份后狼人还需再杀一次才可以死亡(夜晚不可以发动)\n";
printf("---------------------------------------------------------------------\n");
cout<<"狼人阵营:\n";
cout<<" 【角色】:狼人\n【阵营】:狼人阵营\n【人数】:3人\n【能力】:每天夜里可以杀死一个人。\n【目标】:白天装作好人混淆视听,夜晚袭击村民,霸占村庄。\n";
printf("---------------------------------------------------------------------\n");
cout<<"第三方阵营:\n";
cout<<" 【角色】:丘比特\n【阵营】:无(随其首夜选择的情侣)\n【人数】:1人\n【能力】:丘比特在第一个晚上可以把两名玩家设为情侣(可以设定自己为情侣之一)。\n";
cout<<" 【角色】:情侣\n【阵营】:无(由丘比特指定)\n【人数】:2人\n【能力】:丘比特在第一个晚上可以把两名玩家设为情侣,这两名玩家若是其中一名死去,另一名也要跟着殉情。第一天晚上情侣睁眼互相确认。如果情侣所属阵营不同,则情侣除外所有玩家死去,情侣获胜\n";
printf("---------------------------------------------------------------------\n");
system("pause");
}
else if(io==4)
{
hh("设置界面");
printf("1.作弊码设置\n2.观戏模式\n3.角色设置\n");
io=getc();
if(io==1)
{
if(gz==1)
{
cout<<"现在是观战模式,不可以参与游戏。是否关闭观战模式(1.是 2.否)?\n";
io=getc();
if(io==1)
{
gz=0;
cout<<"成功关闭\n";
sleep(1);
}
}
if(gz==0)
{
cout<<"现在的作弊码状态为:";
if(zb==0)
{
cout<<"关";
cout<<"\n\n请输入作弊码:";
string hh;
cin>>hh;
if(hh=="666")
{
cout<<"作弊码正确!\n";
if(zb==0)
{
cout<<"已切换为:开\n";
zb=1;
kf=0;
}
}
else cout<<"作弊码错误!";
sleep(1);
}
else
{
cout<<"开\n";
printf("是否关闭(1.是 2.否)?");
io=getc();
if(io==1)
{
cout<<"\n已切换为:关\n";
zb=0;
sleep(1);
}
}
}
}
else if(io==2)
{
if(gz==1)
{
cout<<"现在是观战模式,是否关闭(1.是 2.否)?";
io=getc();
if(io==1)
{
cout<<"\n已切换为:关闭\n";
gz=0;
kf=0;
sleep(1);
}
}
else
{
cout<<"现在不是观战模式,是否开启(1.是 2.否)?";
io=getc();
if(io==1)
{
cout<<"\n已切换为:开启\n自动关闭作弊码\n";
gz=1;
zb=0;
cout<<"按任意键继续...";
char c;
io=getc()+'0';
if(io=='`')
{
cout<<"\n\n请输入开发者密码:";
string s;
cin>>s;
if(s=="zzm25399514")
{
cout<<"密码正确!已经入开发者模式!\n";
kf=1;
sleep(1);
return 0;
}
else
{
cout<<"密码错误!";
}
}
}
}
}
else if(io==3)
{
hh("角色设置");
for(int i=4;i<=9;i++)
{
cout<<"["<<cx(i,2)<<"] ";
if(jsq[i]==1)
{
cout<<"参加游戏,数量:"<<jss[i]<<"个";
}
else cout<<"不参加游戏!";
cout<<"\n";
}
printf("\n角色设置选项:\n1.预言家\n2.女巫\n3.猎人\n4.丘比特\n5.白痴\n6.守卫\n输入编号以设置角色:");
int q1,q2;
cin>>q1;
if(q1<=6)
{
printf("\n角色设置:\n1.更改数量\n2.更改参与权\n");
q2=getc();
if(q2==1)
{
printf("该角色现在的数量为:%d位\n请输入更改到多少:",jss[q1+4]);
cin>>io;
jss[q1+3]=io;
printf("成功设置!\n");
sleep(1);
}
else if(q2==2)
{
if(jsq[q1+3]==1)
{
printf("该角色现在启用状态为:是\n是否关闭(1.是 2.否)?\n");
io=getc();
if(io==1)
{
jsq[q1+3]=0;
printf("成功关闭角色!");
sleep(1);
}
}
else
{
printf("该角色现在启用状态为:否\n是否开启(1.是 2.否)?\n");
io=getc();
if(io==1)
{
jsq[q1+3]=1;
printf("成功开启角色!");
sleep(1);
}
}
}
}
else
{
cout<<"输入错误,请重新输入!";
sleep(1);
}
}
else
{
cout<<"输入错误,请重新输入!";
sleep(1);
}
sj();
}
else if(io==0)
{
break;
}
else
{
cout<<"输入错误,请重新输入!";
sleep(1);
}
}
return 0;
}
加油!
很nice
666
RE了
你看一下,我也帮你看看
2.0左右版本的代码确实很多问题,抱歉啊
6