C++ 游戏

有4个呦

#include<bits/stdc++.h>
using namespace std;
int main()
{
	long long qian=10,aden=1,amin=20,yao=0,aminx=20,agong=0,agongg=5,afang=0,mg[5]={5,20,30,40,50},mq[5]={2,10,20,50,100},mm[5]={20,40,60,80,100},a,b=0,c,d;
	cout<<"1.资源商店"<<endl;
	cout<<"2.获得宠物"<<endl;
	cout<<" 3.出战"<<endl;
	cout<<"恭喜获得新人礼包:金币*1"<<endl;
	cin>>b;
	if(b==1 || b==3)
	{
		cout<<"请先获得宠物"<<endl;
		cout<<"1.小猫 收费:金币*1"<<endl;
		cout<<"2.小狗 收费:金币*1"<<endl;
	}else if(b==2)
	{
		cout<<"1.小猫 收费:金币*1"<<endl;
		cout<<"2.小狗 收费:金币*1"<<endl;
	}
	cin>>b;
	if(b==1)
	{
		cout<<"恭喜获得宠物:小猫"<<endl;
	}else if(b==2)
	{
		cout<<"恭喜获得宠物:小狗"<<endl;
	}
	cout<<"成功获得宠物 奖励金币*10"<<endl; 
	while(b!=9)
	{
		cout<<"1.资源商店"<<endl;
		cout<<"2.宠物升级"<<endl;
		cout<<"3.出战"<<endl;
		cout<<"4.资料"<<endl; 
		cout<<"按9结束游戏"<<endl;
		cin>>b;
		if(b==9)
		{
			cout<<"感谢游玩"<<endl;
			return 0;
		}else if(b==1)
		{
			cout<<"1.装备"<<endl;
			cout<<"2.药品"<<endl; 
			cin>>a;
			if(a==1)
			{
				cout<<"1.攻击"<<endl;
				cout<<"2.防御"<<endl;
				cin>>c;
				if(c==1)
				{
					cout<<"1.铁齿 (+20) 收费:金币*40"<<endl;
					cout<<"2.钢毛 (+25) 收费:金币*50"<<endl;
					cout<<"3.铜爪 (+30) 收费:金币*60"<<endl;
					cout<<"4.银掌 (+50) 收费:金币*100"<<endl;
					cout<<"5.远古石球 (+100) 收费:金币*300"<<endl;
					cin>>d;
					if(d==5 && qian>=300)
					{
						agong+=100;
						qian-=300;
						cout<<"当前攻击力:"<<agong<<endl; 
					}else if(d==1 && qian>=40) 
					{
						agong+=20;
						qian-=40;
						cout<<"当前攻击力:"<<agong<<endl;
					}else if(d==2 && qian>=50) 
					{
						agong+=25;
						qian-=50;
						cout<<"当前攻击力:"<<agong<<endl;
					}else if(d==3 && qian>=60) 
					{
						agong+=30;
						qian-=60;
						cout<<"当前攻击力:"<<agong<<endl;
					}else if(d==4 && qian>=100) 
					{
						agong+=50;
						qian-=100;
						cout<<"当前攻击力:"<<agong;
					}else if(d==1 || d==2 || d==3 || d==4 || d==5)
					{
						cout<<"金币不够"<<endl<<"当前金币:"<<qian<<endl;
					}
				}
				if(c==2)
				{
					cout<<"1.铁甲 (%20) 收费:金币*40"<<endl;
					cout<<"2.钢甲 (%30) 收费:金币*50"<<endl;
					cout<<"3.铜甲 (%40) 收费:金币*60"<<endl;
					cout<<"4.银甲 (%50) 收费:金币*100"<<endl;
					cout<<"5.时空金甲 (%90) 收费:金币*300"<<endl;
					cin>>d; 
					if(d==5 && qian>=300)
					{
						afang=1;
						qian-=300;
						amin+=150;
						cout<<"当前防御力:%"<<afang<<endl<<"当前血量总值:"<<amin<<endl; 
					}else if(d==1 && qian>=40) 
					{
						afang=8;
						qian-=40;
						amin+=20;
						cout<<"当前防御力:%"<<afang<<endl<<"当前血量总值:"<<amin<<endl;
					}else if(d==2 && qian>=50) 
					{
						afang=7;
						qian-=50;
						amin+=25;
						cout<<"当前防御力:%"<<afang<<endl<<"当前血量总值:"<<amin<<endl;
					}else if(d==3 && qian>=60) 
					{
						afang=6;
						qian-=60;
						amin+=30;
						cout<<"当前防御力:%"<<afang<<endl<<"当前血量总值:"<<amin<<endl;
					}else if(d==4 && qian>=100) 
					{
						afang=5;
						qian-=100;
						amin+=50;
						cout<<"当前防御力:%"<<afang<<endl<<"当前血量总值:"<<amin<<endl;
					}else if(d==1 || d==2 || d==3 || d==4 || d==5)
					{
						cout<<"金币不够"<<endl<<"当前金币:"<<qian<<endl;
					}
				} 
			}
			if(a==2)
			{
				cout<<"1.血液回满 收费:金币*1"<<endl;
				cout<<"2.快速回复*5(可在战斗中使用) 收费:金币*2"<<endl;
				cin>>c;
				if(c==1 && qian>=1) 
				{
					aminx=amin;
					qian-=1;
					cout<<"当前血量:"<<aminx<<endl;
				}else if(c==1)
				{
					cout<<"金币不够"<<endl<<"当前金币:"<<qian<<endl;
				}
				if(c==2 && qian>=2)
				{
					yao+=5;
					cout<<"当前药品量:"<<yao<<endl;
					qian-=2;
				}else if(c==2)
				{
					cout<<"金币不够"<<endl<<"当前金币:"<<qian<<endl;
				}  
			} 
		}else if(b==2)
		{
			if(afang<20 && agong<20)
			{
				cout<<"请先获得至少一件攻击用具和至少一件防御用具"<<endl; 
			}else
			{
				cout<<"当前等级为"<<aden<<"级,晋级需要金币*"<<aden*100<<"是否晋级?"<<endl; 
				cout<<"1.是"<<endl;
				cout<<"2.否"<<endl;
				cin>>a;
				if(a==1 && qian>=aden*100)
				{
					aden++;
					agongg*=2;
					amin*=2;
					qian+=aden*10;
					cout<<"恭喜晋级成功,获得奖励:金币*"<<aden*10<<endl;
				}else if(a==1)
				{
					cout<<"金币不够"<<endl<<"当前金币:"<<qian<<endl;
				} 
			}
		}else if(b==3 && aminx>0)
		{
			cout<<"1.小怪 攻击力:5 生命值:30"<<endl;
			cout<<"2.小怪之王 攻击力:20 生命值:90"<<endl;
			cout<<"3.小魔头 攻击力:30 生命值:90"<<endl;
			cout<<"4.大魔头 攻击力:40 生命值:120"<<endl;
			cout<<"5.万魔之王 攻击力:50 生命值:150"<<endl;
			cin>>a;
			cout<<"开始战斗"<<endl;
			if(afang!=0)
			{
				mg[a-1]/=10;
				mg[a-1]*=afang;
			}
			while(aminx>0 && mm[a-1]>0)
			{
				cout<<"1.攻击"<<endl;
				cout<<"2.快速回复"<<endl;
				cin>>c;
				if(c==1)
				{
					mm[a-1]-=(agong+agongg);
					aminx-=mg[a-1];
					cout<<"魔兽血量-"<<agong+agongg<<"="<<mm[a-1]<<endl<<"宠物血量-"<<mg[a-1]<<"="<<aminx<<endl;
				}else if(c==2) 
				{
					if(yao>0)
					{
						yao--;
						aminx=amin;
						cout<<"当前血量:"<<aminx<<endl; 
						cout<<"剩余药品量:"<<yao<<endl;
					}else
					{
						cout<<"药品不足"<<endl; 
					}
				} 
			}
			if(mm[a-1]<=0 && aminx>0)
			{
				cout<<"挑战成功"<<endl<<"获得奖励 金币*"<<mq[a-1]<<endl; 
				qian+=mq[a-1];
				if(a!=1)
				{
					mg[a-1]=a*5*2;
					mm[a-1]=mg[a-1]/2*4;
				}else
				{
					mg[a-1]=5;
					mm[a-1]=20;
				}
			}else
			{
				cout<<"你死了"<<endl; 
				if(a!=1)
				{
					mg[a-1]=a*5*2;
					mm[a-1]=mg[a-1]/2*4;
				}else
				{
					mg[a-1]=5;
					mm[a-1]=20;
				}
			} 
		}else if(b==3)
		{
			cout<<"您的宠物已经没有血了,请先补满血再来"<<endl; 
		}else if(b==4)
		{
			cout<<"-------------------------"<<endl;
			cout<<"|血量总值:"<<amin<<" ";
			cout<<"当前血量:"<<aminx<<endl;
			cout<<"|当前金币:"<<qian<<" ";
			cout<<"当前攻击力:"<<agong+agongg<<endl;
			if(afang!=0)
			{
				cout<<"|当前防御力:%"<<(10-afang)*10<<" ";
			}else
			{
				cout<<"|当前防御力:%0"<<" ";
			}
			cout<<"当前药品量:"<<yao<<endl;
		} 
	}
	return 0;
}

 贪吃蛇

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <conio.h>
#include <cmath>
#include <windows.h>
using namespace std;

