生死存亡之数字炸弹(2.1)

新增了kbhit()函数

使游戏时更流畅:

#ifndef SOMETHING_H
#define SOMETHING_H
#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h>
void ycgb() {
	CONSOLE_CURSOR_INFO cursor;
	cursor.bVisible = FALSE;
	cursor.dwSize = sizeof(cursor);
	HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleCursorInfo(handle, &cursor);
	return ;
}
#endif
using namespace std;
int toint(double a) {
	return ((int)(a*10+5))/10;
}
void ys(double x) {
	for(int i=1; i<=100000010*2.5*x; i++) {}
}
void SlowDisplay(char *p) {
	while(1) {
		if(*p!=0) printf("%c",*p++);
		else break;
		ys(0.02);
	}
}
void Setpos(double x,double y) {
	COORD pos;
	pos.X=toint(y*2),pos.Y=toint(x);
	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
void Color(int a) {
	if(a==-1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);
	if(a==-2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
	if(a==-3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);

	if(a==0) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
	if(a==1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_RED);
	if(a==2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED);
	if(a==3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN);
	if(a==4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE);

	if(a==5) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_RED|BACKGROUND_BLUE);
	if(a==6) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_BLUE);
}

int tot=1,num=100,jb,fhd,sjq,m,x,x1[5];
string xx;
bool flag=false,root=false,game=false;
string str;
void gj() {
	system("shutdown -s -t 1");
}
void zt() {
	system("pause");
}
void qp() {
	system("cls");
}
void huan() {
	flag=true;
}
int zhuan(int l,int r,string ing) {
	int sum=0;
	l--,r--;
	for(int i=l; i<=r; i++) sum=sum*10+int(ing[i])-48;
	return sum;
}
void h() {
	int mam=0;
	while(++mam!=1) {
		system("color 1");
		system("color 2");
		system("color 3");
		system("color 4");
		system("color 5");
		system("color 6");
		system("color 7");
		system("color 8");
		system("color 9");
		system("color 10");
		system("color 11");
		system("color 12");
		system("color 13");
		system("color 14");
		system("color 15");
		system("color 16");
		system("color 17");
		system("color 18");
		system("color 19");
		system("color 20");
	}
}
void djs() {
	system("color 4");
	ys(1);
	qp();
	cout<<"关机倒计时开始:"<<endl;
	ys(1);
	qp();
	h();
	cout<<"                     "<<endl;
	cout<<"                     "<<endl;
	cout<<"                     "<<endl;
	cout<<"         ************"<<endl;
	cout<<"                  ***"<<endl;
	cout<<"                  ***"<<endl;
	cout<<"         ************"<<endl;
	cout<<"                  ***"<<endl;
	cout<<"                  ***"<<endl;
	cout<<"         ************"<<endl;
	ys(1);
	h();
	qp();
	cout<<"                     "<<endl;
	cout<<"                     "<<endl;
	cout<<"                     "<<endl;
	cout<<"         ************"<<endl;
	cout<<"                  ***"<<endl;
	cout<<"                  ***"<<endl;
	cout<<"         ************"<<endl;
	cout<<"         ***         "<<endl;
	cout<<"         ***         "<<endl;
	cout<<"         ************"<<endl;
	ys(1);
	h();
	qp();
	cout<<"                     "<<endl;
	cout<<"                     "<<endl;
	cout<<"                     "<<endl;
	cout<<"          ******     "<<endl;
	cout<<"         **   **     "<<endl;
	cout<<"        **    **     "<<endl;
	cout<<"              **     "<<endl;
	cout<<"              **     "<<endl;
	cout<<"              **     "<<endl;
	cout<<"         ************"<<endl;
	ys(1);
	h();
	if(!flag&&!root) gj();
	else qp(),cout<<"游戏失败!"<<endl,zt(),game=true;
}
void pt() {
	qp();
	srand(time(0));
	while(tot!=7) {
		int sum;
		srand(time(0));
		memset(x1,67,sizeof x1);
		printf("第%d轮:请输入一个1-%d之间的数\n\n",tot,num);
		if(tot==1) system("color 1"),x1[1]=rand()%num+1,x1[2]=rand()%num+1,x1[3]=rand()%num+1,x1[4]=rand()%num+1,sum=5;
		if(tot==2) system("color 2"),x1[1]=rand()%num+1,x1[2]=rand()%num+1,x1[3]=rand()%num+1,x1[4]=rand()%num+1,sum=5;
		if(tot==3) system("color 3"),x1[1]=rand()%num+1,x1[2]=rand()%num+1,x1[3]=rand()%num+1,sum=4;
		if(tot==4) system("color 8"),x1[1]=rand()%num+1,x1[2]=rand()%num+1,sum=3;
		if(tot==5) system("color 5"),x1[1]=rand()%num+1,sum=2;
		if(tot==6) system("color 6"),sum=1;
		printf("此轮有%d个炸弹\n踩到炸弹的概率为%d/%d\n",sum,sum/__gcd(sum,num),num/__gcd(sum,num));
		x1[0]=rand()%num+1;
		map<int,int> mp;
		for(int i=0; i<sum; i++) {
			if(mp[x1[i]]==0) mp[x1[i]]++;
			else {
				while(mp[x1[i]]) x1[i]=rand()%num+1;
				mp[x1[i]]++;
			}
		}
		srand(time(0));
		sort(x1,x1+5);
		bool pt_sjq=false;
		if(sjq) {
			SlowDisplay("你有水晶球,是否使用?\n(是--1 否--任意字符键 )\n");
			string  a;
			a=getch();
			if(a=="1") {
				sjq--;
				pt_sjq=true;
			}
			qp();
			printf("第%d轮:请输入一个1-%d之间的数\n\n",tot,num);
			printf("此轮有%d个炸弹\n踩到炸弹的概率为%d/%d\n",sum,sum/__gcd(sum,num),num/__gcd(sum,num));
		}
		if(flag||pt_sjq) {
			SlowDisplay("炸弹为:");
			for(int i=0; i<sum; i++) cout<<x1[i]<<" ";
			cout<<endl;
			pt_sjq=false;
		}
		string a;
		cin>>a;
		m=zhuan(1,a.size(),a);
		bool pt_f=true;
		if(m==x1[0]||m==x1[1]||m==x1[2]||m==x1[3]||m==x1[4]) {
			qp();
			SlowDisplay("你踩到了炸弹,游戏结束\n");
			if(fhd) {
				fhd--;
				SlowDisplay("你有防护盾,是否使用?\n(是--1 否--任意字符键 )\n");
				string  a;
				a=getch();
				if(a=="1")
					pt_f=false;
			}
			if(pt_f) djs();
			return ;
		}
		if(m<1||m>num) {
			qp();
			SlowDisplay("你的输入超出了范围,游戏结束\n");
			if(fhd) {
				fhd--;
				SlowDisplay("你有防护盾,是否使用?\n(是--1 否--任意字符键 )\n");
				string  a;
				a=getch();
				if(a=="1")
					pt_f=false;
			}
			if(pt_f) djs();
			return ;
		}
		qp();
		SlowDisplay("成功进入下一个关卡\n");
		SlowDisplay("金币+"),cout<<tot*10<<endl;
		jb+=tot*10;
		ys(1);
		num/=2;
		qp();
		tot++;
	}
	system("color 4");
	SlowDisplay("恭喜你来到了最后一关\n");
	zt();
	qp();
	srand(time(0));
	SlowDisplay("接下来是一个生死存亡的关键时刻\n");
	zt();
	qp();
	SlowDisplay("最后一轮:请输入0或1中的一个数\n");
	x=rand()%2;
	bool pt_sjq=false;
	if(sjq) {
		SlowDisplay("你有水晶球,是否使用?\n(是--1 否--任意字符键 )\n");
		string  a;
		a=getch();
		if(a=="1") {
			sjq--;
			pt_sjq=true;
		}
		qp();
		SlowDisplay("最后一轮:请输入0或1中的一个数\n");
	}
	if(flag||pt_sjq) {
		SlowDisplay("炸弹为:"),cout<<x<<endl;
		pt_sjq=false;
	}
	string a;
	cin>>a;
	m=zhuan(1,a.size(),a);
	bool pt_f=true;
	if(m==x) {
		qp();
		SlowDisplay("你踩到了炸弹,游戏结束\n");
		if(fhd) {
			fhd--;
			SlowDisplay("你有防护盾,是否使用?\n(是--1 否--任意字符键 )\n");
			string  a;
			a=getch();
			if(a=="1")
				pt_f=false;
		}
		if(pt_f) djs();
		return ;
	}
	if(m!=1&&m!=0) {
		qp();
		SlowDisplay("你的输入超出了范围,游戏结束\n");
		if(fhd) {
			fhd--;
			SlowDisplay("你有防护盾,是否使用?\n(是--1 否--任意字符键 )\n");
			string  a;
			a=getch();
			if(a=="1")
				pt_f=false;
		}
		if(pt_f) djs();
		return ;
	}
	SlowDisplay("金币+70\n");
	jb+=70;
}
void dk() {
	qp();
	SlowDisplay("此模式输入炸弹有要求,如下:\n");
	SlowDisplay("1.炸弹不能重复\n");
	SlowDisplay("2.炸弹不能超出范围\n");
	SlowDisplay("你准备好了吗?\n");
	zt();
	qp();
	srand(time(0));
	while(tot!=7) {
		int sum;
		srand(time(0));
		memset(x1,67,sizeof x1);
		if(tot==1) system("color 1"),sum=5;
		if(tot==2) system("color 2"),sum=5;
		if(tot==3) system("color 3"),sum=4;
		if(tot==4) system("color 8"),sum=3;
		if(tot==5) system("color 5"),sum=2;
		if(tot==6) system("color 6"),sum=1;
		while(1) {
			printf("第%d轮:请输入一个1-%d之间的数\n\n",tot,num);
			printf("出题者请输入%d个炸弹:\n",sum);
			string a;
			for(int i=0; i<sum; i++) cin>>a,x1[i]=zhuan(1,a.size(),a);
			sort(x1,x1+sum);
			map<int,int> mp;
			bool gm=true;
			for(int i=0; i<sum; i++) {
				mp[x1[i]]++;
				if(mp[x1[i]]>1) {
					gm=false;
					break;
				}
			}
			if(x1[0]<1||x1[sum-1]>num) gm=false;
			qp();
			if(gm==false) SlowDisplay("输入不符合要求,请重新输入!\n"),ys(1);
			else break;
			qp();
		}
		printf("第%d轮:请输入一个1-%d之间的数\n\n",tot,num);
		printf("此轮有%d个炸弹\n踩到炸弹的概率为%d/%d\n",sum,sum/__gcd(sum,num),num/__gcd(sum,num));

		if(flag) {
			SlowDisplay("炸弹为:");
			for(int i=0; i<sum; i++) cout<<x1[i]<<" ";
			cout<<endl;
		}
		SlowDisplay("玩家请输入数字:\n");
		string a;
		cin>>a;
		m=zhuan(1,a.size(),a);
		if(m==x1[0]||m==x1[1]||m==x1[2]||m==x1[3]||m==x1[4]) {
			qp();
			SlowDisplay("你踩到了炸弹,游戏结束\n");
			djs();
			return ;
		}
		if(m<1||m>num) {
			qp();
			SlowDisplay("你的输入超出了范围,游戏结束\n");
			djs();
			return ;
		}
		qp();
		SlowDisplay("成功进入下一个关卡\n");
		ys(1);
		num/=2;
		qp();
		tot++;
	}
	system("color 4");
	SlowDisplay("恭喜你来到了最后一关\n");
	zt();
	qp();
	SlowDisplay("接下来是一个生死存亡的关键时刻\n");
	zt();
	qp();
	while(1) {
		SlowDisplay("最后一轮:请输入0或1中的一个数\n");
		SlowDisplay("出题者请输入1个炸弹:\n");
		string a;
		cin>>a,x=zhuan(1,a.size(),a);
		bool gm=true;
		if(x%2!=x) gm=false;
		qp();
		if(gm==false) SlowDisplay("输入不符合要求,请重新输入!\n"),ys(1);
		else break;
		qp();
	}
	qp();
	SlowDisplay("最后一轮:请输入0或1中的一个数\n");
	if(flag) SlowDisplay("炸弹为:\n"),cout<<x<<endl;
	SlowDisplay("玩家请输入数字:\n");
	string a;
	a=getch();
	m=zhuan(1,a.size(),a);
	if(m==x) {
		qp();
		SlowDisplay("你踩到了炸弹,游戏结束\n");
		djs();
		return ;
	}
	if(m!=1&&m!=0) {
		qp();
		SlowDisplay("你的输入超出了范围,游戏结束\n");
		djs();
		return ;
	}
}
void jj() {
	qp();
	srand(time(0));
	int peo,zhu,m;
	while(1) {
		qp();
		SlowDisplay("游戏前,请先回答2个问题\n");
		SlowDisplay("      2<=people<=10     \n");
		SlowDisplay("1.此次游戏人数有几个:\n");
		string a;
		cin>>a;
		peo=zhuan(1,a.size(),a);
		if(peo<2||peo>10) SlowDisplay("输入不符合要求,请重新输入!\n"),ys(1);
		else break;
		qp();
	}
	qp();
	while(1) {
		SlowDisplay("游戏前,请先回答2个问题\n");
		SlowDisplay("2.本机的主人想成为玩家几:\n");
		string a;
		cin>>a;
		zhu=zhuan(1,a.size(),a);
		if(zhu<1||zhu>peo) SlowDisplay("输入不符合要求,请重新输入!\n"),ys(1);
		else break;
		qp();
	}
	qp();
	SlowDisplay("开始游戏!\t");
	ys(1);
	qp();
	bool f_new[11],f_old[11];
	memset(f_old,true,sizeof f_old);
	while(tot!=7) {
		memset(f_new,true,sizeof f_new);
		int sum;
		srand(time(0));
		memset(x1,67,sizeof x1);
		printf("第%d轮:请输入一个1-%d之间的数\n\n",tot,num);
		if(tot==1) system("color 1"),x1[1]=rand()%num+1,x1[2]=rand()%num+1,x1[3]=rand()%num+1,x1[4]=rand()%num+1,sum=5;
		if(tot==2) system("color 2"),x1[1]=rand()%num+1,x1[2]=rand()%num+1,x1[3]=rand()%num+1,x1[4]=rand()%num+1,sum=5;
		if(tot==3) system("color 3"),x1[1]=rand()%num+1,x1[2]=rand()%num+1,x1[3]=rand()%num+1,sum=4;
		if(tot==4) system("color 8"),x1[1]=rand()%num+1,x1[2]=rand()%num+1,sum=3;
		if(tot==5) system("color 5"),x1[1]=rand()%num+1,sum=2;
		if(tot==6) system("color 6"),sum=1;
		printf("此轮有%d个炸弹\n踩到炸弹的概率为%d/%d\n",sum,sum/__gcd(sum,num),num/__gcd(sum,num));
		x1[0]=rand()%num+1;
		map<int,int> mp;
		for(int i=0; i<sum; i++) {
			if(mp[x1[i]]==0) mp[x1[i]]++;
			else {
				while(mp[x1[i]]) x1[i]=rand()%num+1;
				mp[x1[i]]++;
			}
		}
		sort(x1,x1+5);
		if(flag) {
			SlowDisplay("炸弹为:");
			for(int i=0; i<sum; i++) cout<<x1[i]<<" ";
			cout<<endl;
		}
		for(int i=1; i<=peo; i++)
			if(f_old[i]) {
				printf("玩家%d:",i);
				string a;
				cin>>a;
				m=zhuan(1,a.size(),a);
				if(m==x1[0]||m==x1[1]||m==x1[2]||m==x1[3]||m==x1[4]) f_new[i]=false;
				if(m<1||m>num) f_new[i]=false;
			}
		qp();
		srand(time(0));
		int jj_f=0;
		for(int i=1; i<=peo; i++) {
			if(f_new[i]==false) jj_f=1,printf("玩家%d死亡\n",i);
		}
		for(int i=1; i<=peo; i++)
			if(f_new[i]==false) f_old[i]=false;
		int jj_ff=0;
		for(int i=1; i<=peo; i++)
			if(f_old[i]==false) jj_ff++;
		if(jj_ff==peo) {
			SlowDisplay("无人胜利\n");
			zt();
			SlowDisplay("因本机主人死亡\n");
			djs();
			return ;
		}
		if(jj_f==0) SlowDisplay("无人死亡\n");
		int t=0;
		while(t!=50000) {
			t++;
			if(kbhit()) {
				_getch();
				break;
			}
		}
		SlowDisplay("下一个关卡\n");
		zt();
		num/=2;
		qp();
		tot++;
	}
	system("color 4");
	SlowDisplay("恭喜你来到了最后一关\n");
	zt();
	qp();
	SlowDisplay("接下来是一个生死存亡的关键时刻\n");
	zt();
	qp();
	SlowDisplay("最后一轮:请输入0或1中的一个数\n");
	x=rand()%2;
	if(flag) SlowDisplay("炸弹为:\n"),cout<<x<<endl;
	for(int i=1; i<=peo; i++)
		if(f_old[i]) {
			printf("玩家%d:",i);
			string a;
			cin>>a;
			m=zhuan(1,a.size(),a);
			if(m==x) f_old[i]=false;
			if(m!=0&&m!=1) f_old[i]=false;
		}
	qp();
	int jj_f=0;
	for(int i=1; i<=peo; i++) {
		if(f_old[i]) jj_f=1;
	}
	if(jj_f) {
		SlowDisplay("玩家 ");
		for(int i=1; i<=peo; i++)
			if(f_old[i]) cout<<i<<" ";
		SlowDisplay("胜利!\n");
	} else SlowDisplay("无人胜利\n");
	int t=0;
	while(t!=50000) {
		t++;
		if(kbhit()) {
			_getch();
			break;
		}
	}
	if(f_old[zhu]==false) {
		SlowDisplay("因本机主人死亡\n");
		djs();
	}
	srand(time(0));
}
void jjdk() {
	qp();
	SlowDisplay("此模式输入炸弹有要求,如下:\n");
	SlowDisplay("1.炸弹不能重复\n");
	SlowDisplay("2.炸弹不能超出范围\n");
	SlowDisplay("你准备好了吗?\n");
	zt();
	qp();
	srand(time(0));
	int peo,zhu,m;
	while(1) {
		qp();
		SlowDisplay("游戏前,请先回答2个问题\n");
		SlowDisplay("      2<=people<=10     \n");
		SlowDisplay("1.此次游戏人数有几个:");
		string a;
		cin>>a;
		peo=zhuan(1,a.size(),a);
		if(peo<2||peo>10) cout<<"输入不符合要求,请重新输入!"<<endl,ys(1);
		else break;
		qp();
	}
	qp();
	while(1) {
		SlowDisplay("游戏前,请先回答2个问题\n");
		SlowDisplay("2.本机的主人想成为玩家几:\n");
		string a;
		cin>>a;
		zhu=zhuan(1,a.size(),a);
		if(zhu<1||zhu>peo) SlowDisplay("输入不符合要求,请重新输入!\n"),ys(1);
		else break;
		qp();
	}
	qp();
	SlowDisplay("开始游戏!\t");
	ys(1);
	qp();
	bool f_new[11],f_old[11];
	memset(f_old,true,sizeof f_old);
	while(tot!=7) {
		memset(f_new,true,sizeof f_new);
		int sum;
		srand(time(0));
		memset(x1,67,sizeof x1);
		if(tot==1) system("color 1"),sum=5;
		if(tot==2) system("color 2"),sum=5;
		if(tot==3) system("color 3"),sum=4;
		if(tot==4) system("color 8"),sum=3;
		if(tot==5) system("color 5"),sum=2;
		if(tot==6) system("color 6"),sum=1;
		while(1) {
			printf("第%d轮:请输入一个1-%d之间的数\n\n",tot,num);
			printf("出题者请输入%d个炸弹:\n",sum);
			string a;
			for(int i=0; i<sum; i++) cin>>a,x1[i]=zhuan(1,a.size(),a);
			sort(x1,x1+sum);
			map<int,int> mp;
			bool gm=true;
			for(int i=0; i<sum; i++) {
				mp[x1[i]]++;
				if(mp[x1[i]]>1) {
					gm=false;
					break;
				}
			}
			if(x1[0]<1||x1[sum-1]>num) gm=false;
			qp();
			if(gm==false) SlowDisplay("输入不符合要求,请重新输入!\n"),ys(1);
			else break;
			qp();
		}
		printf("第%d轮:请输入一个1-%d之间的数\n\n",tot,num);
		printf("此轮有%d个炸弹\n踩到炸弹的概率为%d/%d\n",sum,sum/__gcd(sum,num),num/__gcd(sum,num));
		if(flag) {
			SlowDisplay("炸弹为:");
			for(int i=0; i<sum; i++) cout<<x1[i]<<" ";
			SlowDisplay("\n");
		}
		for(int i=1; i<=peo; i++)
			if(f_old[i]) {
				printf("玩家%d:",i);
				string a;
				cin>>a;
				m=zhuan(1,a.size(),a);
				if(m==x1[0]||m==x1[1]||m==x1[2]||m==x1[3]||m==x1[4]) f_new[i]=false;
				if(m<1||m>num) f_new[i]=false;
			}
		qp();
		srand(time(0));
		int jj_f=0;
		for(int i=1; i<=peo; i++) {
			if(f_new[i]==false) jj_f=1,printf("玩家%d死亡\n",i);
		}
		for(int i=1; i<=peo; i++)
			if(f_new[i]==false) f_old[i]=false;
		int jj_ff=0;
		for(int i=1; i<=peo; i++)
			if(f_old[i]==false) jj_ff++;
		if(jj_ff==peo) {
			SlowDisplay("无人胜利\n");
			zt();
			SlowDisplay("因本机主人死亡\n");
			djs();
			return ;
		}
		if(jj_f==0) SlowDisplay("无人死亡\n");
		int t=0;
		while(t!=50000) {
			t++;
			if(kbhit()) {
				_getch();
				break;
			}
		}
		SlowDisplay("下一个关卡\n");
		zt();
		num/=2;
		qp();
		tot++;
	}
	system("color 4");
	SlowDisplay("恭喜你来到了最后一关\n");
	zt();
	qp();
	SlowDisplay("接下来是一个生死存亡的关键时刻\n");
	zt();
	qp();
	while(1) {
		SlowDisplay("最后一轮:请输入0或1中的一个数\n");
		SlowDisplay("出题者请输入1个炸弹:\n");
		string a;
		cin>>a,x=zhuan(1,a.size(),a);
		bool gm=true;
		if(x%2!=x) gm=false;
		qp();
		if(gm==false) SlowDisplay("输入不符合要求,请重新输入!\n"),ys(1);
		else break;
		qp();
	}
	SlowDisplay("最后一轮:请输入0或1中的一个数\n");
	if(flag) SlowDisplay("炸弹为:"),cout<<x,SlowDisplay("\n");
	for(int i=1; i<=peo; i++)
		if(f_old[i]) {
			printf("玩家%d:",i);
			string a;
			cin>>a;
			m=zhuan(1,a.size(),a);
			if(m==x) f_old[i]=false;
			if(m!=0&&m!=1) f_old[i]=false;
		}
	qp();
	int jj_f=0;
	for(int i=1; i<=peo; i++) {
		if(f_old[i]) jj_f=1;
	}
	if(jj_f) {
		SlowDisplay("玩家 ");
		for(int i=1; i<=peo; i++)
			if(f_old[i]) cout<<i<<" ";
		SlowDisplay("胜利!");
	} else SlowDisplay("无人胜利\n");
	int t=0;
	while(t!=50000) {
		t++;
		if(kbhit()) {
			_getch();
			break;
		}
	}
	if(f_old[zhu]==false) {
		SlowDisplay("因本机主人死亡\n");
		djs();
	}
	srand(time(0));
}
void dj() {
	if(jb==0&&!flag) {
		SlowDisplay("你现在还没有金币,快去普通模式战斗吧!\n");
		int t=0;
		while(t!=50000) {
			t++;
			if(kbhit()) {
				_getch();
				break;
			}
		}
		return ;
	}
	int mon[3]= {0,500,500};
	while(1) {
		qp();
		SlowDisplay("你的金币量:"),cout<<jb<<endl;
		SlowDisplay("道具:\n");
		SlowDisplay("1.防护盾(500)--抵抗一次关机\n");
		SlowDisplay("2.水晶球(500)--知晓一次炸弹\n");
		SlowDisplay("退出请输入0\n");
		string a;
		cin>>a;
		m=zhuan(1,a.size(),a);
		if(m==0) return ;
		else if(m<1||m>2) SlowDisplay("请重新输入\n"),ys(1);
		else if(jb<mon[m]&&!flag) SlowDisplay("OH NO! 你金币不足\n");
		else {
			if(m==1) fhd++;
			if(m==2) sjq++;
			SlowDisplay("购买成功!\n");
			if(!flag) jb-=mon[m];
		}
	}
}
void js() {
	SlowDisplay("每一轮中都有一个或以上的炸弹\n");
	Sleep(500);
	SlowDisplay("千万不要踩到炸弹\n");
	Sleep(500);
	SlowDisplay("或超出给定的范围哟......\n");
	Sleep(500);
	SlowDisplay("如果你是admin/root\n");
	Sleep(500);
	SlowDisplay("请输入admin/root密码\n");
	int t=0;
	while(t!=50000) {
		t++;
		if(kbhit()) {
			_getch();
			break;
		}
	}
}
void yxjs() {
	SlowDisplay("普通模式:单人游戏\n");
	Sleep(500);
	SlowDisplay("对抗模式:双人游戏\n");
	Sleep(500);
	SlowDisplay("竞技模式:三人及以上人游戏\n");
	Sleep(500);
	SlowDisplay("竞技对抗:竞技和对抗模式的结合体\n");
	Sleep(500);
	SlowDisplay("如果你输入的数是字符\n");
	Sleep(500);
	SlowDisplay("系统会将其变为ascall码\n");
	Sleep(500);
	zt();
}
void jc() {
	SlowDisplay("第1轮:请输入一个1-100之间的数\n\n");
	SlowDisplay("此轮有5个炸弹\n踩到炸弹的概率为1/20\n");
	int t=0;
	while(t!=50000) {
		t++;
		if(kbhit()) {
			_getch();
			break;
		}
	}
	SlowDisplay("炸弹为:1 2 3 4 5\n");
	int ti=0;
	while(ti!=50000) {
		ti++;
		if(kbhit()) {
			_getch();
			break;
		}
	}
	SlowDisplay("你的任务是不要踩到炸弹\n");
	Sleep(1000);
	SlowDisplay("          不超出给定的范围\n\n");
	Sleep(1000);
	SlowDisplay("试试看:\n");
	string a;
	cin>>a;
	m=zhuan(1,a.size(),a);
	if(m==1||m==2||m==3||m==4||m==5) {
		qp();
		SlowDisplay("你踩到了炸弹,游戏结束\n");
	}
	if(m<1||m>num) {
		qp();
		SlowDisplay("你的输入超出了范围,游戏结束\n");
	}
	qp();
	SlowDisplay("成功完成教程!\n");
	SlowDisplay("进入普通模式\n");
	zt();
	ys(1);
	num/=2;
	qp();
	tot++;
}
void win() {
	qp();
	SlowDisplay("恭喜你通关此游戏!\n");
	zt();
}
void mm(bool &flag) {
	SlowDisplay("请输入密码:");
	cin>>str;
	int hash=0;
	for(int i=0; i<str.size(); i++) hash=(hash*37+str[i])%9999991;
	srand(hash);
	rand();
	int code1=rand();
	hash=0;
	for(int i=0; i<str.size(); i++) hash=(hash*51+str[i])%10241023;
	srand(hash);
	rand();
	int code2=rand();
	hash=0;
	for(int i=0; i<str.size(); i++) hash=(hash*13+str[i])%54088025;
	srand(hash);
	rand();
	int code3=rand();
	if(code1!=27591||code2!=18068||code3!=1177||str.size()>8) cout<<"密码错误!"<<endl;
	else flag=!flag,root=false;
}
void ss(bool &root) {
	int s1=rand()%100+1000,s2=rand()%100+1000,s3;
	SlowDisplay("请输入");
	cout<<s1;
	SlowDisplay("和");
	cout<<s2;
	SlowDisplay("的和:\n");
	if(flag) SlowDisplay("和为:"),cout<<s1+s2<<endl;
	cin>>s3;
	if(s3!=s1+s2) SlowDisplay("和错误!/n");
	else  flag=false,root=!root;
}
void show() {
	Setpos(0,0);
	SlowDisplay("           主菜单             \n");
	SlowDisplay("******************************\n");
	SlowDisplay("*********1.开始游戏***********\n");
	SlowDisplay("*********2.游戏教程***********\n");
	SlowDisplay("*********3.玩法介绍***********\n");
	SlowDisplay("*********4.admin模式**********\n");
	SlowDisplay("*********5.root模式***********\n");
	SlowDisplay("*********6.退出游戏***********\n");
	SlowDisplay("******************************\n");
}
void adminshow() {
	Setpos(0,0);
	SlowDisplay("            admin             \n");
	SlowDisplay("******************************\n");
	SlowDisplay("*********1.开始游戏***********\n");
	SlowDisplay("*********2.游戏教程***********\n");
	SlowDisplay("*********3.玩法介绍***********\n");
	SlowDisplay("*********4.退出admin**********\n");
	SlowDisplay("*********5.root模式***********\n");
	SlowDisplay("*********6.退出游戏***********\n");
	SlowDisplay("******************************\n");
}
void rootshow() {
	Setpos(0,0);
	SlowDisplay("            root              \n");
	SlowDisplay("******************************\n");
	SlowDisplay("*********1.开始游戏***********\n");
	SlowDisplay("*********2.游戏教程***********\n");
	SlowDisplay("*********3.玩法介绍***********\n");
	SlowDisplay("*********4.admin模式**********\n");
	SlowDisplay("*********5.退出root***********\n");
	SlowDisplay("*********6.退出游戏***********\n");
	SlowDisplay("******************************\n");
}
void gameshow() {
	Setpos(0,0);
	SlowDisplay("            Play              \n");
	SlowDisplay("******************************\n");
	SlowDisplay("*********1.普通模式***********\n");
	SlowDisplay("*********2.对抗模式***********\n");
	SlowDisplay("*********3.竞技模式***********\n");
	SlowDisplay("*********4.竞技对抗***********\n");
	SlowDisplay("*********5.防御道具***********\n");
	SlowDisplay("*********6.模式介绍***********\n");
	SlowDisplay("*********7.返回主页***********\n");
	SlowDisplay("******************************\n");
}
void ks() {
	while(1) {
		gameshow();
		xx=getch();
		if(xx=="1") {
			pt();
			if(!game) win();
			qp();
			tot=1,num=100,game=false;
		}
		if(xx=="2") {
			dk();
			if(!game) win();
			qp();
			tot=1,num=100,game=false;
		}
		if(xx=="3") {
			jj();
			if(!game) win();
			qp();
			tot=1,num=100,game=false;
		}
		if(xx=="4") {
			jjdk();
			if(!game) win();
			qp();
			tot=1,num=100,game=false;
		}
		if(xx=="5") {
			qp();
			dj();
			qp();
		}
		if(xx=="6") {
			qp();
			yxjs();
			qp();
		}
		if(xx=="7") {
			return ;
		}
		qp();
	}
}

