狼人杀代码 做的有些瑕疵(不喜勿喷)
#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
int n,s;
int _pai;
string ss[13]={"","存活","存活","存活","存活","存活","存活","存活","存活","存活","存活","存活","存活"};
string zs[13]={"","狼人","守卫","狼人","狼人","女巫","猎人","狼人","预言家","村民","猎人","村民","守卫"};
string pai=" 3141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067913267845900239485671000128479124792157325430";
void l6(){
for(int i=1;i<=5 and (n<1 or n>12);i++){
system("cls");//清空
printf("别闹了!好好选:");
cin>>n;
}
return;
}
void zjm(){
printf("我是%d号位\n",n);
printf("1号位 2号位 3号位 4号位 5号位 6号位\n");
for(int i=1;i<=6;i++){
cout<<ss[i];
if(ss[i]=="已死亡"){
cout<<" ";
}
else{
cout<<" ";
}
}
cout<<endl<<endl;
printf("7号位 8号位 9号位 10号位 11号位 12号位\n");
for(int i=7;i<=9;i++){
cout<<ss[i];
if(ss[i]=="已死亡"){
cout<<" ";
}
else{
cout<<" ";
}
}
for(int i=10;i<=12;i++){
cout<<ss[i];
if(ss[i]=="已死亡"){
cout<<" ";
}
else{
cout<<" ";
}
}
cout<<endl<<endl;
return;
}
void sf(int s){
cout<<zs[n];
if(zs[n]=="狼人"){
ss[1]="狼人";
ss[3]="狼人";
ss[4]="狼人";
ss[7]="狼人";
}
Sleep(2050);
return;
}
int h;
char c;
void hy(){
system("cls");//清空
zjm();
printf("守卫请睁眼~~~\n");
Sleep(1500);
printf("请问你要守护谁?\n");
Sleep(1500);
if(zs[n]=="守卫"){
printf("->");
cin>>h;
}
else{
printf("……\n");
}
Sleep(1500);
printf("守卫请闭眼~~~\n");
Sleep(1500);
system("cls");//清空
zjm();
printf("狼人请睁眼~~~\n");
Sleep(1500);
printf("请问你要刀(杀)谁?\n");
Sleep(1500);
if(zs[n]=="狼人"){
printf("->");
cin>>h;
ss[h]="已死亡";
}
else{
printf("……\n");
}
Sleep(1500);
printf("狼人请闭眼~~~\n");
Sleep(1500);
system("cls");//清空
zjm();
printf("女巫请睁眼~~~\n");
Sleep(1500);
printf("请问你要使用?\n");
Sleep(1500);
int z=rand()%13;
while(ss[z]=="已死亡" or z==0){
z=rand()%13;
}
ss[z]="已死亡";
if(zs[n]=="女巫"){
printf("A. 解药 B.毒药");
cout<<endl;
cin>>c;
if(c=='A'){
Sleep(1500);
printf("昨晚%d号位被刀(杀)了,",z);
Sleep(1500);
printf("请问你要解救谁?\n ");
cin>>h;
}
else{
Sleep(1500);
printf("请问你要谁毒谁? ");
cin>>h;
ss[h]="已死亡";
}
}
else{
printf("……\n");
}
Sleep(1500);
printf("女巫请闭眼~~~\n");
Sleep(1500);
system("cls");//清空
zjm();
printf("预言家请睁眼~~~\n");
Sleep(1500);
printf("请问你要预言谁的身份?\n");
Sleep(1500);
if(zs[n]=="预言家"){
cin>>h;
cout<<zs[h];
if(ss[h]!="已死亡"){
ss[h]=zs[h];
}
}
else{
printf("……\n");
}
Sleep(1500);
printf("预言家请闭眼~~~\n");
if(h==z) ss[z]="存活";
Sleep(1500);
system("cls");//清空
zjm();
printf("天亮了\n");
Sleep(1500);
printf("昨晚……");
Sleep(750);
for(int i=1;i<=12;i++){
if(ss[i]=="已死亡"){
system("cls");//清空
zjm();
return;
}
}
printf("是平安夜~~~");
Sleep(1750);
system("cls");//清空
zjm();
printf("\n\n");
return;
}
int sl;
int lr;
inline void aa(){
sl=0;
lr=0;
for(int i=1;i<=12;i++){
if(ss[i]!="已死亡"){
sl++;
}
if(ss[i]!="已死亡" and zs[i]=="狼人"){
lr++;
}
}
}
int f=1;
int v[1005]={0};
bool vn=false;
bool bs_10=true;
bool bs_6=true;
void tp(){
memset(v,0,sizeof(v));
if((ss[10]=="已死亡" and bs_10==true) or (ss[6]=="已死亡" and bs_6)){
if(ss[10]=="已死亡"){
bs_10=false;
}
else if(ss[6]=="已死亡"){
bs_6=false;
}
printf("猎人发动技能,开枪带走了");
if(ss[1]!="已死亡"){
cout<<"1号狼人";
ss[1]= "已死亡";
Sleep(2500);
system("cls");//清空
zjm();
}
else if(ss[3]!="已死亡"){
cout<<"3号狼人";
ss[3]= "已死亡";
Sleep(2500);
system("cls");//清空
zjm();
}
else if(ss[4]!="已死亡"){
cout<<"4号狼人";
ss[4]= "已死亡";
Sleep(2500);
system("cls");//清空
zjm();
}
else if(ss[7]!="已死亡"){
cout<<"7号狼人";
ss[7]= "已死亡";
Sleep(2500);
system("cls");//清空
zjm();
}
aa();
if(lr==0){
Sleep(1200);
system("cls");//清空
printf("\n\n\n\n-----------好人胜利!-------------\n\n\n\n");
vn=true;
return;
}
}
for(int i=1;i<=12;i++){
int j;
if(ss[i]!="已死亡"){
while(ss[(pai[f]-'0')]=="已死亡" or (pai[f]-'0')==i){
f++;
}
if(i!=n){
printf("%d号位把票投给了",i);
if(pai[f]=='0'){
cout<<"10号位"<<endl;
v[10]++;
f++;
}
else{
cout<<pai[f]<<"号位"<<endl;
v[(pai[f]-'0')]++;
f++;
}
}
else if(i==n){
printf("请问你要把票投给谁?\n");
cin>>j;
printf("%d号位把票投给了%d号位\n",i,j);
v[j]++;
}
Sleep(1500);
}
}
int maxn=0,maxn1=0;
int vi;
for(int i=1;i<=12;i++){
if(v[i]>maxn){
maxn=v[i];
vi=i;
maxn1=0;
}
else if(v[i]==maxn){
maxn1=v[i];
}
}
if(maxn!=maxn1){
system("cls");//清空
printf("投票结束,%d号位被投票出局",vi);
ss[vi]="已死亡";
Sleep(2250);
system("cls");//清空
Sleep(500);
zjm();
}
else{
printf("本轮平票,游戏继续\n");
Sleep(1750);
system("cls");//清空
zjm();
}
return;
}
int main(){
printf("欢迎来到-狼人杀24版-(12人机版)\n");
printf("由<@你亲爱的小许>研发,免费开放\n");
printf("-------------------------------\n");
printf("请选择你的位置(1~12号位):");
cin>>n;
l6();
if(n<1 or n>12){
printf("你个老6,我真的是服了你了!!!【忍无可忍】");
return 0;
}
system("cls");//清空
printf("你不能在大余6人时死亡(猎人除外)\n");
printf("在没有让你输入时,请不要输入按键【非常重要!!!】");
Sleep(3500);
system("cls");//清空
zjm();
printf("\n天黑了……\n");
printf("你的身份是——");
sf(s);
do{
hy();
printf("开始投票->\n");
Sleep(1500);
tp();
if(vn==true){
return 0;
}
Sleep(5000);
aa();
if(lr==0){
system("cls");//清空
printf("\n\n\n\n-----------好人胜利!-------------\n\n\n\n");
Sleep(2000);
return 0;
}
if(lr>=(sl+1)/2){
system("cls");//清空
printf("\n\n\n\n-----------狼人胜利!-------------\n\n\n\n");
Sleep(2000);
return 0;
}
if(ss[n]=="已死亡" and sl>=6 and zs[n]!="猎人"){
system("cls");//清空
printf("\n\n\n\n------游戏结束------\n\n\n\n");
Sleep(250);
return 0;;
}
}while(sl>2);
return 0;
}