/*** 光标定位 ***/
HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);
COORD coord;

void locate(int x,int y)
{
coord.X=y;
coord.Y=x;
SetConsoleCursorPosition(hout,coord);
};

/*** 隐藏光标 ***/
void hide()
{
CONSOLE_CURSOR_INFO cursor_info={1,0};
SetConsoleCursorInfo(hout, &cursor_info);
}

/*** 生成随机数 ***/
double random(double start, double end)
{
return start+(end-start)*rand()/(RAND_MAX + 1.0);
}

/*** 定义地图的长宽,蛇的坐标,长度,方向,食物的位置 ***/
int m,n;

struct node
{
int x,y;
}snake[1000];

int snake_length,dir;
node food;
int direct[4][2]={{-1,0},{1,0},{0,-1},{0,1}};

/*** 输出墙 ***/
void print_wall()
{
cout << " ";
for (int i=1;i<=n;i++)
cout << "-";
cout << endl;
for (int j=0;j<=m-1;j++)
{
cout << "|";
for (int i=1;i<=n;i++) cout << " ";
cout << "|" << endl;
}
cout << " ";
for (int i=1;i<=n;i++)
cout << "-";
}

/*** 首次输出蛇,其中snake[0]代表头 ***/
void print_snake()
{
locate(snake[0].x,snake[0].y);
cout << "@";
for (int i=1;i<=snake_length-1;i++)
{
locate(snake[i].x,snake[i].y);
cout << "*";
}
}

/*** 判断是否撞墙或者自撞 ***/
bool is_correct()
{
if (snake[0].x==0 || snake[0].y==0 || snake[0].x==m+1 || snake[0].y==n+1) return false;
for (int i=1;i<=snake_length-1;i++)
{
if (snake[0].x==snake[i].x && snake[0].y==snake[i].y) return false;
}
return true;
}

/*** 随机生成并输出食物位置 ***/
bool print_food()
{
srand((unsigned)time(0));
bool e;
while (1)
{
e=true;
int i=(int) random(0,m)+1,j=(int) random(0,n)+1;
food.x=i;food.y=j;
for (int k=0;k<=snake_length-1;k++)
{
if (snake[k].x==food.x && snake[k].y==food.y)
{
e=false;break;
}
}
if (e) break;
}
locate(food.x,food.y);
cout << "$";
return true;
}

/*** 蛇的前进 ***/
bool go_ahead()
{
node temp;
bool e=false;
temp=snake[snake_length-1];
for (int i=snake_length-1;i>=1;i--)
snake[i]=snake[i-1];
snake[0].x+=direct[dir][0];
snake[0].y+=direct[dir][1];
locate(snake[1].x,snake[1].y);
cout << "*";
/*** 吃到了食物 ***/
if (snake[0].x==food.x && snake[0].y==food.y)
{
snake_length++;
e=true;
snake[snake_length-1]=temp;
}
/*** 输出此时蛇状态 ***/
if (!e)
{
locate(temp.x,temp.y);
cout << " ";
}
else
print_food();
locate(snake[0].x,snake[0].y);
cout << "@";
/*** 如果自撞 ***/
if (!is_correct())
{
system("cls");
cout << "You lose!" << endl << "Length: " << snake_length << endl;
return false;
}
return true;
}

