提交 821eabe6 编写于 作者: gaolinghu's avatar gaolinghu

Add new file

上级 bbe2b63b
#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h>
using namespace std;
#define sp Sleep
#define rd rand
#define ef else if
#define pe system("pause")
#define ct cout
void pd(int s[],int n){
if(s[n]==1)ct<<"杀手";ef(s[n]==2)ct<<"警察";
ef(s[n]==3)ct<<"平民";ef(s[n]==4)ct<<"狙击手";
ef(s[n]==5)ct<<"医生";
puts("");
}
void brc1(){
srand(time(0));
int a,b=20,i,j=0,k,l=0,m[21],n=rd()%20+1,p=0,s[21]={0}
,w,d,e,f=0,g=1,lr,tp[21]={0},yy[21]={0},y=2,c=0,kk;
ct<<"你是"<<n<<"号\n正在分配身份\n";
sp(1500);
for(i=1;i<21;i++)m[i]=1;
for(i=1;i<21;i++)do{
a=rd()%5+1;
if(a==1&&l<4)l++,s[i]=1;ef(a==2&&w<4)w++,s[i]=2;
ef(a==4&&p<2)p++,s[i]=4;ef(a==3&&j<9)j++,s[i]=3;
ef(a==5&&!c)c++,s[i]=5;
}while(s[i]==0);
ct<<"你的身份是";
pd(s,n);
ct<<"游戏将在3秒后开始\n";
sp(3000);
do{
bool f1=0,f2=0;
lr=0;
ct<<"第"<<g<<"晚开始\n";
for(i=1;i<21;i++){
if(i==n&&m[n]==1){
if(s[n]==1){
for(k=1;k<21;k++)if(m[k]==1&&s[k]!=1)ct<<k<<' ';
ct<<"\n你选择杀掉\n";
cin>>a;
kk=a;
ct<<"\n杀手杀了"<<a<<"号";
pd(s,a);
b--;
}ef(s[n]==2){
for(k=1;k<21;k++)if(m[k]==1&&s[i]!=2)ct<<k<<' ';
ct<<"\n你选择查验谁的身份\n";
cin>>a;
if(s[a]==1){
ct<<a<<"号是杀手,请注意\n";
sp(1000);
}ef(s[a]==4){
ct<<a<<"号是狙击手,请注意\n";
sp(1000);
}else ct<<a<<"号是平民\n";
}ef(s[n]==4){
for(k=1;k<21;k++)if(m[k]==1&&s[i]!=4)ct<<k<<' ';
ct<<"\n你选择杀掉\n";
cin>>a;
m[a]=0;
ct<<"\n狙击手杀了"<<a<<"号";
pd(s,a);
b--;
}
}ef(s[i]==1&&m[i]==1&&s[n]!=1&&!f1){
f1=1;
do a=rd()%20+1;while(a==i||m[a]==0||s[a]==1);
ct<<"杀手杀掉了"<<a<<"号";
pd(s,a);
kk=a;
b--;
}ef(s[i]==2&&m[i]==1&&s[n]!=2&&!f2){
f2=1;
if(f==0||m[f]==0){
do a=rd()%20+1;while(a==i||m[a]==0);
if(s[a]==1)yy[a]=1;ef(s[a]==3)yy[a]=3;
}
}ef(s[i]==4&&m[i]==1){
do a=rd()%20+1;while(a==i||m[a]==0);
ct<<"狙击手杀掉了"<<a<<"号";
pd(s,a);
m[a]=0;
b--;
}ef(s[i]==5){
f=0;
while(f==0){
a=rand()%2+1;
if(a==1&&y>0){
y--;
f=1;
int a;
do a=rand()%15+1;while(a==i||m[a]==0);
m[a]=0;
cout<<"医生针死了"<<b<<"号";
pd(s,a);
b--;
}ef(a==2&&g>1&&y>0){
y--;
f=1;
b++;
cout<<"医生救活了"<<kk<<"号\n";
kk=0;
}else break;
}
}
}
if(s[n]==5){
cout<<"\n你选择 1.杀 还是 2.救\n";
f=0;
while(f==0){
cin>>a;
if(a==1&&y){
y--;
f=1;
for(k=1;k<21;k++)if(m[k]==1&&k!=n)ct<<k<<' ';
cin>>a;
pd(s,a);
m[a]=0;
b--;
}ef(a==2&&y>0){
y--;
f=1;
kk=0;
b++;
}else cout<<"针剂不足\n";
}
}
m[kk]=0;
sp(1000);
int p[21]={0};
ct<<"第"<<g<<"晚结束\n\n";
if(m[n]==0){
ct<<"你已经>>死<<了";
break;
}
ct<<"存活:\n ";
for(i=1;i<21;i++)if(m[i]==1)ct<<i<<' ';
ct<<"\n请投票....\n";
for(i=1;i<21;i++){
if(i==n&&m[n]==1){
ct<<"你选择投几号\n";
cin>>a;
p[a]++;
ct<<"\n"<<i<<"->"<<a<<'\n';
if(s[a]==3)tp[a]=i;
}ef(m[i]==1){
do a=rd()%20+1;while(m[a]==0||a==i);
p[a]++;
ct<<i<<"->"<<a<<'\n';
}
}
pe;ct<<"投票情况:\n";
for(i=1;i<21;i++)if(m[i]==1)ct<<i<<"号票数:"<<p[i]<<'\n';
e=-100;
for(i=1;i<21;i++)if(p[i]>e)d=i,e=p[i];
m[d]=0;
ct<<d<<"死了\nta的身份是";
b--;
pd(s,d);
g++;
if(s[n]!=1)for(i=1;i<21;i++)if(s[i]==1&&m[i]==1)lr=1;
ef(s[n]==1&&b==2)lr=0;
pe;
}while(m[n]==1&&b>1&&lr);
ct<<"\n\n\n游戏结束\n";
for(i=1;i<21;i++){
ct<<i<<"号的身份是:";
pd(s,i);
if(m[i])cout<<"存活\n";else cout<<"死亡\n";
}
}
int main(){
cout<<"1.20人模式(医生,警察,狙击手,平民,杀手)\n";
int a=getch();
if(a=='1')brc1();
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册