【c++】c++语言制作狼人杀游戏,老好玩了

#include<bits/stdc++.h>
#include<cstdio>
#include<cstdlib>
#include<ctime>
#include<windows.h>
using namespace std;
struct IDname
{
	int geshu;
	string NAME;
};
IDname jue_se[100];
struct ID
{
	int num;
	bool life;
	string name;
	int know;
	int how;
};
ID player[21];
int n,MY,kill1,kill2;
char a;
bool jieyao=1,duyao=1;
int lieren,shouwei=0;
void init1()
{
	jue_se[1].NAME="村民 ";
	jue_se[2].NAME="狼人 ";
	jue_se[3].NAME="女巫 ";
	jue_se[4].NAME="预言家 ";
	jue_se[5].NAME="猎人 ";
	jue_se[6].NAME="守卫 ";
}
void init2(int nn)
{
	switch(nn)
	{
		case 6:
			jue_se[1].geshu=3;
			jue_se[2].geshu=2;
			jue_se[3].geshu=1;
			jue_se[4].geshu=0;
			jue_se[5].geshu=0;
			jue_se[6].geshu=0;
			break;
		case 7:
			jue_se[1].geshu=3;
			jue_se[2].geshu=2;
			jue_se[3].geshu=1;
			jue_se[4].geshu=1;
			jue_se[5].geshu=0;
			jue_se[6].geshu=0;
			break;
		case 8:
			jue_se[1].geshu=3;
			jue_se[2].geshu=3;
			jue_se[3].geshu=1;
			jue_se[4].geshu=1;
			jue_se[5].geshu=0;
			jue_se[6].geshu=0;
			break;
		case 9:
			jue_se[1].geshu=3;
			jue_se[2].geshu=3;
			jue_se[3].geshu=1;
			jue_se[4].geshu=1;
			jue_se[5].geshu=1;
			jue_se[6].geshu=0;
			break;
		case 10:
			jue_se[1].geshu=4;
			jue_se[2].geshu=3;
			jue_se[3].geshu=1;
			jue_se[4].geshu=1;
			jue_se[5].geshu=1;
			jue_se[6].geshu=0;
			break;
		case 11:
			jue_se[1].geshu=4;
			jue_se[2].geshu=4;
			jue_se[3].geshu=1;
			jue_se[4].geshu=1;
			jue_se[5].geshu=1;
			jue_se[6].geshu=0;
			break;
		case 12:
			jue_se[1].geshu=4;
			jue_se[2].geshu=4;
			jue_se[3].geshu=1;
			jue_se[4].geshu=1;
			jue_se[5].geshu=1;
			jue_se[6].geshu=1;
			break;
		default:
			cout<<"输入错误,再见"<<endl;
			exit(0);
			break;
	}
}
int van[10]= {7,4,6,43,35,1,2,8,20,19};
void init3(int nn)
{
	srand(time(0));
	Sleep(rand()%44);
	int x=10000;
	int t=rand();
	srand(time(NULL));
	int y=van[(rand()%100*van[rand()%10]+t)%10];
	if(nn<=6)
		x=abs(x*6/y)%3+1;
	else if(nn<=8)
		x=abs(x*7/y)%4+1;
	else if(nn<=11)
		x=abs(x*8/y)%5+1;
	else if(nn<=14)
		x=abs(x*9/y)%6+1;
	do
	{
		if(nn<=6)
			x=x%3+1;
		else if(nn<=8)
			x=x%4+1;
		else if(nn<=11)
			x=x%5+1;
		else if(nn<=14)
			x=x%6+1;
		if(jue_se[x].geshu>0)
		{
			player[nn].name=jue_se[x].NAME;
			if(player[nn].name=="猎人 ")
				lieren=nn;
			if(player[nn].name=="守卫 ")
				shouwei=nn;
			player[nn].life=1;
			player[nn].num=nn;
			player[nn].know=0;
			jue_se[x].geshu--;
			player[nn].how=0;
			break;
		}
	}
	while(jue_se[x].geshu==0);
}
void printhhh()
{
	int cm=0;
	int sz=0;
	for(int i=1; i<=n; i++)
	{
		if(player[i].life==0)
			continue;
		else if(player[i].name=="村民 ")
			cm++;
		else if(player[i].name=="女巫 "||player[i].name=="预言家 "||player[i].name=="猎人 "||player[i].name=="守卫 ")
			sz++;
	}
	if(sz==0||cm==0)
		cout<<"狼人阵营胜利"<<endl;
	else
		cout<<"好人阵营胜利"<<endl;
	for(int i=1; i<=n; i++)
	{
		cout<<left<<setw(3)<<player[i].num<<": "<<player[i].name<<" ";
		if(player[i].life==0)
			cout<<"死亡"<<"\t";
		else
			cout<<"存活"<<"\t";
		if(player[i].how==0)
			cout<<"最终存活 "<<endl;
		else if(player[i].how==1)
			cout<<"最终被狼人杀死"<<endl;
		else if(player[i].how==2)
			cout<<"最终被投票投死"<<endl;
		else if(player[i].how==3)
			cout<<"最终被女巫毒死"<<endl;
		else if(player[i].how==4)
			cout<<"最终被猎人射杀"<<endl;
	}
	system("pause");
	system("pause");
	system("pause");
}
void print(int day,int ti)
{
	HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
	if(ti==0)
		SetConsoleTextAttribute(handle,BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE|FOREGROUND_INTENSITY);
	else
		SetConsoleTextAttribute(handle,FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
	cout<<"\t\t\t\t第"<<day<<"天 ";
	if(ti==0)
		cout<<"白天"<<endl;
	else
		cout<<"夜晚"<<endl;
	cout<<"我的位置:"<<MY<<"号"<<endl;
	for(int i=1; i<=6; i++)
		cout<<player[i].num<<"号位 ";
	cout<<endl;
	for(int i=1; i<=6; i++)
	{
		if(player[i].life==1)
		{
			if(ti==0)
				SetConsoleTextAttribute(handle,BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE|FOREGROUND_INTENSITY | FOREGROUND_GREEN);
			else
				SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_GREEN);
			cout<<"存活 ";
		}
		else
		{
			if(ti==0)
				SetConsoleTextAttribute(handle,BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE|FOREGROUND_INTENSITY | FOREGROUND_RED);
			else
				SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED);
			cout<<"已死亡 ";
		}
	}
	if(ti==0)
		SetConsoleTextAttribute(handle,BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE|FOREGROUND_INTENSITY);
	else
		SetConsoleTextAttribute(handle,FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
	cout<<endl;
	for(int i=1; i<=6; i++)
	{
		if(player[i].know==0)
			cout<<"未知 ";
		else if(player[i].know==1)
		{
			if(player[i].name=="狼人 ")
				cout<<"狼人 ";
			else
				cout<<"好人 ";
		}
		else if(player[i].know==2)
			cout<<player[i].name<<" ";
	}
	cout<<endl<<endl;
	for(int i=7; i<=n; i++)
	{
		if(i<10)
			cout<<player[i].num<<"号位 ";
		else
			cout<<player[i].num<<"号位 ";
	}
	cout<<endl;
	for(int i=7; i<=n; i++)
	{
		if(player[i].life==1)
		{
			if(ti==0)
				SetConsoleTextAttribute(handle,BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE|FOREGROUND_INTENSITY | FOREGROUND_GREEN);
			else
				SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_GREEN);
			cout<<"存活 ";
		}
		else
		{
			if(ti==0)
				SetConsoleTextAttribute(handle,BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE|FOREGROUND_INTENSITY | FOREGROUND_RED);
			else
				SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED);
			cout<<"已死亡 ";
		}
	}
	if(ti==0)
		SetConsoleTextAttribute(handle,BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE|FOREGROUND_INTENSITY);
	else
		SetConsoleTextAttribute(handle,FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
	cout<<endl;
	for(int i=7; i<=n; i++)
	{
		if(player[i].know==0)
			cout<<"未知 ";
		else if(player[i].know==1)
		{
			if(player[i].name=="狼人 ")
				cout<<"狼人 ";
			else
				cout<<"好人 ";
		}
		else if(player[i].know==2)
			cout<<player[i].name<<" ";
	}
	cout<<endl<<endl;
}
int shou=0;
void shoushui(int hhh,int hhhh)
{
	int x;
	Sleep(3000);
	system("cls");
	print(hhh,hhhh);
	cout<<"守~卫~请~睁~眼~~~"<<endl;
	Sleep(3000);
	system("cls");
	print(hhh,hhhh);
	if(MY==shouwei&&player[MY].life==1)
	{
		cout<<"请问你要守护谁?"<<endl<<"输入:";
		cin>>x;
		while(x==shou||x<1||x>n||player[x].life==0)
		{
			cout<<"输入错误,请重新输入"<<endl<<"输入:";
			cin>>x;
		}
		shou=x;
	}
	else if(player[shouwei].life==1)
	{
		cout<<"请问你要守护谁?"<<endl;
		Sleep(rand()%98);
		srand(time(0));
		x=rand()%n+1;
		while(x==shou||player[x].life==0)
		{
			Sleep(rand()%98);
			srand(time(0));
			x=rand()%n+1;
		}
		shou=x;
	}
	else
	{
		cout<<"请问你要守护谁?"<<endl;
		Sleep(3000);
		shou=-1;
	}
	Sleep(3000);
	system("cls");
	print(hhh,hhhh);
	cout<<"守~卫~请~闭~眼~~~"<<endl;
}
struct tou
{
	int xxx;
	int num;
	int toupiaoquan;
};
tou TOU[13];
bool cmp(tou x,tou y)
{
	if(x.xxx==y.xxx)
		return x.num<y.num;
	return x.xxx>y.xxx;
}
bool cmp1(tou x,tou y)
{
	return x.num<y.num;
}
void toupiao(int ddd,int nnn)
{
	int x;
	Sleep(2000);
	system("cls");
	print(ddd,nnn);
	cout<<"现在大家请投票";
	for(int i=1; i<=3; i++)
	{
		cout<<".";
		Sleep(500);
	}
	cout<<endl;
	for(int i=1; i<=n; i++)
	{
		TOU[i].num=i;
		TOU[i].toupiaoquan=1;
		TOU[i].xxx=0;
	}
	for(int i=1; i<=n; i++)
	{
		if(player[i].life==1)
		{
			Sleep(3000);
			if(i==MY)
			{
				cout<<"请投票...(0弃权)"<<endl;
				cin>>x;
				while(player[x].life==0&&x!=0)
					cin>>x;
				if(x==0)
					cout<<MY<<"号玩家弃权"<<endl;
				else
					cout<<MY<<"号玩家投给了"<<x<<"号玩家"<<endl;
			}
			else
			{
				srand(time(0));
				if(player[i].name=="狼人 ")
				{
					x=rand()%(n+1);
					while(x!=0&&(player[x].life==0||player[x].name=="狼人 "||x==i))
					{
						Sleep(rand()%98);
						srand(time(0));
						x=rand()%(n+1);
					}
					if(x==0)
						cout<<i<<"号玩家弃权"<<endl;
					else
						cout<<i<<"号玩家投给了"<<x<<"号玩家"<<endl;
				}
				else if(player[i].name=="预言家 ")
				{
					x=rand()%(n+1);
					while(x!=0&&(player[x].life==0||player[x].name!="狼人 "||x==i))
					{
						Sleep(rand()%98);
						srand(time(0));
						x=rand()%(n+1);
					}
					if(x==0)
						cout<<i<<"号玩家弃权"<<endl;
					else
						cout<<i<<"号玩家投给了"<<x<<"号玩家"<<endl;
				}
				else
				{
					x=rand()%(n+1);
					while(x!=0&&(player[x].life==0||x==i))
					{
						Sleep(rand()%98);
						srand(time(0));
						x=rand()%(n+1);
					}
					if(x==0)
						cout<<i<<"号玩家弃权"<<endl;
					else
						cout<<i<<"号玩家投给了"<<x<<"号玩家"<<endl;
				}
			}
			if(x!=0)
				TOU[x].xxx++;
		}
	}
	Sleep(3000);
	sort(TOU+1,TOU+n+1,cmp);
	if(TOU[2].xxx!=TOU[1].xxx)
	{
		cout<<"投票结束,"<<TOU[1].num<<"号投票出局"<<endl;
		player[TOU[1].num].life=0;
		player[TOU[1].num].how=2;
		Sleep(3000);
		return;
	}
	else
	{
		TOU[1].toupiaoquan=0;
		TOU[2].toupiaoquan=0;
		system("cls");
		print(ddd,nnn);
		cout<<TOU[1].num<<"号,"<<TOU[2].num<<"号";
		int i;
		for(i=3; i<=n; i++)
		{
			if(TOU[i].xxx==TOU[1].xxx)
			{
				TOU[i].toupiaoquan=0;
				cout<<","<<TOU[i].num<<"号";
			}
			else
				break;
		}
		if(i==n+1)
		{
			for(int i=1; i<=n; i++)
				TOU[i].toupiaoquan=1;
		}
		cout<<"平票"<<endl;
	}
	sort(TOU+1,TOU+n+1,cmp1);
	cout<<"请再次投票";
	for(int i=1; i<=3; i++)
	{
		cout<<".";
		Sleep(500);
	}
	cout<<endl;
	for(int i=1; i<=n; i++)
	{
		if(player[i].life==1&&TOU[i].toupiaoquan==1)
		{
			Sleep(3000);
			if(i==MY)
			{
				cout<<"请投票...(0弃权)"<<endl;
				cin>>x;
				while((player[x].life==0||TOU[x].toupiaoquan==1)&&x!=0)
					cin>>x;
				if(x==0)
					cout<<MY<<"号玩家弃权"<<endl;
				else
					cout<<MY<<"号玩家投给了"<<x<<"号玩家"<<endl;
			}
			else
			{
				srand(time(0));
				if(player[i].name=="狼人 ")
				{
					x=rand()%(n+1);
					while(x!=0&&(player[x].life==0||player[x].name=="狼人 "||x==i||TOU[x].toupiaoquan==1))
					{
						srand(time(0));
						x=rand()%(n+1);
					}
					if(x==0)
						cout<<i<<"号玩家弃权"<<endl;
					else
						cout<<i<<"号玩家投给了"<<x<<"号玩家"<<endl;
				}
				else if(player[i].name=="预言家 ")
				{
					x=rand()%(n+1);
					while(x!=0&&(player[x].life==0||player[x].name!="狼人 "||x==i||TOU[x].toupiaoquan==1))
					{
						srand(time(0));
						x=rand()%(n+1);
					}
					if(x==0)
						cout<<i<<"号玩家弃权"<<endl;
					else
						cout<<i<<"号玩家投给了"<<x<<"号玩家"<<endl;
				}
				else
				{
					x=rand()%(n+1);
					while(x!=0&&(player[x].life==0||x==i||TOU[x].toupiaoquan==1))
					{
						srand(time(0));
						x=rand()%(n+1);
					}
					if(x==0)
						cout<<i<<"号玩家弃权"<<endl;
					else
						cout<<i<<"号玩家投给了"<<x<<"号玩家"<<endl;
				}
			}
			if(x!=0&&TOU[i].toupiaoquan==1)
				TOU[x].xxx++;
		}
	}
	Sleep(3000);
	sort(TOU+1,TOU+n+1,cmp);
	if(TOU[2].xxx!=TOU[1].xxx)
	{
		cout<<"投票结束,很可惜,"<<TOU[1].num<<"号投票出局"<<endl;
		player[TOU[1].num].life=0;
		player[TOU[1].num].how=2;
		Sleep(3000);
		return;
	}
	else
	{
		TOU[1].toupiaoquan=0;
		TOU[2].toupiaoquan=0;
		system("cls");
		print(ddd,nnn);
		cout<<TOU[1].num<<"号,"<<TOU[2].num<<"号";
		int i;
		for(i=3; i<=n; i++)
		{
			if(TOU[i].xxx==TOU[1].xxx)
			{
				TOU[i].toupiaoquan=0;
				cout<<","<<TOU[i].num<<"号";
			}
			else
				break;
		}
		if(i==n+1)
		{
			for(int i=1; i<=n; i++)
				TOU[i].toupiaoquan=1;
		}
		cout<<"平票"<<endl;
	}
	sort(TOU+1,TOU+n+1,cmp1);
	cout<<"请再次投票";
	for(int i=1; i<=3; i++)
	{
		cout<<".";
		Sleep(500);
	}
	cout<<endl;
	for(int i=1; i<=n; i++)
	{
		if(player[i].life==1&&TOU[i].toupiaoquan==1)
		{
			Sleep(3000);
			if(i==MY)
			{
				cout<<"请投票...(0弃权)"<<endl;
				cin>>x;
				while((player[x].life==0||TOU[x].toupiaoquan==1)&&x!=0)
					cin>>x;
				if(x==0)
					cout<<MY<<"号玩家弃权"<<endl;
				else
					cout<<MY<<"号玩家投给了"<<x<<"号玩家"<<endl;
			}
			else
			{
				srand(time(0));
				if(player[i].name=="狼人 ")
				{
					x=rand()%(n+1);
					while(x!=0&&(player[x].life==0||player[x].name=="狼人 "||x==i||TOU[x].toupiaoquan==1))
					{
						srand(time(0));
						x=rand()%(n+1);
					}
					if(x==0)
						cout<<i<<"号玩家弃权"<<endl;
					else
						cout<<i<<"号玩家投给了"<<x<<"号玩家"<<endl;
				}
				else if(player[i].name=="预言家 "||player[i].name=="猎人 ")
				{
					x=rand()%(n+1);
					while(x!=0&&(player[x].life==0||player[x].name!="狼人 "||x==i||TOU[x].toupiaoquan==1))
					{
						srand(time(0));
						x=rand()%(n+1);
					}
					if(x==0)
						cout<<i<<"号玩家弃权"<<endl;
					else
						cout<<i<<"号玩家投给了"<<x<<"号玩家"<<endl;
				}
				else
				{
					x=rand()%(n+1);
					while(x!=0&&(player[x].life==0||x==i||TOU[x].toupiaoquan==1))
					{
						srand(time(0));
						x=rand()%(n+1);
					}
					if(x==0)
						cout<<i<<"号玩家弃权"<<endl;
					else
						cout<<i<<"号玩家投给了"<<x<<"号玩家"<<endl;
				}
			}
			if(x!=0&&TOU[i].toupiaoquan==1)
				TOU[x].xxx++;
		}
	}
	Sleep(3000);
	sort(TOU+1,TOU+n+1,cmp);
	if(TOU[2].xxx!=TOU[1].xxx)
	{
		cout<<"投票结束,"<<TOU[1].num<<"号投票出局"<<endl;
		player[TOU[1].num].life=0;
		player[TOU[1].num].how=2;
	}
	else
		cout<<"投票结束,在这三次的投票中,无人出局"<<endl;
	Sleep(5000);
}
bool game_over()
{
	int pingmin=0;
	int langren=0;
	int shenzhi=0;
	for(int i=1; i<=n; i++)
	{
		if(player[i].life==0)
			continue;
		if(player[i].name=="狼人 ")
			langren++;
		else if(player[i].name=="村民 ")
			pingmin++;
		else if(player[i].name=="女巫 "||player[i].name=="预言家 "||player[i].name=="猎人 ")
			shenzhi++;
	}
	if(shenzhi==0||langren==0||pingmin==0)
		return 1;
	return 0;
}
void night()
{
	system("cls");
	system("color 0f");
	print(1,1);
	cout<<"天~黑~请~闭~眼~~~"<<endl;
	if(n>=12)
		shoushui(1,1);
	Sleep(3000);
	system("cls");
	print(1,1);
	cout<<"狼~人~请~睁~眼~~~"<<endl;
	if(player[MY].name=="狼人 ")
	{
		Sleep(1000);
		cout<<"你的同伴有:";
		for(int i=1; i<=n; i++)
		{
			if(i==MY)
				continue;
			if(player[i].name=="狼人 ")
			{
				cout<<player[i].num<<"号 ";
				player[i].know=2;
			}
		}
		Sleep(3000);
		cout<<endl<<"请问你们要杀谁:"<<endl<<"输入:";
		cin>>kill1;
		Sleep(1500);
		system("cls");
		print(1,1);
		cout<<"今晚你们要杀的是"<<kill1<<"号玩家"<<endl;
	}
	else
	{
		Sleep(4000);
		system("cls");
		print(1,1);
		cout<<"请问你们要杀谁?"<<endl;
		do
		{
			Sleep(rand()%18);
			srand(time(0));
			int x=rand()%n+1;
			if(player[x].name!="狼人 "&&player[x].life==1)
			{
				kill1=x;
				break;
			}
		}
		while(1);
		Sleep(5000);
	}
	Sleep(3000);
	system("cls");
	print(1,1);
	cout<<"狼~人~请~闭~眼~~~"<<endl;
	Sleep(2000);
	system("cls");
	print(1,1);
	cout<<"女~巫~请~睁~眼~~~"<<endl;
	Sleep(2000);
	system("cls");
	print(1,1);
	if(player[MY].name=="女巫 "&&player[MY].life==1)
	{
		Sleep(1000);
		if(jieyao==1)
		{
			cout<<"今晚"<<kill1<<"号玩家被杀"<<endl;
			Sleep(500);
			cout<<"请问你要救吗???"<<endl<<"A. 救 B.不救"<<endl<<"输入:";
			cin>>a;
			if(a=='A')
			{
				system("cls");
				print(1,1);
				cout<<"请问你要毒吗???"<<endl;
				Sleep(2000);
				system("cls");
				print(1,1);
				cout<<"今晚"<<kill1<<"号玩家被你解救"<<endl;
				jieyao=0;
				if(shou!=kill1)
					kill1=0;
			}
			else
			{
				if(shou==kill1)
					kill1=0;
				Sleep(2000);
				system("cls");
				print(1,1);
				cout<<"请问你要毒吗???"<<endl<<"A. 毒 B.不毒"<<endl<<"输入:";
				cin>>a;
				if(a=='A')
				{
					cout<<"请问你要毒谁???"<<endl<<"输入:";
					cin>>kill2;
					while(player[kill2].life!=1)
					{
						cout<<"输入错误,请重新输入:"<<endl;
						cin>>kill2;
					}
					duyao=0;
				}
			}
		}
		else
		{
			if(shou==kill1)
				kill1=0;
			Sleep(2000);
			system("cls");
			print(1,1);
			cout<<"请问你要毒吗???"<<endl<<"A. 毒 B.不毒"<<endl<<"输入:";
			cin>>a;
			if(a=='A')
			{
				cout<<"请问你要毒谁???"<<endl<<"输入:";
				cin>>kill2;
				while(player[kill2].life!=1)
				{
					cout<<"输入错误,请重新输入:"<<endl;
					cin>>kill2;
				}
				duyao=0;
			}
		}
	}
	else
	{
		bool b=0;
		cout<<"请问你是否要用解药???"<<endl;
		int FFF=0,kkkk;
		for(int i=1; i<=n; i++)
		{
			if(player[i].life==1&&player[i].name=="村民 ")
				FFF++;
			if(player[i].name=="女巫 ")
				kkkk=i;
		}
		if(jieyao==1&&player[kkkk].life==1)
		{
			if(FFF==1)
			{
				if(shou==kill1)
					jieyao=1;
				else
					jieyao=0;
				kill1=0;
				b=1;
			}
			else
				for(int i=1; i<=n; i++)
				{
					if(player[i].name=="女巫 "&&kill1==i)
					{
						kill1=0;
						if(shou==kill1)
							jieyao=1;
						else
							jieyao=0;
						b=1;
						break;
					}
					else if(player[i].name=="预言家 "&&kill1==i)
					{
						kill1=0;
						if(shou==kill1)
							jieyao=1;
						else
							jieyao=0;
						b=1;
						break;
					}
				}
		}
		Sleep(3000);
		if(b==0&&duyao==1&&player[kkkk].life==1)
		{
			system("cls");
			print(1,1);
			cout<<"请问你是否要用毒药???"<<endl;
			srand(time(0));
			int x=rand()%2;
			Sleep(1500);
			cout<<"请问你要毒谁???"<<endl;
			if(x==1)
			{
				duyao=0;
				int y=rand()%n+1;
				while((player[y].name=="女巫 "||player[y].name=="预言家 "||y==kill1)||player[y].life==0)
					y=rand()%n+1;
				kill2=y;
			}
		}
		else
		{
			Sleep(3000);
			system("cls");
			print(1,1);
			cout<<"请问你是否要用毒药???"<<endl;
			Sleep(3000);
			cout<<"请问你要毒谁???"<<endl;
			Sleep(3000);
		}
	}
	Sleep(3000);
	system("cls");
	print(1,1);
	cout<<"女~巫~请~闭~眼~~~"<<endl;
	if(n>6)
	{
		Sleep(3000);
		system("cls");
		print(1,1);
		cout<<"预~言~家~请~睁~眼~~~"<<endl;
		if(player[MY].name=="预言家 ")
		{
			Sleep(3000);
			cout<<"请问你想查验谁???"<<endl<<"输入:";
			int x;
			cin>>x;
			player[x].know=1;
			Sleep(2000);
			system("cls");
			print(1,1);
			cout<<"他的身份是:";
			if(player[x].name=="狼人 ")
				cout<<"狼人"<<endl;
			else
				cout<<"好人"<<endl;
			Sleep(3000);
		}
		else
		{
			Sleep(3000);
			cout<<"请问你想查验谁???"<<endl;
			Sleep(3000);
			system("cls");
			print(1,1);
			cout<<"他的身份是:......";
			Sleep(3000);
		}
		Sleep(3000);
		system("cls");
		print(1,1);
		cout<<"预~言~家~请~闭~眼~~~"<<endl;
	}
	Sleep(3000);
	if(kill1!=0)
		player[kill1].life=0;
	if(kill2!=0)
		player[kill2].life=0;
	player[kill1].how=1;
	player[kill2].how=3;
	system("cls");
	system("color F0");
	print(2,0);
}
void night2(int hhh,int hhhh)
{
	system("cls");
	system("color 0f");
	print(hhh,hhhh);
	cout<<"天~黑~请~闭~眼~~~"<<endl;
	if(n>=12)
		shoushui(hhh,hhhh);
	Sleep(3000);
	system("cls");
	print(hhh,hhhh);
	cout<<"狼~人~请~睁~眼~~~"<<endl;
	if(player[MY].name=="狼人 "&&player[MY].life==1)
	{
		Sleep(3000);
		cout<<endl<<"请问你们要杀谁:"<<endl<<"输入:";
		cin>>kill1;
		Sleep(1500);
		system("cls");
		print(hhh,hhhh);
		cout<<"今晚你们要杀的是"<<kill1<<"号玩家"<<endl;
	}
	else
	{
		Sleep(4000);
		system("cls");
		print(hhh,hhhh);
		cout<<"请问你们要杀谁?"<<endl;
		do
		{
			srand(time(0));
			int x=rand()%n+1;
			if(player[x].name!="狼人 "&&player[x].life==1)
			{
				kill1=x;
				break;
			}
		}
		while(1);
		Sleep(5000);
	}
	Sleep(3000);
	system("cls");
	print(hhh,hhhh);
	cout<<"狼~人~请~闭~眼~~~"<<endl;
	Sleep(2000);
	system("cls");
	print(hhh,hhhh);
	cout<<"女~巫~请~睁~眼~~~"<<endl;
	Sleep(2000);
	system("cls");
	print(hhh,hhhh);
	if(player[MY].name=="女巫 "&&player[MY].life==1)
	{
		Sleep(1000);
		if(jieyao==1)
		{
			cout<<"今晚"<<kill1<<"号玩家被杀"<<endl;
			Sleep(500);
			cout<<"请问你要救吗???"<<endl<<"A. 救 B.不救"<<endl<<"输入:";
			cin>>a;
			if(a=='A')
			{
				system("cls");
				print(hhh,hhhh);
				cout<<"请问你要毒吗???"<<endl;
				Sleep(2000);
				system("cls");
				print(hhh,hhhh);
				cout<<"今晚"<<kill1<<"号玩家被你解救"<<endl;
				jieyao=0;
				if(shou!=kill1)
					kill1=0;
			}
			else
			{
				if(shou==kill1)
					kill1=0;
				Sleep(2000);
				system("cls");
				print(hhh,hhhh);
				cout<<"请问你要毒吗???"<<endl<<"A. 毒 B.不毒"<<endl<<"输入:";
				cin>>a;
				if(a=='A')
				{
					cout<<"请问你要毒谁???"<<endl<<"输入:";
					cin>>kill2;
					while(player[kill2].life!=1)
					{
						cout<<"输入错误,请重新输入:"<<endl;
						cin>>kill2;
					}
					duyao=0;
				}
			}
		}
		else if(duyao==1)
		{
			if(shou==kill1)
				kill1=0;
			Sleep(2000);
			system("cls");
			print(hhh,hhhh);
			cout<<"请问你要毒吗???"<<endl<<"A. 毒 B.不毒"<<endl<<"输入:";
			cin>>a;
			if(a=='A')
			{
				cout<<"请问你要毒谁???"<<endl<<"输入:";
				cin>>kill2;
				while(player[kill2].life!=1)
				{
					cout<<"输入错误,请重新输入:"<<endl;
					cin>>kill2;
				}
				duyao=0;
			}
		}
		else
		{
			Sleep(2000);
			system("cls");
			print(hhh,hhhh);
			cout<<"请问你要毒吗???"<<endl;
		}
	}
	else
	{
		bool b=0;
		cout<<"请问你是否要用解药???"<<endl;
		int FFF=0,kkkk;
		for(int i=1; i<=n; i++)
		{
			if(player[i].life==1&&player[i].name=="村民 ")
				FFF++;
			if(player[i].name=="女巫 ")
				kkkk=i;
		}
		if(jieyao==1&&player[kkkk].life==1)
		{
			if(FFF==1)
			{
				if(shou==kill1)
					jieyao=1;
				else
					jieyao=0;
				kill1=0;
				b=1;
			}
			else
				for(int i=1; i<=n; i++)
				{
					if(player[i].name=="女巫 "&&kill1==i)
					{
						kill1=0;
						if(shou==kill1)
							jieyao=1;
						else
							jieyao=0;
						b=1;
						break;
					}
					else if(player[i].name=="预言家 "&&kill1==i)
					{
						kill1=0;
						if(shou==kill1)
							jieyao=1;
						else
							jieyao=0;
						b=1;
						break;
					}
				}
		}
		Sleep(3000);
		if(b==0&&duyao==1&&player[kkkk].life==1)
		{
			system("cls");
			print(hhh,hhhh);
			cout<<"请问你是否要用毒药???"<<endl;
			srand(time(0));
			int x=rand()%2;
			Sleep(1500);
			cout<<"请问你要毒谁???"<<endl;
			if(x==1)
			{
				duyao=0;
				int y=rand()%n+1;
				while((player[y].name=="女巫 "||player[y].name=="预言家 "||y==kill1)||player[y].life==0)
					y=rand()%n+1;
				kill2=y;
			}
		}
		else
		{
			Sleep(3000);
			system("cls");
			print(hhh,hhhh);
			cout<<"请问你是否要用毒药???"<<endl;
			Sleep(3000);
			cout<<"请问你要毒谁???"<<endl;
			Sleep(3000);
		}
	}
	Sleep(3000);
	system("cls");
	print(hhh,hhhh);
	cout<<"女~巫~请~闭~眼~~~"<<endl;
	if(n>6)
	{
		Sleep(3000);
		system("cls");
		print(hhh,hhhh);
		cout<<"预~言~家~请~睁~眼~~~"<<endl;
		if(player[MY].name=="预言家 "&&player[MY].life==1)
		{
			Sleep(3000);
			cout<<"请问你想查验谁???"<<endl<<"输入:";
			int x;
			cin>>x;
			player[x].know=1;
			Sleep(2000);
			system("cls");
			print(hhh,hhhh);
			cout<<"他的身份是:";
			if(player[x].name=="狼人 ")
				cout<<"狼人"<<endl;
			else
				cout<<"村民"<<endl;
			Sleep(3000);
		}
		else
		{
			Sleep(3000);
			cout<<"请问你想查验谁???"<<endl;
			Sleep(3000);
			system("cls");
			print(hhh,hhhh);
			cout<<"他的身份是:......";
			Sleep(3000);
		}
		Sleep(3000);
		system("cls");
		print(hhh,hhhh);
		cout<<"预~言~家~请~闭~眼~~~"<<endl;
	}
	Sleep(3000);
	if(kill1!=0)
		player[kill1].life=0;
	if(kill2!=0)
		player[kill2].life=0;
	player[kill1].how=1;
	player[kill2].how=3;
	system("cls");
	system("color F0");
	print(hhh+1,0);
}
bool lr=0;
void panduanlieren()
{
	if(lr==1)
		return;
	if(MY==lieren)
	{
		cout<<"请射杀一名玩家"<<endl;
		int x;
		cin>>x;
		while(player[x].life!=1)
		{
			cout<<"输入错误,请重新输入"<<endl;
			cin>>x;
		}
		Sleep(1000);
		cout<<lieren<<"号猎人发动技能,开枪带走了"<<x<<"号"<<endl;
		player[x].life=0;
		player[x].how=4;
	}
	else if(n>=9)
	{
		srand(time(0));
		int x=rand()%n+1;
		while(player[x].life!=1)
			x=rand()%n+1;
		Sleep(1000);
		cout<<lieren<<"号猎人发动技能,开枪带走了"<<x<<"号"<<endl;
		player[x].life=0;
		player[x].how=4;
	}
	lr=1;
}
void print1()
{
	cout<<"天亮了,昨晚";
	if(kill1!=0||kill2!=0)
	{
		cout<<kill1<<"号";
		if(kill2!=0)
		{
			cout<<","<<kill2<<"号";
			kill2=0;
		}
		cout<<"被杀"<<endl;
	}
	else
		cout<<"是平安夜"<<endl;
}
int main()
{
	system("cls");
	cout<<" "<<"狼人杀online"<<endl;
	cout<<"请输入人数个数:"<<endl;
	scanf("%d",&n);
	init1();
	init2(n);
	int k=1;
	do
	{
		srand(time(0));
		init3(k);
		cout<<".";
		Sleep(17);
		k++;
	}
	while(k<=n);
	system("cls");
	system("color F0");
	cout<<"游戏即将开始";
	for(int i=1; i<=6; i++)
	{
		cout<<".";
		Sleep(500);
	}
	Sleep(1500);
	cout<<endl<<endl<<"请大家查看身份牌......"<<endl;
	Sleep(45);
	srand(time(0));
	MY=rand()%n+1;
	cout<<"您的身份是:"<<player[MY].name<<endl;
	Sleep(500);
	cout<<"在"<<player[MY].num<<"号位上"<<endl;
	system("pause");
	system("cls");
	player[MY].know=2;
	print(1,0);
	cout<<"即将进入夜晚";
	for(int i=1; i<=6; i++)
	{
		cout<<".";
		Sleep(500);
	}
	night();
	print1();
	if(game_over())
	{
		Sleep(1000);
		system("cls");
		cout<<"游戏结束"<<endl;
		printhhh();
		return 0;
	}
	if(player[lieren].life==0&&lr==0)
		panduanlieren();
	if(game_over())
	{
		Sleep(1000);
		system("cls");
		cout<<"游戏结束"<<endl;
		printhhh();
		return 0;
	}
	toupiao(2,0);
	system("cls");
	print(2,0);
	if(game_over())
	{
		Sleep(1000);
		system("cls");
		cout<<"游戏结束"<<endl;
		printhhh();
		return 0;
	}
	else if(player[lieren].life==0&&lr==0)
		panduanlieren();
	cout<<"即将进入夜晚";
	for(int i=1; i<=6; i++)
	{
		cout<<".";
		Sleep(500);
	}
	night2(2,1);
	print1();
	if(game_over())
	{
		Sleep(1000);
		system("cls");
		cout<<"游戏结束"<<endl;
		printhhh();
		return 0;
	}
	if(player[lieren].life==0&&lr==0)
		panduanlieren();
	if(game_over())
	{
		Sleep(1000);
		system("cls");
		cout<<"游戏结束"<<endl;
		printhhh();
		return 0;
	}
	toupiao(3,0);
	system("cls");
	print(3,0);
	if(game_over())
	{
		Sleep(1000);
		system("cls");
		cout<<"游戏结束"<<endl;
		printhhh();
		return 0;
	}
	else if(player[lieren].life==0&&lr==0)
		panduanlieren();
	cout<<"即将进入夜晚";
	for(int i=1; i<=6; i++)
	{
		cout<<".";
		Sleep(500);
	}
	night2(3,1);
	print1();
	if(game_over())
	{
		Sleep(1000);
		system("cls");
		cout<<"游戏结束"<<endl;
		printhhh();
		return 0;
	}
	if(player[lieren].life==0)
		panduanlieren();
	if(game_over())
	{
		Sleep(1000);
		system("cls");
		cout<<"游戏结束"<<endl;
		printhhh();
		return 0;
	}
	toupiao(4,0);
	system("cls");
	print(4,0);
	if(game_over())
	{
		Sleep(1000);
		system("cls");
		cout<<"游戏结束"<<endl;
		printhhh();
		return 0;
	}
	else if(player[lieren].life==0&&lr==0)
		panduanlieren();
	if(game_over())
	{
		Sleep(1000);
		system("cls");
		cout<<"游戏结束"<<endl;
		printhhh();
		return 0;
	}
	cout<<"即将进入夜晚";
	for(int i=1; i<=6; i++)
	{
		cout<<".";
		Sleep(500);
	}
	night2(4,1);
	print1();
	if(game_over())
	{
		Sleep(1000);
		system("cls");
		cout<<"游戏结束"<<endl;
		printhhh();
		return 0;
	}
	if(player[lieren].life==0)
		panduanlieren();
	if(game_over())
	{
		Sleep(1000);
		system("cls");
		cout<<"游戏结束"<<endl;
		printhhh();
		return 0;
	}
	toupiao(5,0);
	system("cls");
	print(5,0);
	if(game_over())
	{
		Sleep(1000);
		system("cls");
		cout<<"游戏结束"<<endl;
		printhhh();
		return 0;
	}
	else if(player[lieren].life==0&&lr==0)
		panduanlieren();
	if(game_over())
	{
		Sleep(1000);
		system("cls");
		cout<<"游戏结束"<<endl;
		printhhh();
		return 0;
	}
	cout<<"即将进入夜晚";
	for(int i=1; i<=6; i++)
	{
		cout<<".";
		Sleep(500);
	}
	night2(5,1);
	print1();
	if(game_over())
	{
		Sleep(1000);
		system("cls");
		cout<<"游戏结束"<<endl;
		printhhh();
		return 0;
	}
	if(player[lieren].life==0)
		panduanlieren();
	if(game_over())
	{
		Sleep(1000);
		system("cls");
		cout<<"游戏结束"<<endl;
		printhhh();
		return 0;
	}
	toupiao(6,0);
	system("cls");
	print(6,0);
	if(game_over())
	{
		Sleep(1000);
		system("cls");
		cout<<"游戏结束"<<endl;
		printhhh();
		return 0;
	}
	else if(player[lieren].life==0&&lr==0)
		panduanlieren();
	if(game_over())
	{
		Sleep(1000);
		system("cls");
		cout<<"游戏结束"<<endl;
		printhhh();
		return 0;
	}
	cout<<"即将进入夜晚";
	for(int i=1; i<=6; i++)
	{
		cout<<".";
		Sleep(500);
	}
	night2(6,1);
	print1();
	if(game_over())
	{
		Sleep(1000);
		system("cls");
		cout<<"游戏结束"<<endl;
		printhhh();
		return 0;
	}
	if(player[lieren].life==0)
		panduanlieren();
	if(game_over())
	{
		Sleep(1000);
		system("cls");
		cout<<"游戏结束"<<endl;
		printhhh();
		return 0;
	}
	toupiao(7,0);
	system("cls");
	print(7,0);
	if(game_over())
	{
		Sleep(1000);
		system("cls");
		cout<<"游戏结束"<<endl;
		printhhh();
		return 0;
	}
	else if(player[lieren].life==0&&lr==0)
		panduanlieren();
	if(game_over())
	{
		Sleep(1000);
		cout<<endl<<"游戏结束";
		return 0;
	}
	while(1)
		system("pause");
	return 0;
}

可是快累死孩子了,请点个三连霸~~~

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值