/*** 主函数 ***/
int main()
{
cout << "--------------------贪吃蛇---------------------" << endl;
cout << "请注意窗口大小,以免发生错位.建议将窗口调为最大." << endl;
cout << "先选择难度.请在1-10中输入1个数,1最简单,10则最难" << endl;
cout << "然后进入游戏画面,以方向键控制方向.祝你游戏愉快!" << endl;
cout << "-----------------------------------------------" << endl;
m=25;
n=40;
if (m<10 || n<10 || m>25 || n>40)
{
cout << "ERROR" << endl;
system("pause");
return 0;
}
int hard;
cin >> hard;
if (hard<=0 || hard>100)
{
cout << "ERROR" << endl;
system("pause");
return 0;
}
/*** 数据全部初始化,包括蛇长,位置,方向 ***/
snake_length=5;
clock_t a,b;
char ch;
double hard_len;
for (int i=0;i<=4;i++)
{
snake[i].x=1;
snake[i].y=5-i;
}
dir=3;
/*** 输出初始地图,蛇与食物 ***/
system("cls");
hide();
print_wall();
print_food();
print_snake();
locate(m+2,0);
cout << "Now length: ";
/*** 开始游戏 ***/
while (1)
{
/*** 难度随长度增加而提高 ***/
hard_len=(double)snake_length/(double) (m*n);
/*** 调节时间,单位是ms ***/
a=clock();
while (1)
{
b=clock();
if (b-a>=(int)(400-30*hard)*(1-sqrt(hard_len))) break;
}
/*** 接受键盘输入的上下左右,并以此改变方向 ***/
if (kbhit())
{
ch=getch();
if (ch==-32)
{
ch=getch();
switch(ch)
{
case 72:
if (dir==2 || dir==3)
dir=0;
break;
case 80:
if (dir==2 || dir==3)
dir=1;
break;
case 75:
if (dir==0 || dir==1)
dir=2;
break;
case 77:
if (dir==0 || dir==1)
dir=3;
break;
}
}
}
/*** 前进 ***/
if (!go_ahead()) break;
/*** 在最后输出此时长度 ***/
locate(m+2,12);
cout << snake_length;
}
system("pause");
return 0;
}
#include<bits/stdc++.h>
#include<windows.h>
#include<stdio.h>
#include<conio.h>
#include<time.h>
#include<cmath>
#define KEY_DOWN(VK_NONAME)((GetAsyncKeyState(VK_NONAME)&0x8000)?1:0)
using namespace std;
int m[35][35],n[35][35];
void Color(int a)
{
    if(a==0) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
    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_GREEN);
    if(a==3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
    if(a==4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);
    if(a==5) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
    if(a==6) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);
    if(a==7) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN);//木 
    if(a==8) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);//铁 
    if(a==9) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY);
    if(a==10) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|BACKGROUND_GREEN);
    if(a==11) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE|BACKGROUND_GREEN);
    if(a==12) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|BACKGROUND_GREEN);
    if(a==13) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE|BACKGROUND_INTENSITY|BACKGROUND_BLUE);
}
void SetPos(int x,int y)
{
    COORD pos;
    pos.X=y*2,pos.Y=x+3;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
int X,Y,gx,gy,gunT,gunZ,T,G[10],F[30];
int Win,Lev,Blood,Dun,Bmax,Dmax,WuDi,Gguai,Bo,Boo,sy,bu;
int Bx,By,Bblood,Bsi,Bjiao,Bdu,Bfang,Bxz,Byz;
void Map(int x);
void Jian(int x)
{
//    if(WuDi>0) return;
//    if(Dun>x) Dun-=x; else if(Dun<=0) Blood-=1;
//    else if(Dun>0&&Dun<=x)
//    {
//        if(F[13]==0) Blood-=1;
//        if(F[13]==1) WuDi=20;
//        if(F[17]==1) Boo=3;
//        Dun=-1;
//    }
}
bool CanGo(int x,int y,int q) //0为自己 1其他 2激光怪 3激光枪 4子弹怪 5爆毒 6子弹 7 BOSS
{
    if(abs(Bx-x)<=1&&abs(By-y)<=1&&q==1) return 0;
    if(m[x][y]==2||m[x][y]==3) return 0;
    if((q==0||q==1)&&n[x][y]==1) return 0;
    if(m[x][y]==0) return 1;
    if(m[x][y]>=4&&m[x][y]<=8) return 1;
    if(m[x][y]>=84&&m[x][y]<=88) return 1;
    if(m[x][y]>=9&&m[x][y]<=31) return 1;
    if(m[x][y]>=59&&m[x][y]<=81) return 1;
    if((q==2||q==3||q==5)&&m[x][y]==1) return 1;
    if((q==2||q==3)&&m[x][y]>=100&&m[x][y]<250) return 1;
    if((q==0||q==3||q==5)&&m[x][y]>=50&&m[x][y]<55) return 1;
    if((q==4||q==7)&&m[x][y]/100==1) return 1;
    return 0;
}
void CoutMe()
{
    if(gx<0&&CanGo(X-1,Y,0)) X--;if(gx>0&&CanGo(X+1,Y,0)) X++;if(gy<0&&CanGo(X,Y-1,0)) Y--;if(gy>0&&CanGo(X,Y+1,0)) Y++;
    int r;Color(0);if(WuDi>0) r=rand()%5+1,Color(r);
    if(gunT!=1) SetPos(X-1,Y),cout<<"︹";if(gunT!=5) SetPos(X+1,Y),cout<<"︺";if(gunT!=7) SetPos(X,Y-1),cout<<"﹝";if(gunT!=3) SetPos(X,Y+1),cout<<"﹞";
    if(gunT==1) SetPos(X-1,Y),cout<<"↑";if(gunT==2) SetPos(X-1,Y+1),cout<<"↗";if(gunT==3) SetPos(X,Y+1),  cout<<"→";if(gunT==4) SetPos(X+1,Y+1),cout<<"↘";
    if(gunT==5) SetPos(X+1,Y),cout<<"↓";if(gunT==6) SetPos(X+1,Y-1),cout<<"↙";if(gunT==7) SetPos(X,Y-1),  cout<<"←";if(gunT==8) SetPos(X-1,Y-1),cout<<"↖";
    SetPos(X,Y),cout<<"●";Color(0);
    if(WuDi>0) Map(4);
    if(m[X][Y]>=50&&m[X][Y]<55) Jian(5),system("color 4F"),Sleep(30),system("color 0F"),Map(4);
    if(m[X][Y]>=4&&m[X][Y]<=7&&F[12]==0) Jian(3),system("color 4F"),Sleep(30),system("color 0F"),Map(4);
    if(m[X][Y]>=4&&m[X][Y]<=7&&F[12]==1) Jian(1),system("color 4F"),Sleep(30),system("color 0F"),Map(4);
    if(m[X][Y]>=59&&m[X][Y]<=80&&F[4]==0) Jian(1),system("color 4F"),Sleep(30),system("color 0F"),Map(4);
    if(m[X][Y]==2&&F[4]==0) Jian(3),system("color 4F"),Sleep(30),system("color 0F"),Map(4);
    m[X][Y]=0,gx=gy=0;
}
int Cout(int x,int i,int j)
{
        int Guai=0;
        if(m[i][j]==0&&x==2) SetPos(i,j),cout<<"  ";
        if(m[i][j]==1) SetPos(i,j),Color(7),cout<<"■",Color(0);//木
        if(n[i][j]==0&&m[i][j]==2) SetPos(i,j),Color(8),cout<<"■",Color(0);//铁
        if(n[i][j]==10&&m[i][j]==0) SetPos(i,j),cout<<"  ",Color(0);
        if(n[i][j]==31&&m[i][j]==0) SetPos(i,j),cout<<"  ",Color(0);
        if(m[i][j]==32) m[i][j]=0;//怪子弹灰 
        if(n[i][j]>=20&&n[i][j]<22&&m[i][j]==1) SetPos(i,j),Color(7),cout<<"▁",Color(0);//木
        if(n[i][j]>=22&&n[i][j]<24&&m[i][j]==1) SetPos(i,j),Color(7),cout<<"▂",Color(0);//木
        if(n[i][j]>=24&&n[i][j]<26&&m[i][j]==1) SetPos(i,j),Color(7),cout<<"▄",Color(0);//木
        if(n[i][j]>=26&&n[i][j]<28&&m[i][j]==1) SetPos(i,j),Color(7),cout<<"▆",Color(0);//木
        if(n[i][j]>=28&&n[i][j]<30&&m[i][j]==1) SetPos(i,j),Color(7),cout<<"▆",Color(0);//木
        if(n[i][j]>45&&n[i][j]<=50&&m[i][j]==2) SetPos(i,j),Color(4),cout<<"▲",Color(0);//刺
        if(m[i][j]==3) SetPos(i,j),Color(5),cout<<"〓",Color(0);//箱 
        if(m[i][j]>=4&&m[i][j]<=7) SetPos(i,j),Color(5),cout<<"█",Color(0),m[i][j]++;//烟 
        if(m[i][j]==8) SetPos(i,j),cout<<"  ",m[i][j]=0;//烟尘
        if(m[i][j]>=84&&m[i][j]<=87) SetPos(i,j),Color(5),cout<<"█",Color(0),m[i][j]++;//烟 
        if(m[i][j]==88) SetPos(i,j),cout<<"  ",m[i][j]=0;//烟尘
        if(m[i][j]>=10&&m[i][j]<=30) SetPos(i,j),Color(10),cout<<"@ ",Color(0),m[i][j]++;//毒 
        if(m[i][j]>=60&&m[i][j]<=80) SetPos(i,j),Color(11),cout<<"@ ",Color(0),m[i][j]++;//怪毒 
        if(m[i][j]==9||m[i][j]==59) SetPos(i,j),Color(12),cout<<"@ ",Color(0),m[i][j]++;//金毒 
        if(m[i][j]==31||m[i][j]==81) SetPos(i,j),cout<<"  ",m[i][j]=0;//毒尘
        if(n[i][j]==1) SetPos(i,j),Color(13),cout<<"~ ",Color(0);//水
        if(m[i][j]==50) SetPos(i,j),Color(1),cout<<"●",Color(0),Guai++;//怪 
        if(m[i][j]==51) SetPos(i,j),Color(10),cout<<"●",Color(0),Guai++;//怪 
        if(m[i][j]==52) SetPos(i,j),Color(3),cout<<"●",Color(0),Guai++;//怪 
        if(m[i][j]==53) SetPos(i,j),Color(4),cout<<"●",Color(0),Guai++;//怪 
        if(m[i][j]==54) SetPos(i,j),Color(5),cout<<"●",Color(0),Guai++;//怪
        if(m[i][j]/100==1)
        {
            if((m[i][j]%100)/10<=1) SetPos(i,j),cout<<"☉";
            if((m[i][j]%100)/10==2) SetPos(i,j),Color(4),cout<<"◎",Color(0);
            if((m[i][j]%100)/10==3) SetPos(i,j),Color(1),cout<<"◎",Color(0);
            if((m[i][j]%100)/10==4) m[i][j]=4;
            if((m[i][j]%100)/10==5) SetPos(i,j),Color(3),cout<<"◎",Color(0);
            if((m[i][j]%100)/10==6) SetPos(i,j),Color(2),cout<<"¤",Color(0);
            if((m[i][j]%100)/10>=7&&(m[i][j]%100)/10<=9) SetPos(i,j),Color(2),cout<<"◎",Color(0);
        }
        if(m[i][j]/100==2) if((m[i][j]%100)/10==1) SetPos(i,j),Color(3),cout<<"☉",Color(0);
        return Guai;
}
void Boss()
{
	gunZ=5;
    SetPos(Bx-1,By-1),cout<<"      ";SetPos(Bx,By-1),cout<<"      ";SetPos(Bx+1,By-1),cout<<"      ";
    int mov=rand()%30+1,R=rand()%300,ms;
    if(mov==1&&CanGo(Bx-1,By-2,1)&&CanGo(Bx,By-2,1)&&CanGo(Bx+1,By-2,1)) By--;
    if(mov==2&&CanGo(Bx-1,By+2,1)&&CanGo(Bx,By+2,1)&&CanGo(Bx+1,By+2,1)) By++;
    if(mov==3&&CanGo(Bx-2,By-1,1)&&CanGo(Bx-2,By,1)&&CanGo(Bx-2,By+1,1)) Bx--;
    if(mov==4&&CanGo(Bx+2,By-1,1)&&CanGo(Bx+2,By,1)&&CanGo(Bx+2,By+1,1)) Bx++;
    if(mov==5&&Bsi==0) Bsi+=rand()%3+1; if(mov==6&&Bjiao==0) Bjiao+=rand()%3+1;if(mov==7&&Bdu==0) Bdu+=5;
    if(mov==8&&Bxz==0) Bxz+=rand()%20-10;if(mov==9&&Byz==0) Byz+=rand()%20-10;
    if(Byz<0) {Byz++; if(By-2>1) By--;}if(Byz>0) {Byz--; if(By+2<28) By++;}if(Bxz<0) {Bxz++; if(Bx-2>1) Bx--;}if(Bxz>0) {Bxz--; if(Bx+2<28) Bx++;}
    if(R<15&Gguai<=5) Bfang++;
    else if(R<5&&Gguai<=10) Bfang++;
    else if(R==0) Bfang++;
    SetPos(Bx-1,By-1),Color(0),cout<<" ●● ";
    SetPos(Bx,By-1)  ,Color(4),cout<<")██(";
    SetPos(Bx+1,By-1),Color(4),cout<<" …… ";Color(0);
    if(abs(Bx-X)<=1&&abs(By-Y)<=1) Jian(50);int I,J;
    if(Bsi>0) {Bsi--;I=Bx-2,J=By+rand()%3-1;if(CanGo(I,J,7)) m[I][J]=211;I=Bx+rand()%3-1,J=By+2;if(CanGo(I,J,7)) m[I][J]=213;I=Bx+2,J=By+rand()%3-1;if(CanGo(I,J,7)) m[I][J]=215;I=Bx+rand()%3-1,J=By-2;if(CanGo(I,J,7)) m[I][J]=217;}
    if(Bjiao>0) {Bjiao--;I=Bx-2,J=By+2;if(CanGo(I,J,7)) m[I][J]=212;I=Bx+2,J=By+2;if(CanGo(I,J,7)) m[I][J]=214;I=Bx+2,J=By-2;if(CanGo(I,J,7)) m[I][J]=216;I=Bx-2,J=By-2;if(CanGo(I,J,7)) m[I][J]=218;}
    if(Bdu>0) {if(Bdu>0) Bdu--;for(int i=Bx-4;i<=Bx+4;i++) for(int j=By-4;j<=By+4;j++) if(CanGo(i,j,2)&&abs(Bx-X)>1&&abs(By-Y)>1&&i>0&&j>0) m[i][j]=59;}
    if(Bfang>0) {Bfang--;I=Bx+rand()%5-2,J=By+rand()%5-2;int rr=rand()%6-1;if(rr==-1) rr=0; if(((rr<3&&Lev<5)||(Lev>5))&&(CanGo(I,J,7))) m[I][J]=50+rr;}
    if(Lev==4) ms=3;if(Lev==9) ms=5;if(Lev==14) ms=10;if(Lev==19) ms=15;if(Lev==24) ms=20;
    if(T%50==0&&Bblood<ms*12) Bblood++,Map(3);
    for(int i=Bx-1;i<=Bx+1;i++)
    for(int j=By-1;j<=By+1;j++)
    {
        int du=0;
        if(m[i][j]/100==1) Bblood-=1,Bsi+=rand()%3+1,Map(3);
        if(m[i][j]/10==15) Bblood-=2,Map(3);
        if(m[i][j]<50||m[i][j]>55) m[i][j]=0;
        if(m[i][j]>=84&&m[i][j]<=87) Bblood-=1,Bsi+=rand()%3+1,Map(3);
        if(du==0&&m[i][j]>=9&&m[i][j]<=30) Bblood-=1,du++,Bdu++,Map(3);
        if(Bblood<=0) {Bblood=0;SetPos(Bx-1,By-1),cout<<"      ";SetPos(Bx,By-1),cout<<"      ";SetPos(Bx+1,By-1),cout<<"      ";}
    }
}
void Map(int x)//x=0只输中间 1输全屏 2输身周 2输上方 4 CoutMe中用 5 GuaiQuan中用
{
    if(x!=4) CoutMe();
    int f1,f2,f3,f4,Guai=0;
    if(x==0) f1=f3=2,f2=f4=28;
    if(x==1||x==5) f1=f3=1,f2=f4=29;
    if(x==2) f1=X-1,f2=X+1,f3=Y-1,f4=Y+1;
    if((x==4||x==3||x==1)&&Win>=0)
    {
        SetPos(-3,2),cout<<Lev/5+1<<'-'<<Lev%5+1;
        SetPos(-2,2),cout<<"枪:";
        if(gunZ==1) cout<<"普通枪";if(gunZ==2) cout<<"分裂枪";if(gunZ==3) cout<<"穿甲枪";
        if(gunZ==4) cout<<"激光枪";if(gunZ==5) cout<<"爆炸枪";if(gunZ==6) cout<<"毒气枪";if(gunZ==7) cout<<"弹跳枪";
        cout<<"        子弹数:";if(gunZ==1) cout<<"∞";else cout<<G[gunZ]<<" ";
        SetPos(-1,2),cout<<"血量:";Color(4);int r;
        if(WuDi>0) r=rand()%5+1,Color(r); for(int i=1;i<=Blood;i++) cout<<"█";Color(0);for(int i=Blood;i<Bmax;i++) cout<<"█";
        Color(0);SetPos(-1,18),cout<<"                    ";
        SetPos(0,2),cout<<"盾牌:";Color(9);
        if(Dun!=0) for(int i=1;i<=Dun;i++) cout<<"█";Color(0);for(int i=max(1,Dun);i<Dmax;i++) cout<<"█";
        if(Bblood>0)
        {
            int ms;
            if(Lev==4) ms=1; if(Lev==9) ms=1; if(Lev==14) ms=1; if(Lev==19) ms=1; if(Lev==24) ms=1; 
            SetPos(-1,15),cout<<"                                ";
            SetPos(-1,15),cout<<"Boss:";Color(4);for(int i=1;i<=(Bblood-1)%12+1;i++) cout<<"█";
            SetPos(-1,24),Color(3);cout<<(Bblood-1)/12+1;
        }
    }
    if(x==5)
    {
        Color(0);
        SetPos(-3,2),cout<<"  ↑           W 开箱(当有箱子在旁时)    开局无敌3秒";
        SetPos(-2,2),cout<<"←  →移动     A/D 顺/逆时针转枪     空格 暂停";
        SetPos(-1,2),cout<<"  ↓           S 发射子弹 清除所有怪进下一关    盾会恢复";
        SetPos(0,2), cout<<" 每五关可获得一个天赋   完成 5-5 通关   ",Color(3),cout<<"按 y 进第一关";
        for(int i=f1;i<=f2;i++)
        for(int j=f3;j<=f4;j++) Cout(x,i,j);
    }
    if(x!=3&&x!=4)
    {
        for(int i=f1;i<=f2;i++)
        for(int j=f3;j<=f4;j++) Guai+=Cout(x,i,j);
        if(x!=2)
        {
            int Rr=rand()%3;
            if(Guai<Gguai&&Guai!=0&&F[15]==1&&Rr==0&&Lev%5==4)
            Dun=min(Dmax,Dun+1),Map(3);
            Gguai=Guai;
        }
        if(Guai==0&&x==0&&Win==0&&Bblood<=0)
        {
            if(Lev!=24)
            {   
                system("color 6E"),Color(5);
                SetPos(2,2),cout<<"You! Win!!!";Sleep(500);
                SetPos(3,2),cout<<"Please point 'y' to Play AGain.",Sleep(1000);
                system("color 0F");Map(1);
            }
            Win++,Lev++;
        }
    }
}
void Fan(int i,int j,int M)
{
    if(M%10==1||M%10==3) m[i][j]=M+4;
    if(M%10==5||M%10==7) m[i][j]=M-4;
    if(M%10==2)
    {
        if(m[i][j+1]!=0||m[i-2][j+1]!=0) m[i][j]=M+6;
        else if(m[i-1][j]!=0||m[i-1][j+2]!=0) m[i][j]=M+2;
        else m[i][j]=M+4;
    }
    if(M%10==4)
    {
        if(m[i+1][j]!=0||m[i+1][j+2]!=0) m[i][j]=M-2;
        else if(m[i][j+1]!=0||m[i+2][j+1]!=0) m[i][j]=M+2;
        else m[i][j]=M+4;
    }
    if(M%10==6)
    {
        if(m[i][j-1]!=0||m[i+2][j-1]!=0) m[i][j]=M-2;
        else if(m[i+1][j]!=0||m[i+1][j-2]!=0) m[i][j]=M+2;
        else m[i][j]=M-4;
    }
    if(M%10==8)
    {
        if(m[i][j-1]!=0||m[i-2][j-1]!=0) m[i][j]=M-6;
        else if(m[i-1][j]!=0||m[i-1][j-2]!=0) m[i][j]=M-2;
        else m[i][j]=M-4;
    }
}
void Light(int i,int j,int M,int x)
{
    if(M%10==1) for(int k=1;CanGo(i-k,j,x);k++)  {if(x==3) m[i-k][j]=84; else m[i-k][j]=4;}
    if(M%10==2) for(int k=1;CanGo(i-k,j+k,x);k++){if(x==3) m[i-k][j+k]=84; else m[i-k][j+k]=4;}
    if(M%10==3) for(int k=1;CanGo(i,j+k,x);k++)  {if(x==3) m[i][j+k]=84; else m[i][j+k]=4;}
    if(M%10==4) for(int k=1;CanGo(i+k,j+k,x);k++){if(x==3) m[i+k][j+k]=84; else m[i+k][j+k]=4;}
    if(M%10==5) for(int k=1;CanGo(i+k,j,x);k++)  {if(x==3) m[i+k][j]=84; else m[i+k][j]=4;}
    if(M%10==6) for(int k=1;CanGo(i+k,j-k,x);k++){if(x==3) m[i+k][j-k]=84; else m[i+k][j-k]=4;}
    if(M%10==7) for(int k=1;CanGo(i,j-k,x);k++)  {if(x==3) m[i][j-k]=84; else m[i][j-k]=4;}
    if(M%10==8) for(int k=1;CanGo(i-k,j-k,x);k++){if(x==3) m[i-k][j-k]=84; else m[i-k][j-k]=4;}
}
void Move()
{
    bool nx[32][32];
    memset(nx,0,sizeof(nx));
    for(int i=2;i<=28;i++)
    for(int j=2;j<=28;j++)
    {
        if(m[i][j]==50&&nx[i][j]==0&&T%2==0)//无脑怪
        {
            int r,I=i,J=j,rr=rand()%5,rrr=rand()%2;
            if(rrr==0) {if(X<i) r=1;if(X>i) r=4;}
            if(rrr==1) {if(Y>j) r=2;if(Y<j) r=3;} if(rr==0) r=rand()%4+1;
            if(r==1) I=i-1,J=j;if(r==2) I=i,J=j+1;if(r==3) I=i,J=j-1;if(r==4) I=i+1,J=j;
            if(CanGo(I,J,1)) m[i][j]=0,m[I][J]=50,SetPos(i,j),cout<<"  ",SetPos(I,J),cout<<"●",nx[I][J]=1;
        }
        if(m[i][j]==51&&nx[i][j]==0)//毒怪
        {
            int R=rand()%10;
            int r,I=i,J=j,rr=rand()%30,rrr=rand()%2,mr=rand()%15;
            if(rrr==0) {if(X<i) r=1;if(X>i) r=4;}
            if(rrr==1) {if(Y>j) r=2;if(Y<j) r=3;} if(rr!=0) r=rand()%4+1;
            if(r==1) I=i-1,J=j;if(r==2) I=i,J=j+1;if(r==3) I=i,J=j-1;if(r==4) I=i+1,J=j;
            if(mr==0) {for(int k=I-2;k<=I+2;k++) for(int l=J-2;l<=J+2;l++) if(k>1&&l>1&&k<=28&&l<=28&&(CanGo(k,l,1)||m[k][l]==1)) m[k][l]=59;}
            if(CanGo(I,J,1)||m[I][J]==1) m[i][j]=59,m[I][J]=51,SetPos(i,j),cout<<"  ",SetPos(I,J),cout<<"●",nx[I][J]=1;
        }
        if(m[i][j]==52&&nx[i][j]==0)//散弹怪 
        {
            int R=rand()%10;
            if(R==0)
            {
                int I,J,r,rn=0;
                int rr=rand()%8,Rn=rand()%3+1;
                Xr:
                rr=rand()%8,rn++;
                if(rr==0) {r=1,I=i-1,J=j;if(CanGo(I,J,6)) m[I][J]=210+r;}
                if(rr==1) {r=3,I=i,J=j+1;if(CanGo(I,J,6)) m[I][J]=210+r;}
                if(rr==2) {r=5,I=i+1,J=j;if(CanGo(I,J,6)) m[I][J]=210+r;}
                if(rr==3) {r=7,I=i,J=j-1;if(CanGo(I,J,6)) m[I][J]=210+r;}
                if(rr==4) {r=2,I=i-1,J=j+1;if(CanGo(I,J,6)) m[I][J]=210+r;}
                if(rr==5) {r=4,I=i+1,J=j+1;if(CanGo(I,J,6)) m[I][J]=210+r;}
                if(rr==6) {r=6,I=i+1,J=j-1;if(CanGo(I,J,6)) m[I][J]=210+r;}
                if(rr==7) {r=8,I=i-1,J=j-1;if(CanGo(I,J,6)) m[I][J]=210+r;}
                if(rr==8) {r=rand()%7+2;I=i+1,J=j;if(m[I][J]!=2) m[I][J]=210+r;}nx[I][J]=1;
                if(rn<Rn) goto Xr;
            }
            else if(R<=2)
            {
                int r=rand()%4+1,Ie,Je;
                if(r==1) Ie=i-1,Je=j;if(r==2) Ie=i,Je=j+1;if(r==3) Ie=i,Je=j-1;if(r==4) Ie=i+1,Je=j;
                if(CanGo(Ie,Je,1)) m[i][j]=0,m[Ie][Je]=52,SetPos(i,j),cout<<"  ",SetPos(Ie,Je),cout<<"●";
            }
        }
        if(m[i][j]==53&&nx[i][j]==0)//瞄准怪 
        {
            int R=rand()%6;
            if(R==0)
            {
                int I,J,r,rr=rand()%5;
                if(X-i<0&&abs(Y-j)<=2) {r=1,I=i-1,J=j;if(CanGo(I,J,6)) m[I][J]=210+r;}
                else if(Y-j>0&&abs(X-i)<=2) {r=3,I=i,J=j+1;if(CanGo(I,J,6)) m[I][J]=210+r;}
                else if(X-i>0&&abs(Y-j)<=2) {r=5,I=i+1,J=j;if(CanGo(I,J,6)) m[I][J]=210+r;}
                else if(Y-j<0&&abs(X-i)<=2) {r=7,I=i,J=j-1;if(CanGo(I,J,6)) m[I][J]=210+r;}
                else if(X-i<0&&Y-j>0&&abs((i-X)-(Y-j))<=2) {r=2,I=i-1,J=j+1;if(CanGo(I,J,6)) m[I][J]=210+r;}
                else if(X-i>0&&Y-j>0&&abs((X-i)-(Y-j))<=2) {r=4,I=i+1,J=j+1;if(CanGo(I,J,6)) m[I][J]=210+r;}
                else if(X-i>0&&j-Y>0&&abs((X-i)-(j-Y))<=2) {r=6,I=i+1,J=j-1;if(CanGo(I,J,6)) m[I][J]=210+r;}
                else if(X-i<0&&Y-j<0&&abs((i-X)-(j-Y))<=2) {r=8,I=i-1,J=j-1;if(CanGo(I,J,6)) m[I][J]=210+r;}
                else if(rr==0) {r=rand()%7+2;I=i+1,J=j;if(CanGo(I,J,6)) m[I][J]=210+r;}
            }
            else if(R==1)
            {
                int r=rand()%4+1,Ie,Je;
                if(r==1) Ie=i-1,Je=j;if(r==2) Ie=i,Je=j+1;if(r==3) Ie=i,Je=j-1;if(r==4) Ie=i+1,Je=j;
                if(CanGo(Ie,Je,1)) m[i][j]=0,m[Ie][Je]=53,SetPos(i,j),cout<<"  ",SetPos(Ie,Je),cout<<"●";
            }
        }
        if(m[i][j]==54&&nx[i][j]==0)//激光怪
        {
            int R=rand()%10;
            if(R==0) {int r=rand()%4; Light(i,j,231+2*r,2);}
            else if(R<=3)
            {
                int r=rand()%4+1,Ie,Je;
                if(r==1) Ie=i-1,Je=j;if(r==2) Ie=i,Je=j+1;if(r==3) Ie=i,Je=j-1;if(r==4) Ie=i+1,Je=j;
                if(CanGo(Ie,Je,1)) m[i][j]=0,m[Ie][Je]=54,SetPos(i,j),cout<<"  ",SetPos(Ie,Je),cout<<"●";
            }
        }
        if(m[i][j]/100==2&&F[3]==1&&T%2==0) nx[i][j]=1;
        if((m[i][j]/100==1||m[i][j]/100==2)&&nx[i][j]==0)//子弹 
        {
            int M=m[i][j],I,J;m[i][j]=0;SetPos(i,j),cout<<"  ";
            if(M%10==1) I=i-1,J=j;if(M%10==2) I=i-1,J=j+1;if(M%10==3) I=i,J=j+1;if(M%10==4) I=i+1,J=j+1;
            if(M%10==5) I=i+1,J=j;if(M%10==6) I=i+1,J=j-1;if(M%10==7) I=i,J=j-1;if(M%10==8) I=i-1,J=j-1;

            if(I==X&&J==Y&&M/100==2) {Jian(2),system("color 4F"),Sleep(30);system("color 0F"),m[i][j]=0;Map(4);}
            else if(I==X&&J==Y&&M/100==1) m[I][J]=0;
            else if(M/100==2&&m[I][J]/100==1) m[i][j]=32;
            else if(M/100==2&&m[I][J]<55&&m[I][J]>=50) m[i][j]=0;
            else if(m[I][J]==2||m[I][J]==3)//石
            {
                if((M%100)/10==0)
                {
                    int rr=rand()%3;
                    if(rr==0) Fan(i,j,M),m[i][j]+=10;
                    else m[i][j]=84;
                }
                if((M%100)/10==1)
                {
                    m[i][j]=84;
                    int rr=rand()%5;
                    if(rr==0&&F[14]==1&&M/100==1)
                    {
                            for(int ii=i-1;ii<=i+1;ii++)
                            for(int jj=j-1;jj<=j+1;jj++)
                            if(m[ii][jj]!=2&&m[ii][jj]!=3&&ii<=28&&jj<=28) m[ii][jj]=84;
                    }
                }
                if((M%100)/10==2)
                {
                    m[i][j]=84;
                    if(m[i-1][j]!=2&&m[i-1][j]!=3)     m[i-1][j]=111;
                    if(m[i-1][j+1]!=2&&m[i-1][j+1]!=3) m[i-1][j+1]=112;
                    if(m[i][j+1]!=2&&m[i][j+1]!=3)     m[i][j+1]=113;
                    if(m[i+1][j+1]!=2&&m[i+1][j+1]!=3) m[i+1][j+1]=114;
                    if(m[i+1][j]!=2&&m[i+1][j]!=3)     m[i+1][j]=115;
                    if(m[i+1][j-1]!=2&&m[i+1][j-1]!=3) m[i+1][j-1]=116;
                    if(m[i][j-1]!=2&&m[i][j-1]!=3)     m[i][j-1]=117;
                    if(m[i-1][j-1]!=2&&m[i-1][j-1]!=3) m[i-1][j-1]=118;
                }
                if((M%100)/10==3) {if(m[I][J]==2&&(I!=1&&J!=1&&I!=29&&J!=29)) m[I][J]=84;else m[i][j]=84;}
                if((M%100)/10==4) m[i][j]=84;
                if((M%100)/10==5)
                {
                    for(int ii=i-2;ii<=i+2;ii++)
                    for(int jj=j-2;jj<=j+2;jj++)
                    if(m[ii][jj]!=2&&m[ii][jj]!=3&&ii<=28&&jj<=28) m[ii][jj]=84;
                }
                if((M%100)/10==6)
                {
                    for(int ii=i-1;ii<=i+1;ii++)
                    for(int jj=j-1;jj<=j+1;jj++)
                    if(m[ii][jj]!=2&&m[ii][jj]!=3&&ii<=28&&jj<=28) m[ii][jj]=9;
                }
                if((M%100)/10>=7&&(M%100)/10<9) Fan(i,j,M),m[i][j]+=(rand()%2)*10;
                if((M%100)/10==9) m[i][j]=84;
            }
            else if(!CanGo(I,J,6))//其他
            {
                if((M%100)/10==0) m[I][J]=84,Fan(i,j,M),m[i][j]+=10;
                if((M%100)/10==1)
                {
                    if(M/100==2&&m[I][J]==50) m[i][j]=0;
                    else m[I][J]=84;
                    if(F[14]==1&&M/100==1)
                    {
                            for(int ii=I-1;ii<=I+1;ii++)
                            for(int jj=J-1;jj<=J+1;jj++)
                            if(m[ii][jj]!=2&&m[ii][jj]!=3&&ii<=28&&jj<=28) m[ii][jj]=84;
                    }
                }
                if((M%100)/10==2)
                {
                    m[I][J]=84;
                    if(m[I-1][J]!=2&&m[I-1][J]!=3)     m[I-1][J]=111;
                    if(m[I-1][J+1]!=2&&m[I-1][J+1]!=3) m[I-1][J+1]=112;
                    if(m[I][J+1]!=2&&m[I][J+1]!=3)     m[I][J+1]=113;
                    if(m[I+1][J+1]!=2&&m[I+1][J+1]!=3) m[I+1][J+1]=114;
                    if(m[I+1][J]!=2&&m[I+1][J]!=3)     m[I+1][J]=115;
                    if(m[I+1][J-1]!=2&&m[I+1][J-1]!=3) m[I+1][J-1]=116;
                    if(m[I][J-1]!=2&&m[I][J-1]!=3)     m[I][J-1]=117;
                    if(m[I-1][J-1]!=2&&m[I-1][J-1]!=3) m[I-1][J-1]=118;
                }
                if((M%100)/10==3) m[I][J]=M,nx[I][J]=1;
                if((M%100)/10==4) Light(i,j,M,3);
                if((M%100)/10==5)
                {
                    for(int ii=I-2;ii<=I+2;ii++)
                    for(int jj=J-2;jj<=J+2;jj++)
                    if(m[ii][jj]!=2&&m[ii][jj]!=3&&ii<=28&&jj<=28) m[ii][jj]=84;
                }
                if((M%100)/10==6)
                {
                    for(int ii=I-1;ii<=I+1;ii++)
                    for(int jj=J-1;jj<=J+1;jj++)
                    if(m[ii][jj]!=2&&m[ii][jj]!=3&&ii<=28&&jj<=28) m[ii][jj]=9;
                }
                if((M%100)/10>=7&&(M%100)/10<9) m[I][J]=84,Fan(i,j,M);
                if((M%100)/10==9) m[I][J]=84;
            }
            else//空地
            {
                if((M%100)/10==6)
                {
                    m[i][j]=9;
                    if(CanGo(i,j-1,5)) m[i][j-1]=9;if(CanGo(i,j+1,5)) m[i][j+1]=9;
                    if(CanGo(i-1,j,5)) m[i-1][j]=9;if(CanGo(i-1,j,5)) m[i+1][j]=9;
                    m[I][J]=M,nx[I][J]=1;
                }
                if((M%100)/10==4) m[i][j]=84,m[I][J]=M,i=2,j=2;
                else m[I][J]=M,nx[I][J]=1;
            }
        }
    }
    if(Bblood>0) Boss();
}
void Bullet()
{
    int I=0,J=0,R=rand()%10,Rr=rand()%3,Rrr,K=0,tg=gunT;
    Hh:Rrr=rand()%20;
    if(gunT==1&&m[X-1][Y]!=2&&m[X-1][Y]!=3) I=X-1,J=Y;
    if(gunT==2&&m[X-1][Y+1]!=2&&m[X-1][Y+1]!=3) I=X-1,J=Y+1;
    if(gunT==3&&m[X][Y+1]!=2&&m[X][Y+1]!=3) I=X,J=Y+1;
    if(gunT==4&&m[X+1][Y+1]!=2&&m[X+1][Y+1]!=3) I=X+1,J=Y+1;
    if(gunT==5&&m[X+1][Y]!=2&&m[X+1][Y]!=3) I=X+1,J=Y;
    if(gunT==6&&m[X+1][Y-1]!=2&&m[X+1][Y-1]!=3) I=X+1,J=Y-1;
    if(gunT==7&&m[X][Y-1]!=2&&m[X][Y-1]!=3) I=X,J=Y-1;
    if(gunT==8&&m[X-1][Y-1]!=2&&m[X-1][Y-1]!=3) I=X-1,J=Y-1;
    if(I!=0&&J!=0) m[I][J]=100+10*gunZ+gunT;
    if(K==1) m[I][J]=110+gunT;
    if(F[2]==1&&gunZ==1) m[I][J]=100+gunT;
    if(F[8]==1&&R==0&&K==0) {gunT=rand()%8+1;K=1;goto Hh;}
    if(F[8]==1&&K!=0&&K<Rr) {gunT=rand()%8+1;K++;goto Hh;} if(K>=Rr) gunT=tg;
    if(Rrr==0&&F[11]==1&&K==0) {m[I][J]=100+10*(rand()%7+1)+gunT;}
    if(gunZ!=1) {G[gunZ]--; if(G[gunZ]<=0) G[gunZ]=0,gunZ=1;Map(3);}
}
void OpenBox(int a)
{
    for(int i=X-1;i<=X+1;i++)
    for(int j=Y-1;j<=Y+1;j++)
    if(m[i][j]==3)
    {
        int r=rand()%8+2;
        if(a==1) r=rand()%6+2;
        if(F[9]==1) r=rand()%12+2;
        SetPos(i,j);Color(5);
        r=5;
        if(r==2) cout<<"分裂枪!";
        if(r==3) cout<<"穿甲枪!";
        if(r==4) cout<<"激光枪!";
        if(r==5) cout<<"爆炸枪!";
        if(r==6) cout<<"毒气枪!";
        if(r==7) cout<<"弹跳枪!"; 
        if(r==8) cout<<"生命药水!",Blood=min(Blood+5,Bmax+2),Map(3);
        if(r==9) cout<<"盾牌药水!",Dun=min(Dun+5,Dmax+2),Map(3);
        if(F[9]==1&&r>=8&&r<=13) cout<<"生命药水!",Blood=min(Blood+5,Bmax+2),Map(3);
        Sleep(1000);m[i][j]=84;if(r<=7&&F[6]==0) gunZ=r,G[r]+=10;if(r<=7&&F[6]==1) gunZ=r,G[r]+=20;
        SetPos(i,j); cout<<"         ";Map(0);
        G[r]=10000;
    }
}	  
void Sheng()
{
    memset(m,0,sizeof(m));memset(n,0,sizeof(n));
    int q=0,T=0,II=0,JJ=0;
    Re: q++;
    int r=rand()%15+1;
    if(F[19]==1) r=rand()%20+1;
    if(r==1) {for(int i=5;i<=7;i++)for(int j=5;j<=7;j++) m[i][j]=2;for(int i=23;i<=25;i++)for(int j=5;j<=7;j++) m[i][j]=2;for(int i=5;i<=7;i++)for(int j=23;j<=25;j++) m[i][j]=2;for(int i=23;i<=25;i++)for(int j=23;j<=25;j++) m[i][j]=2;}
    if(r==2) {for(int i=13;i<=17;i++) for(int j=13;j<=17;j++) m[i][j]=1;}
    if(r==3) {for(int i=2;i<=28;i++) m[i][6]=m[i][24]=m[6][i]=m[24][i]=1;}
    if(r==4) {for(int i=2;i<=28;i++) m[i][15]=m[15][i]=1;}
    if(r==5) {for(int i=2;i<=28;i++) if(abs(i-15)>=3) m[i][15]=m[15][i]=2;}
    if(r==6) {for(int i=2;i<=28;i++) for(int j=2;j<=28;j++) if(i==j||i+j==30) m[i][j]=1;}
    if(r==7) {for(int i=2;i<=28;i++) for(int j=2;j<=28;j++) if(abs(i-15)+abs(j-15)==10) m[i][j]=1;}
    if(r==8) {for(int i=5;i<=25;i++) if(abs(i-15)>=2) m[i][10]=m[i][20]=m[10][i]=m[20][i]=2;}
    if(r==9) {for(int i=2;i<=28;i++) for(int j=2;j<=28;j++) {int rr=rand()%20; if(rr==0&&m[i][j]==0) m[i][j]=1;}}
    if(r>=10&&II==0) {T--;int ii=rand()%27+2;int jj=rand()%27+2; for(int i=ii-1;i<=ii+1;i++) for(int j=jj-1;j<=jj+1;j++) if(m[i][j]==0) m[i][j]=1;II=ii,JJ=jj;}
    if(r>=10&&II!=0) goto Re;if(Lev<=5&&q<2) goto Re;
    T++;if(T==1) goto Re;if(II!=0) m[II][JJ]=3;
    r=rand()%15+1;
    if(r==1) {for(int i=5;i<=25;i++) n[i][4]=n[i][9]=n[i][15]=n[i][21]=n[i][26]=31;}
    if(r==2) {for(int i=8;i<=22;i++) n[i][8]=n[i][22]=n[8][i]=n[22][i]=31;}
    if(r==3) {for(int i=1;i<=5;i++) {int ii=rand()%23+4,jj=rand()%23+4;for(int ki=ii-2;ki<=ii+2;ki++)for(int kj=jj-2;kj<=jj+2;kj++) if(abs(ki-X)>2||abs(kj-Y)>2) n[ki][kj]=1;}}
    if(r==4) {for(int i=1;i<=7;i++) {int ii=rand()%23+4,jj=rand()%23+4;for(int ki=ii-1;ki<=ii+1;ki++)for(int kj=jj-1;kj<=jj+1;kj++) n[ki][kj]=11;}}
    if(r==5) {for(int i=1;i<=20;i++) {int ii=rand()%23+4,jj=rand()%13+1;jj*=2;for(int ki=ii-1;ki<=ii+1;ki++) n[jj+1][ki]=31;}}
    if(r==6) {for(int i=2;i<=28;i++) n[i][9]=n[i][10]=n[i][20]=n[i][21]=11;}
    if(r==7) {for(int i=5;i<=25;i++) n[4][i]=n[9][i]=n[15][i]=n[21][i]=n[26][i]=31;}
    if(r==8) {for(int i=7;i<=23;i++) for(int j=7;j<=23;j++) if(i==j||i+j==30) n[i][j]=31;}
    if(r==9) {for(int i=2;i<=28;i++) {if(i!=4&&i!=26&&!(i==Y&&(14<=X&&16>=X))) n[14][i]=n[15][i]=n[16][i]=1; m[14][i]=m[15][i]=m[16][i]=0;}}
    if(r==10) {for(int i=7;i<=23;i++) if(abs(i-15)>1) n[i][7]=n[i][23]=n[7][i]=n[23][i]=1;}
    Kk:
    int k=0,K[35][35]; memset(K,0,sizeof(K));
    if(Lev%5!=4)
    {
        for(int i=2;i<=28;i++)//怪
        for(int j=2;j<=28;j++)
        {
            if(Lev<=1) {int r=rand()%150;if(r==0) K[i][j]=50,k++;}
            else if(Lev<=2) {int r=rand()%200;if(r==0) K[i][j]=50;if(r==1) K[i][j]=51;if(r<=1) k++;}
            else if(Lev<=3) {int r=rand()%300;if(r==0) K[i][j]=50;if(r==1) K[i][j]=51;if(r==2) K[i][j]=52;if(r<=2) k++;}
            else if(Lev<=5) {int r=rand()%400;if(r==0) K[i][j]=50;if(r==1) K[i][j]=51;if(r==2) K[i][j]=52;if(r==3) K[i][j]=53;if(r<=3) k++;}
            else if(Lev<=7) {int r=rand()%350;if(r==0) K[i][j]=50;if(r==1) K[i][j]=51;if(r==2) K[i][j]=52;if(r==3) K[i][j]=53;if(r==4) K[i][j]=54;if(r<=4) k++;}
            else {int r;if(Lev<=10) r=rand()%300;if(Lev<=15) r=rand()%280;if(Lev<=20) r=rand()%250;if(Lev<=25) r=rand()%230;if(r==0) K[i][j]=50;if(r==1) K[i][j]=51;if(r==2) K[i][j]=52;if(r==3) K[i][j]=53;if(r==4) K[i][j]=54;if(r<=4) k++;}
        }if(k<3) goto Kk;if(k>5&&Lev<=3) goto Kk;if(k<5&&Lev>=10) goto Kk;if(k>10&&Lev<=10) goto Kk;if(k>15&&Lev<=15) goto Kk;if(k<10&&Lev>=20) goto Kk;if(k>20&&Lev<=20) goto Kk;
    }
    for(int i=2;i<=28;i++) for(int j=2;j<=28;j++) {if(n[i][j]!=0) m[i][j]=0;if(K[i][j]!=0&&(m[i-1][j]!=2||m[i+1][j]!=2||m[i][j-1]!=2||m[i][j+1]!=2)) m[i][j]=K[i][j];}
    if(Lev%5==4) {int ms;if(Lev==4) ms=3;if(Lev==9) ms=5;if(Lev==14) ms=10;if(Lev==19) ms=15;if(Lev==24) ms=20;Bx=rand()%23+4,By=rand()%23+4;Bblood=ms*12;for(int i=14;i<=16;i++) for(int j=14;j<=16;j++) m[i][j]=n[i][j]=0;}
    for(int i=X-1;i<=X+1;i++) for(int j=Y-1;j<=Y+1;j++) if(i!=1&&i!=29&&j!=1&&j!=29) m[i][j]=0;
    for(int i=1;i<=29;i++) m[1][i]=2,m[29][i]=2; for(int i=1;i<=29;i++) m[i][1]=2,m[i][29]=2;//周围石块
}
void TianFu()
{
    int A[4],ss=0;
    system("cls");
    SetPos(5,5),cout<<"选择一个天赋!(数字键选择)"; 
    Tf:
    int R=rand()%20+1;
    F[4]=1;
    F[17]=1;
//    F[1]=1;
//    F[7]=1;
	F[16]=1;
    F[18]=1;
//    F[19]=1;
	F[2]=1;
	F[14]=1;
	F[3]=1;
	F[8]=1;
    for(int i=1;i<=3;i++) if(R==A[i]) goto Tf;
    if(F[R]==1) goto Tf;
    ss++,A[ss]=R; SetPos(4*ss+5,8),cout<<ss<<"、";
    if(R==1) SetPos(4*ss+5,10),cout<<"盾牌恢复速度增加";
    if(R==2) SetPos(4*ss+5,10),cout<<"普通子弹有概率弹跳";
    if(R==3) SetPos(4*ss+5,10),cout<<"怪物子弹速度变慢";
    if(R==4) SetPos(4*ss+5,10),cout<<"免疫地刺和怪物的毒";
    if(R==5) SetPos(4*ss+5,10),cout<<"开局无敌时间增加";
    if(R==6) SetPos(4*ss+5,10),cout<<"宝箱子弹量增加";
    if(R==7) SetPos(4*ss+5,10),cout<<"盾牌上限增加";
    if(R==8) SetPos(4*ss+5,10),cout<<"有概率发射散弹";
    if(R==9) SetPos(4*ss+5,10),cout<<"宝箱抽出生命水概率增加";
    if(R==10) SetPos(4*ss+5,10),cout<<"每次开局有概率增加生命";
    if(R==11) SetPos(4*ss+5,10),cout<<"有概率发射特殊子弹";
    if(R==12) SetPos(4*ss+5,10),cout<<"激光伤害减半";
    if(R==13) SetPos(4*ss+5,10),cout<<"盾牌爆后无敌一段时间";
    if(R==14) SetPos(4*ss+5,10),cout<<"普通子弹有概率爆炸";
    if(R==15) SetPos(4*ss+5,10),cout<<"杀死怪有几率加盾(BOSS关除外)";
    if(R==16) SetPos(4*ss+5,10),cout<<"出场释放冲击波";
    if(R==17) SetPos(4*ss+5,10),cout<<"盾牌爆后释放冲击波";
    if(R==18) SetPos(4*ss+5,10),cout<<"有概率在身周放毒";
    if(R==19) SetPos(4*ss+5,10),cout<<"刷出宝箱概率增加";
    if(R==20) SetPos(4*ss+5,10),cout<<"每次开局获得一把枪";
    if(ss<3) goto Tf;
    tF:
    char c=_getch();
    if(c>='1'&&c<='3') F[A[c-'0']]=1;
    else goto tF;
    if(A[c-'0']==7) Dmax+=3;
}
void GuaiQuan()
{
    X=3,Y=3;Win=-1;system("cls");Color(0);
    memset(m,0,sizeof(m));memset(n,0,sizeof(n));
    for(int i=1;i<=29;i++) m[1][i]=2,m[29][i]=2;
    for(int i=1;i<=29;i++) m[i][1]=2,m[i][29]=2;//周围石块 
    for(int i=4;i<=12;i++) m[i][4]=m[i][12]=m[4][i]=m[12][i]=m[i][18]=m[i][26]=m[18][i]=m[26][i]=2;
    for(int i=18;i<=26;i++) m[i][4]=m[i][12]=m[4][i]=m[12][i]=m[i][18]=m[i][26]=m[18][i]=m[26][i]=2;
    for(int i=11;i<=19;i++) m[i][11]=m[i][19]=m[11][i]=m[19][i]=2;
    for(int i=6;i<=10;i++) for(int j=13;j<=17;j++) m[i][j]=1; 
    m[8][8]=50;m[8][21]=51;m[15][15]=52;m[21][8]=53;m[21][21]=54;m[16][23]=3;Map(5);
    SetPos(3,5);cout<<"←你";SetPos(4,14);cout<<"木箱↓";SetPos(17,4);cout<<"铁块↓";SetPos(17,21);cout<<"宝箱↑";
    SetPos(13,5);cout<<"无脑小怪↑";SetPos(14,21);cout<<"剧毒小怪↑";
    SetPos(20,13);cout<<"散弹小怪↑";SetPos(27,5);cout<<"狙击小怪↑";SetPos(27,21);cout<<"激光小怪↑";
    while(1)
    {
        if(bu>0) bu--;
        if(GetAsyncKeyState(VK_UP)&0x8000) Map(2),gx--; 
        else if(GetAsyncKeyState(VK_DOWN)&0x8000) Map(2),gx++;
        else if(GetAsyncKeyState(VK_LEFT)&0x8000) Map(2),gy--;
        else if(GetAsyncKeyState(VK_RIGHT)&0x8000) Map(2),gy++;
        if(kbhit())
        {
            char g=_getch();
            if(g=='a') {Map(2); if(gunT!=1) gunT--;else gunT=8;}
            if(g=='d') {Map(2); if(gunT!=8) gunT++;else gunT=1;}
            if(g=='w') OpenBox(1);
            if(g=='s'&&bu<=2) Bullet(),bu+=2;
            if(g==' ') Sleep(100),SetPos(-1,18),sy++,system("pause");
            if(g=='y'&&Win<0) {break;}
        }
        if(sy==1) SetPos(-1,18),cout<<"                           ",sy--;
        Move(); Map(0); Sleep(50);
    }Lev=0;Blood=10,Dun=10,Bmax=10,Dmax=10;
}
void Start()
{
    Color(5);
    SetPos(2,3);cout<<"     ■■■■■■            ■                  ";
    SetPos(3,3);cout<<"                            ■■■■■■■■     ";
    SetPos(4,3);cout<<"                           ■                    ";
    SetPos(5,3);cout<<" ■■■■■■■■■■    ■  ■■■■■■        ";
    SetPos(6,3);cout<<"       ■    ■                                  ";
    SetPos(7,3);cout<<"       ■    ■              ■■■■■■■      ";
    SetPos(8,3);cout<<"      ■     ■  ■                    ■        ";
    SetPos(9,3);cout<<"   ■■       ■■■                  ■        ";
    SetPos(10,3);cout<<"                                      ■    ■  ";
    SetPos(11,3);cout<<"                                       ■■■■ ";
    SetPos(13,3);cout<<"              ■                                 ";
    SetPos(14,3);cout<<"              ■               ■    ■    ■";
    SetPos(15,3);cout<<"           ■ ■ ■            ■    ■    ■";
    SetPos(16,3);cout<<"          ■  ■  ■           ■    ■    ■";
    SetPos(17,3);cout<<"         ■   ■   ■          ■    ■    ■";
    SetPos(18,3);cout<<"       ■     ■     ■        ■    ■    ■";
    SetPos(19,3);cout<<"              ■               ■    ■    ■";
    SetPos(20,3);cout<<"              ■               ■    ■    ■";
    SetPos(21,3);cout<<"              ■               ■    ■    ■";
    SetPos(22,3);cout<<"           ■■             ■■     ■    ■";
    SetPos(25,4);Color(1);cout<<"按 y 开始游戏!";
    SetPos(29,3);Color(3);cout<<"注意!这里 绝对不能是拼音输入法!";
    A:char y=_getch();
    if(y=='y') return;
    else goto A;
}
void Bling()
{
    for(int i=0;i<=3;i++)
    {
        system("color 1A");Sleep(10);
        system("color 2B");Sleep(10);
        system("color 3C");Sleep(10);
        system("color 4D");Sleep(10);
        system("color 5D");Sleep(10);
        system("color 6E");Sleep(10);
        system("color 7F");Sleep(10);
    }system("color 0F");system("cls");
}
void BaoBo(int B)
{
    for(int i=X-B;i<=X+B;i++) if(CanGo(i,Y-B,3)&&i>0&&Y-B>0) m[i][Y-B]=86,m[i][Y-B+1]=8;
    for(int i=X-B;i<=X+B;i++) if(CanGo(i,Y+B,3)&&i>0&&Y+B>0) m[i][Y+B]=86,m[i][Y+B-1]=8;
    for(int j=Y-B;j<=Y+B;j++) if(CanGo(X+B,j,3)&&j>0&&X+B>0) m[X+B][j]=86,m[X+B-1][Y]=8;
    for(int j=Y-B;j<=Y+B;j++) if(CanGo(X-B,j,3)&&j>0&&X-B>0) m[X-B][j]=86,m[X-B+1][Y]=8;
}
void Ci()
{
    for(int i=1;i<=29;i++)
    for(int j=1;j<=29;j++)
    {
        if(n[i][j]>=10&&n[i][j]<50&&n[i][j]!=30) n[i][j]++;
        if(n[i][j]==50) {n[i][j]=31;if(m[i][j]==2) m[i][j]=0;}
        if(n[i][j]==45&&!(m[i][j]>=50&&m[i][j]<55)&&!(abs(Bx-i)<=1&&abs(By-i)<=1)) m[i][j]=2;
        if(n[i][j]>20&&n[i][j]<=30&&m[i][j]==0) n[i][j]=10;
        if(n[i][j]==20&&m[i][j]==0&&!(abs(Bx-i)<=1&&abs(By-i)<=1)) m[i][j]=1;
    }
}
int main()
{
    system("mode con cols=62 lines=34");
    CONSOLE_CURSOR_INFO cursor_info={1,0};
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
    srand((unsigned)time(NULL));
    SSt: 
    Start();Bling();
    X=4,Y=8,gx=gy=0,gunT=1,gunZ=1,Lev=0,T;
    Blood=10,Dun=10,Bmax=10,Dmax=10;
    memset(G,0,sizeof(G)); memset(F,0,sizeof(F));
    GuaiQuan();
    St:
    Win=0;Bo=Boo=0;
    memset(m,0,sizeof(m));
    if(Lev%5==0&&Lev!=0) TianFu();
    Bling();T=0;Sheng();Map(1);int rr=rand()%3;
    if(F[5]==1) WuDi=60;else WuDi=30;
    if(rr==0&&F[10]==1) Blood=min(Blood+1,Bmax);
    if(F[16]==1) Bo=4;
    if(F[20]==1) {int Q=rand()%7+2;gunZ=Q,G[Q]=5;}
    while(Win<=0&&Blood>0&&Lev<25)
    {
        T++;
        if(bu>0) bu--;
        if(WuDi>0) WuDi--;
        if(WuDi==1) WuDi--,Map(4);
        if(Bo>0) BaoBo(5-Bo),Bo--;
        if(Boo>0) BaoBo(4-Boo),Boo--;
        if(F[18]==1)
        {
            int Rrr=rand()%30;
            if(Rrr==0)
            for(int i=X-2;i<=X+2;i++)
            for(int j=Y-2;j<=Y+2;j++) if(CanGo(i,j,5)&&i>0&&j>0) m[i][j]=9;
        }
        if(Dun<Dmax)
        {
            if(F[1]==1&&T%30==0) Dun++,Map(3);
            if(F[1]==0&&T%70==0) Dun++,Map(3);
        }
        if(GetAsyncKeyState(VK_UP)&0x8000) Map(2),gx--; 
        else if(GetAsyncKeyState(VK_DOWN)&0x8000) Map(2),gx++;
        else if(GetAsyncKeyState(VK_LEFT)&0x8000) Map(2),gy--;
        else if(GetAsyncKeyState(VK_RIGHT)&0x8000) Map(2),gy++;
        if(kbhit())
        {
            char g=_getch();
            if(g=='a') {Map(2); if(gunT!=1) gunT--;else gunT=8;}
            if(g=='d') {Map(2); if(gunT!=8) gunT++;else gunT=1;}
            if(g=='w') OpenBox(0);
            if(g=='s'&&bu<=2) Bullet(),bu+=2;
            if(g==' ') Sleep(100),SetPos(-1,18),sy++,system("pause");
        }
        if(sy==1) SetPos(-1,18),cout<<"                           ",sy--;
        if(T%2==0) Ci();
        Move();Map(0);Sleep(50);
    }
    if(Win==0&&Blood<=0&&Lev<25)
    {
        system("color 7F"),Color(4);Lev=0;Blood=Dun=Bmax=Dmax=10;
        Bblood=Bsi=Bjiao=Bdu=Bfang=0;
        memset(G,0,sizeof(G)); memset(F,0,sizeof(F));
        SetPos(2,2);cout<<"You! Die!!!",Sleep(1000);
        SetPos(3,2);cout<<"Please point 'y' to Play AGain.";
    }
    if(Lev<25) { A:char e=_getch();if(e=='y') goto St;else goto A;}
    if(Lev==25)
    {
        system("color 6E"),Color(5);
        SetPos(2,2),cout<<"You! Pass All The Level!!!";Sleep(3000);
        system("color 0F");system("cls");goto SSt;
    }
    return 0;
}

重磅来袭

#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 << "输入错误,再见" << endl;
exit(0);
}
}
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)
{
//--------1--------
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;
}
//--------2--------
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;
}
//--------3--------
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);
cout << "加载时间长,请耐心等待";
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);
system("cls");
cout << "游戏结束" << endl; printhhh();
return 0;
}
return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值