int main() {
	ycgb();
	system("mode con cols=31 lines=15");
	srand(time(0));
	int tim=0;
	while(1) {
		tim++;
		system("color 0");
		if(tim==1) {
			Setpos(6,3),SlowDisplay("欢迎来到数字炸弹!");
			Setpos(7,4);
			long long t=0;
			while(t!=50000) {
				t++;
				if(kbhit()) {
					string a;
					a=getch();
					if(a=="t") {
						huan();
						break;
					} else break;
				}
			}
		}
		if(!flag&&!root) show();
		else if(flag&&!root) adminshow();
		else rootshow();
		xx=getch();
		if(xx=="1") {
			ks();
			qp();
			continue;
		}
		if(xx=="2") {
			qp();
			jc();
			pt();
			if(!game) win();
			qp();
			tot=1,num=100,game=false;
		}
		if(xx=="3") {
			qp();
			js();
		}
		if(xx=="4") {
			qp();
			mm(flag);
		}
		if(xx=="5") {
			qp();
			ss(root);
		}
		if(xx=="6") {
			qp();
			return 0;
		}
		qp();
	}

	return 0;
}

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
将这些文字缩短到500字以内。平台的广告业务主要是指外卖平台对商家用户开放的竞价排名推广业务,主要包括平台首页的店铺推荐和分类页的店铺排名两类业务。尽管当前入驻美团外卖平台的商家不胜枚举,但消费者用户在平台上的浏览量往往却非常有限,因此一家店铺位置的高低几乎决定了它的生死存亡。 在分析美团外卖平台关于竞价推广业务的定价策略之前,我们首先需要了解一下美团外卖关于店铺的排名规则。美团外卖的店铺排名由外卖交易额、消费者转化率、活动力度、订单起送价格、店铺评分、好评率以及收藏人数等规则共同决定,平台给每一类指标赋予不同的权重,所有指标的加权平均数最终会决定店铺的具体排名。 其中,交易额通常以月为单位,由月订单数量和订单均价共同决定,交易额越高,店铺排名会越靠前;消费者转化率分为浏览转化率和下单转化率两类,浏览转化率=进店消费者用户数量/店铺的曝光用户数,下单转化率=订单的成交数量/进店用户数量,转化率的高低与店铺排名成同向变化关系。除此之外,店铺的活动力度也会影响店铺的排名情况,店铺活动的力度越大、形式越多,则店铺的排名会越靠前。同样的,订单的起送价与店铺活动力度类似,起送价越高的店铺排名会越置后。最后一个影响店铺排名的指标是店铺的评分、好评率以及店铺的收藏人数,在其他指标相同的情况下,评分越高、好评率越高或收藏人数越多的店铺排名越靠前。 除以上基本指标外,品牌连锁店、大众点评高分店铺、美团平台专送以及新入驻的店铺都会成为店铺排名的加分项,其中,美团外卖平台会对新入驻的商家用户开启一周的排名保护,新商家可以轮流享受第 8 和第 12 两个前置位置。相反,差评率、无效订单、订单超时以及刷单行为则会成为美团外卖店铺排名的扣分项,平台一旦发现店铺刷单的行为,则会禁止店铺参与店铺排名,与此同时也就基本宣告了店铺的死亡。基于上述美团外卖的店铺排名体系,美团外卖平台针对商家用户推出了竞价排名业务,商家用户通过向平台购买曝光率,可以选择第5、第10、第15、第20 和第25五个排名的位置。平台将一天分为数个数段,以餐饮为例,每个时段平台会推出不同品类店铺的竞价排名业务,如 5 点到 10 点为早餐店铺业务,10点到14点以及16点到20点为正餐店铺业务,14点到16点为下午茶店铺业务,20点到次日 5 点则为夜宵店铺业务。店铺参与竞价排名会在相应的时间段获得额外的曝光,其排名也相对会有所提升。除了时间段以外,平台关于竞价排名的定价还与店铺所属的配送区域有关,平台将配送区域划分为若干块,区域内的用户数量越多,竞价排名的价格也相应越高。
02-06

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值