【C++游戏】胎神游戏大合集(上)

写在前面的话

众所周知,洛谷中有名的游戏创作者胎神大大是我们所有人的游戏神,不仅创作过出十分震撼人心的游戏,而且无时无刻不让所有人感到敬佩。作为一名从洛谷出来的编程者,我也是将ta的所有心血拿到 CSDN 上供大家欣赏与游玩。

以下的所有游戏中可能会有重合的情况,区别就是win10适配或者wen11适配而已,请大家按自己电脑的配置选择合适的游戏进行游玩,祝你们玩的愉快!

虽然这篇文章使用的是原创,但其中的游戏代码均为胎神所写,敬此!

代码合集

<2024> 水果忍胎 0.9

#include<bits/stdc++.h>
#include<windows.h>
#include<stdio.h>
#include<conio.h>
#include<time.h>
using namespace std;
float X,Y;int Left=1,Right=30,Up=1,Down=20;bool Medal[22],Fr[6],Cheat=0;
int Clocknum,T,Score,Combo,FruitNum,Jump_2,SS,FT[11],FC,FCT,FCF,FO,FFFt,FXia,FUp;
int up,dn,lf,rt,sy;float Vx,Vy;int Walk,Jump,Rush;
int Attention,Jumplock,AttTime,Dnlock,Lflock,Rtlock;
int RushT1,RushT2,RushT3;float Rush_Vx,Rush_Vy,Rush_x0,Rush_y0,Rush_X,Rush_Y;
const float G=0.038,t0=0.2,t00=0.8,t000=0.3;//时间参量 
struct node
{int Type;
    float X,Y,R,x0,y0,x1,y1;
    float Vx,Vy;
    int Life,color,brounce,half,Angle,AngleSpeed,t;
}F[100001];int l,m;
int N[100][45],M[100][45];

float Sin(int a) {return sin(3.1416*a/180);}float Cos(int a) {return cos(3.1416*a/180);}
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|FOREGROUND_BLUE);
if(a==-10) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE);if(a==-11) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_GREEN|BACKGROUND_BLUE);if(a==-12) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_GREEN);if(a==-13) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_RED|BACKGROUND_BLUE);if(a==-14) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_RED);if(a==-15) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_RED|BACKGROUND_GREEN);if(a==-16) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_BLUE);if(a==-17) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE);
if(a==-1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE);if(a==-2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_GREEN);if(a==-3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_BLUE);if(a==-4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED);if(a==-5) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN);if(a==-6) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_BLUE);if(a==-7) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE);
}
int To_int(float a){return int(a+0.5);}float Abs(float a){return (a>=0)?a:-a;}
void Setpos(float x,float y){COORD pos;pos.X=To_int(x)*2+1,pos.Y=To_int(y)+3;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}
void Put_Frame(){Color(0);int x=Right-Left+1,y=Down-Up+1;for(int i=0;i<=x+1;i++)for(int j=0;j<=y+1;j++){if(i==0||j==0||i==x+1||j==y+1) Setpos(i,j),printf("[]");}}
void Clear(float x,float y){
//	if(RushT3>0) Color(0);else 
	Color(-Abs(N[To_int(x)*2][To_int(y)]));Setpos(x,y),printf("  ");
	M[To_int(x*2)][To_int(y)]=-1;
}void Medal_();
void Put_Man(float x1,float y1){
	int x=To_int(x1);int y=To_int(y1);
	if(y<Up||x<Left||x>Right||y>Down) return;
	if(Rush==1||AttTime>0||Attention>0) Color(5);
	else Color(1);
	Setpos(x1,y1),printf("●");
}
void Cir(float r,char a){//不要改 ,冲刺动画1 
	int num=7,Angle=r*10;if(r<=2) num=4;
	int next=360/num;
	for(int i=Angle;i<360+Angle;i+=next)
	{
		float x,y;
		x=X+Cos(i)*r;
		y=Y+Sin(i)*r;
		if(y<Up||x<Left||x>Right||y>Down) continue;
		if(a==' '&&N[To_int(x*2)][To_int(y)]==0&&N[To_int(x*2)+1][To_int(y)]==0&&N[To_int(x*2)-1][To_int(y)]==0) Setpos(x,y),Color(0),printf(" ");
		else if(N[To_int(x*2)][To_int(y)]==0&&N[To_int(x*2)+1][To_int(y)]==0&&N[To_int(x*2)-1][To_int(y)]==0) Setpos(x,y),Color(-14),printf(" ");
	}
}
void Cir2(int k,float r,char a){//水果整圆 
	int col=F[k].color;
	float x0=F[k].X,y0=F[k].Y,R=F[k].R;
	for(int i=y0-R;i<=y0+R;i++){float Ax=sqrt(R*R-(i-y0)*(i-y0));//cout<<i<<' '<<x0-Ax+0.5<<' '<<x0+Ax<<' ';
	for(float k=x0-Ax+0.5;k<x0+Ax;k+=0.5)
		if(a==' ') N[To_int(k*2)][i]=0; else N[To_int(k*2)][i]=col;
	}
	int num=24,Angle=0;if(r<=1) num=4;else if(r<=3) num=12;
	int next=360/num;
	for(int i=Angle;i<360+Angle;i+=next)
	{
		float x,y;
		x=F[k].X+Cos(i)*r;
		y=F[k].Y+Sin(i)*r;
		if(y<Up||x<Left||x>Right||y>Down) continue;
		else {if(a==' ') N[To_int(x*2)][To_int(y)]=0; else N[To_int(x*2)][To_int(y)]=col+10;}
	}for(int i=0;i<360;i+=90)
	{
		float x,y;
		x=F[k].X+Cos(i)*r;
		y=F[k].Y+Sin(i)*r;
		if(y<Up||x<Left||x>Right||y>Down) continue;
		else {if(a==' ') N[To_int(x*2)][To_int(y)]=0; else N[To_int(x*2)][To_int(y)]=col+10;}
	}
}
void Cir3(int xx,int yy,float r,char a){//不要改 冲刺动画2
	r++;
	int num=8,Angle=r*10-17;if(r<=2) num=4;
	int next=360/num;
	for(int i=Angle;i<360+Angle;i+=next)
	{
		float x,y;
		x=xx+Cos(i)*r;
		y=yy+Sin(i)*r;
		if(y<Up||x<Left||x>Right||y>Down) continue;
		if(a==' '&&N[To_int(x*2)][To_int(y)]==0&&N[To_int(x*2)+1][To_int(y)]==0&&N[To_int(x*2)-1][To_int(y)]==0) Setpos(x,y),Color(0),printf(" ");
		else if(N[To_int(x*2)][To_int(y)]==0&&N[To_int(x*2)+1][To_int(y)]==0&&N[To_int(x*2)-1][To_int(y)]==0) Setpos(x,y),Color(-14),printf(" ");
	}
}
void Cir4(int k,float r,char a){//半圆 
	int col=F[k].color;
	int num=24,Angle=F[k].Angle;if(r<=1) num=4;else if(r<=3) num=12;
	int next=360/num;
	for(int i=Angle;i<180+Angle;i+=next)
	{
		float x,y;
		x=F[k].X+Cos(i)*r;
		y=F[k].Y+Sin(i)*r;
		if(y<Up||x<Left||x>Right||y>Down) continue;
		else {if(a==' ') N[To_int(x*2)][To_int(y)]=0; else N[To_int(x*2)][To_int(y)]=col;}
	}bool left=0;
	float x0=F[k].X+Cos(Angle)*r    ,y0=F[k].Y+Sin(Angle)*r;
	float x1=F[k].X+Cos(Angle+180)*r,y1=F[k].Y+Sin(Angle+180)*r;
    float Ax=x1-x0,Ay=y1-y0,Dis=sqrt(Ax*Ax+Ay*Ay);
    if(Ay<0) swap(x1,x0),swap(y1,y0),Ax*=-1,Ay*=-1;
	if(Ax<0) left=1;
    float ax=Ax/Dis*1.0,ay=Ay/Dis*1.0;
	float i=x0,j=y0;
    while(j<=y1&&((i<=x1&&left==0)||(i>=x1&&left==1))){
		if(j<Up||i<Left||i>Right||j>Down) int nil=0;
		else {if(a==' ') N[To_int(i*2)][To_int(j)]=0; else N[To_int(i*2)][To_int(j)]=col;}
        i+=ax;j+=ay;
    }for(int i=0;i<360;i+=90)
	{
		if(i<Angle||i>Angle+180) continue; 
		float x,y;
		x=F[k].X+Cos(i)*r;
		y=F[k].Y+Sin(i)*r;
		if(y<Up||x<Left||x>Right||y>Down) continue;
		else  {if(a==' ') N[To_int(x*2)][To_int(y)]=0; else N[To_int(x*2)][To_int(y)]=col;}
	}
}
void Line(float x0,float y0,float x1,float y1,char a,int col){bool left=0;
if(col==-5) m++,F[m].Type=-1,F[m].Life=1,F[m].t=0,F[m].x0=x0,F[m].y0=y0,F[m].x1=x1,F[m].y1=y1;
    float Ax=x1-x0,Ay=y1-y0,Dis=sqrt(Ax*Ax+Ay*Ay);
    if(Ay<0) swap(x1,x0),swap(y1,y0),Ax*=-1,Ay*=-1;
	if(Ax<0) left=1;
    float ax=Ax/Dis*0.9,ay=Ay/Dis*0.9;
	float i=x0,j=y0;
    while(j<=y1&&((i<=x1&&left==0)||(i>=x1&&left==1))){
		if(j<Up||i<Left||i>Right||j>Down) int nil=0;
		else Setpos(i,j),Color(col),printf("  ");
        i+=ax;j+=ay;
    }Color(0);
}
void Print_Fruit(int i,char a){
	if(F[i].half==1) Cir4(i,F[i].R,a);
	else Cir2(i,F[i].R,a);
}
void Go(){
		if(Y<=Up) Y=Up,AttTime=0;
		if(Y>=Down){FC=0;FCF=0;if(clock()-FCT>10000&&Medal[20]==0&&T>10000) Medal[20]=1,Medal_(); FCT=clock();
			if(Jump>=1) Vy=0,Vx/=2,Y=Down,Jump=0,Walk=1;//触地 
		}
		if(X<=Left) X=Left,Vx=0;if(X>=Right) X=Right,Vx=0;
	
	int Num=up+dn+lf+rt;
	
	if(RushT3>0) RushT3--;
	if(RushT2>0){
		if(Rush==2&&RushT2<4) Cir3(Rush_X,Rush_Y,RushT2,' ');
		RushT2--;
		if(RushT2==0) {Rush=0,RushT3=3,Vx=(Vx+Rush_Vx*t00)/3.0,Vy=(Vy+Rush_Vy*t00)/3.0,Line(X,Y,Rush_x0,Rush_y0,' ',-5),Color(0);if(Y<=Up) RushT3=0,AttTime=0,Vy=max(0.1,(double)Vy);FC++;FO++;if(FC>=8&&Medal[16]==0) Medal[16]=1,Medal_();if(FO>=10&&Medal[18]==0) Medal[18]=1,Medal_();}
		if(Rush==2) Cir3(Rush_X,Rush_Y,RushT2,'|');
	}
	if(AttTime>0){AttTime--;
		if(Num!=0){
			if(up==1&&Jumplock!=0) int nil=0;
			else if(dn==1&&Dnlock!=0) int nil=0;
			else if(Num==1&&lf==1&&Lflock!=0) int nil=0;
			else if(Num==1&&rt==1&&Rtlock!=0) int nil=0;
			else {Attention=0;AttTime=0;
			if(RushT1==0&&Rush==0) RushT1=6;
			}
		}
	}
	if(RushT1!=0) {
		if(RushT1<6) Cir(RushT1,' ');
		RushT1--;
		if(RushT1==0){//开始冲刺 
			int non=0;//non很重要 
			if(Num==1){
				if(up==1&&Jumplock==0) Rush_Vx=0,Rush_Vy=-1.3,Jumplock=1;
				else if(lf==1&&Lflock==0) Rush_Vx=-1.8,Rush_Vy=0,Lflock=1;
				else if(rt==1&&Rtlock==0) Rush_Vx=1.8,Rush_Vy=0,Rtlock=1;
				else if(dn==1&&Dnlock==0) Rush_Vx=0,Rush_Vy=3,Dnlock=1;
				else non=1;
			}
			else if(Num==2){
				if(up==1&&lf==1&&Jumplock==0) Rush_Vx=-1.5,Rush_Vy=-1.5,Jumplock=1;
				else if(up==1&&rt==1&&Jumplock==0) Rush_Vx=1.5,Rush_Vy=-1.5,Jumplock=1;
				else if(dn==1&&lf==1&&Dnlock==0) Rush_Vx=-1.5,Rush_Vy=1.5,Dnlock=1;
				else if(dn==1&&rt==1&&Dnlock==0) Rush_Vx=1.5,Rush_Vy=1.5,Dnlock=1;
				else non=1;
			}
			else non=1;
			if(non==0) {Rush_x0=X,Rush_y0=Y,Rush=1,RushT2=4;}
		}
		else Cir(RushT1,'|');
	}
	if(Walk==1&&Jump==0){//正在触地 
		FC=0;FCF=0;if(clock()-FCT>10000&&Medal[20]==0&&T>10000) Medal[20]=1,Medal_(); FCT=clock();
		if(Abs(Vx)<1.95*t0) Attention=0;
		if(Num==0) Vx*=0.6;//摩擦 
		if(Num==1||(Num==2&&up==1)){
			if(lf==1){
				if(Vx<=2*t0&&Vx>-0.8*t0) Vx-=0.5*t0;
				else if(Vx<=-0.8*t0&&Vx>-2*t0) Vx-=0.1*t0;
				else if(Vx<=-2*t0){
					Vx=-2*t0,Attention=1;
					if(up==1) Rush_x0=X,Rush_y0=Y,Rush_X=X-1,Rush_Y=Y-2,Rush=2,RushT2=4,Rush_Vx=-1.5,Rush_Vy=-1.5,Jumplock=1; 
				}
			}
			if(rt==1){
				if(Vx<=0.8*t0&&Vx>-2*t0) Vx+=0.5*t0;
				else if(Vx>=0.8*t0&&Vx<2*t0) Vx+=0.1*t0;
				else if(Vx>=2*t0){
					Vx=2*t0,Attention=1;
					if(up==1) Rush_x0=X,Rush_y0=Y,Rush_X=X+1,Rush_Y=Y-2,Rush=2,RushT2=4,Rush_Vx=1.5,Rush_Vy=-1.5,Jumplock=1;
				}
			}
			if(up==1){
				Vy=-0.6;Walk=0;Jump=1;Jumplock=1;
			}
		}
	}
	if(Jump>=1&&Rush==0){//普通滞空 
	int num=up+dn;
		if(Abs(Vy)<=0.05) Attention=1,AttTime=7;else Attention=0;
		if(num==1&&up==1&&Jump==1&&Attention==0&&AttTime==0&&Jumplock==0&&Jump_2==1){
			if(Vy>-0.2) Vy=-0.4;
			if(Vy<=-0.2) Vy-=0.2;
			Jump=2;//二段跳 
		}
		if(num==1&&dn==1){
			Vy+=0.1; 
		}
		Vy+=G;
	}
	Clear(X,Y);
	if(RushT1>0) int nil=0;
	else if(Rush==1) X+=Rush_Vx*t00,Y+=Rush_Vy*t00;
	else X+=Vx,Y+=Vy;
	
	if(Y<Up||X<Left||X>Right||Y>Down){
		if(Rush>0||RushT3>0)
		{
			if((X<Left||X>Right)&&Rush_Vy==0) Vy=-0.2,Vx=0;
		}
	}
	if(Y<=Up) Y=Up;if(X<=Left) X=Left;if(X>=Right) X=Right;if(Y>=Down) Y=Down;
	Put_Man(X,Y);
}
void CreatF(){
if(clock()-Clocknum>=25) return;
if(FruitNum>=5) return;
	m++;F[m].Life=2;F[m].brounce=1;F[m].half=0;F[m].t=0; 
	int R=rand()%5+1;F[m].Type=R;
	if(R==1) F[m].R=3.45,F[m].color=2;//="Watermelon";
	if(R==2) F[m].R=1.85,F[m].color=4;//="Strawberry";
	if(R==3) F[m].R=2.0,F[m].color=5;//="Orange    ";
	if(R==4) F[m].R=2.45,F[m].color=3;//="Grapes    ";
	if(R==5) F[m].R=1.85,F[m].color=6;//="Blueberry ";
	int r=rand()%6+1;
	if(r<=6) {//上下方 
		F[m].X=Left+(rand()%100)*(Right-Left)/100.0;
		F[m].Vx=1.0-(rand()%100)*2/100.0;
		if(r>1) F[m].Y=Down-1,F[m].Vy=-1-(rand()%100)*1/100.0;
		else F[m].Y=Up+1,F[m].Vy=(rand()%100)*1/100.0;
		F[m].Angle=rand()%360,F[m].AngleSpeed=rand()%20+5;
		if(r>1) F[m].Y+=F[m].R;else F[m].Y-=F[m].R;
	}
}
void Move(int Stage){//移动的状态调整,准备移步至Go函数 
	float x,y,r;FruitNum=0;
	for(int i=l;i<=m;i++){
		
		if(i==l&&F[i].Life==0){l++;if(l>m) l=1,m=0;continue;}
		else if(F[i].Life==0) {continue;}
		if(F[i].Type==-1){F[i].t++;
			if(F[i].t==3) Line(F[i].x0+Rush_Vx,F[i].y0+Rush_Vy,F[i].x1+Rush_Vx,F[i].y1+Rush_Vy,' ',-1);
			if(F[i].t>=4) Line(F[i].x0,F[i].y0,F[i].x1,F[i].y1,' ',0),Line(F[i].x0+Rush_Vx,F[i].y0+Rush_Vy,F[i].x1+Rush_Vx,F[i].y1+Rush_Vy,' ',0),F[i].Life=0;
		continue;}
		if(F[i].Life==2){F[i].t++;
			if(F[i].t>10) {Color(0);x=F[i].X,y=(F[i].Y>=Down)?Down:Up;
			 		M[To_int(x*2)][To_int(y)]=-1;
				F[i].Life=1;}
			else  Color((F[i].t%6<=2)?-4:-5),Setpos(F[i].X,(F[i].Y>=Down)?Down:Up),cout<<"!!";
			Color(0);
			continue;
		}
		Print_Fruit(i,' ');
		if(F[i].half==1) F[i].R*=0.96;
		if(F[i].half==1&&F[i].t>=20){F[i].Life=0;continue;}
		if(F[i].Type>=1&&F[i].Type<=5) FruitNum++;
		
		x=F[i].X,y=F[i].Y,r=F[i].R;
		float D=sqrt((x-X)*(x-X)+(y-Y)*(y-Y)),D2=sqrt((Rush_x0-x)*(Rush_x0-x)+(Rush_y0-y)*(Rush_y0-y));
		if((D<=r*1.0||D2<=r*1.0)&&(Rush!=0||RushT3!=0)&&F[i].half==0) {
		Combo++,Score+=10*Combo;FO=0;
		if(Medal[8]==0&&Rush_Vx==0&&Rush_Vy>0) FXia++;if(FXia>=30) Medal[8]=1,Medal_(); if(Medal[14]==0&&Rush_Vx==0&&Rush_Vy<0) FUp++;if(FUp>=40) Medal[14]=1,Medal_(); 
		if(Medal[3]==0) Medal[3]=1,Medal_();if(Fr[F[i].Type]==0) {Fr[F[i].Type]=1;if(Fr[1]+Fr[2]+Fr[3]+Fr[4]+Fr[5]==5) Medal[4]=1,Medal_();}if(Combo>=15&&Medal[5]==0) Medal[5]=1,Medal_();if(Combo>=40&&Medal[17]==0) Medal[17]=1,Medal_();if(Score==520&&Medal[6]==0) Medal[6]=1,Medal_();
		if(Score>=1000&&Medal[15]==0) Medal[15]=1,Medal_();if(Score>=10000&&Medal[19]==0) Medal[19]=1,Medal_();if(Score>=100000&&Medal[21]==0) Medal[21]=1,Medal_();
		FCF++;if(FCF>=5&&Medal[9]==0) Medal[9]=1,Medal_();if(FCF>=10&&Medal[12]==0) Medal[12]=1,Medal_();
			if(F[i].Y<=Up&&Medal[13]==0) Medal[13]=1,Medal_(); if(F[i].Y>=Down&&Medal[7]==0) Medal[7]=1,Medal_();if(Medal[10]==0) {FFFt++;if(FFFt>10) FFFt-=10;FT[FFFt]=clock();int Kkk=5000;for(int kk=1;kk<=10;kk++) Kkk=max(Kkk,(int)(clock()-FT[kk]));if(Kkk<5000) Medal[10]=1,Medal_();} 
			
			F[i].Life=0;
			for(int tt=1;tt<=3;tt++){
			if(tt==1) for(int t=1;t<=2;t++) m++,F[m].R=F[i].R-0.6+(rand()%10+10)/20.0,F[m].Life=1,F[m].Type=6,F[m].color=4,F[m].brounce=0,F[m].half=1,F[m].X=F[i].X,F[m].Y=F[i].Y,F[m].t=0;
			if(tt==2) for(int t=1;t<=2;t++) m++,F[m].R=F[i].R-0.6+(rand()%10+10)/20.0,F[m].Life=1,F[m].Type=6,F[m].color=F[i].color,F[m].brounce=0,F[m].half=1,F[m].X=F[i].X,F[m].Y=F[i].Y,F[m].t=0;
			if(tt==3) for(int t=1;t<=2;t++) m++,F[m].R=F[i].R-0.4,F[m].Life=1,F[m].Type=F[i].Type,F[m].color=F[i].color+10,F[m].brounce=0,F[m].half=1,F[m].X=F[i].X,F[m].Y=F[i].Y,F[m].t=0;
			if(Rush_Vx!=0&&Rush_Vy==0){//横切 
				int turn=(Rush_Vx>0)?1:-1;
				F[m-1].Angle=180,F[m-1].AngleSpeed=turn*(5+rand()%10),F[m-1].Vx=F[i].Vx+turn*(rand()%10+10)*0.1,F[m-1].Vy=F[i].Vy-(rand()%10+10)*0.05-1;//上 
				F[m].Angle=0,F[m].AngleSpeed=turn*(-5-rand()%10),F[m].Vx = F[i].Vx+turn*(rand()%10+10)*0.1,F[m].Vy = F[i].Vy+(rand()%10+10)*0.05;//下 
			}else if(Rush_Vy!=0&&Rush_Vx==0){//竖切 
				int turn=(Rush_Vy>0)?1:-1;
				F[m-1].Angle=270,F[m-1].AngleSpeed=turn*(5+rand()%10),F[m-1].Vx=F[i].Vx+(rand()%10+10)*0.1,F[m-1].Vy=F[i].Vy+(rand()%10+10)*0.1*turn-0.5;//→ 
				F[m].Angle=90,F[m].AngleSpeed=turn*(-5-rand()%10),F[m].Vx = F[i].Vx-(rand()%10+10)*0.1,F[m].Vy = F[i].Vy+(rand()%10+10)*0.1*turn-0.5;//左 
			}else{
				if(Rush_Vy*Rush_Vx<0){int turn=(Rush_X<0)?1:-1; //右上 
					F[m-1].Angle=135,F[m-1].AngleSpeed=-turn*(5+rand()%10),F[m-1].Vx=F[i].Vx-(rand()%10+10)*0.1,F[m-1].Vy=F[i].Vy-(rand()%10+10)*0.04-1;//上 
					F[m].Angle=315,F[m].AngleSpeed=turn*(5+rand()%10),F[m].Vx=F[i].Vx+(rand()%10+10)*0.1,F[m].Vy=F[i].Vy+(rand()%10+10)*0.04;//下 
				} 
				if(Rush_Vy*Rush_Vx>0){int turn=(Rush_X<0)?1:-1;//左上 
					F[m-1].Angle=225,F[m-1].AngleSpeed=-turn*(5+rand()%10),F[m-1].Vx=F[i].Vx+(rand()%10+10)*0.1,F[m-1].Vy=F[i].Vy-(rand()%10+10)*0.04-1;//上 
					F[m].Angle=45,F[m].AngleSpeed=turn*(5+rand()%10),F[m].Vx=F[i].Vx-(rand()%10+10)*0.1,F[m].Vy=F[i].Vy+(rand()%10+10)*0.04;//下 
				}
			}if(tt<=1) F[m-1].Vx*=1.2,F[m-1].Vy*=1.2,F[m].Vx*=1.2,F[m].Vy*=1.2;
			}
			continue;
		}
		F[i].t++;
		F[i].Angle+=F[i].AngleSpeed;
		if(F[i].Angle>=360) F[i].Angle-=360;
		if(F[i].Angle<0) F[i].Angle+=360;
		
		F[i].X+=F[i].Vx*t000;F[i].Y+=F[i].Vy*t000;
		x=F[i].X,y=F[i].Y;
		
		if(y+F[i].R<Up||y-F[i].R>Down){
			if(F[i].t<=5) {F[i].Vy*=-1;
			if(y+F[i].R<Up) F[i].Y=-F[i].R+Up;
			if(y-F[i].R>Down) F[i].Y=F[i].R+Down;}
		
		F[i].Life=0;continue;}
		if(x<Left||x>Right){
			if(F[i].brounce>0||F[i].t<=5){if(F[i].brounce>0) F[i].brounce--;F[i].Vx*=-1;
				if(x<Left) F[i].X=Left;
				if(x>Right) F[i].X=Right;
			}
			else {F[i].Life=0;continue;}
		}
		if(Stage==0||F[i].Type<=0||F[i].Type>=5) F[i].Vy+=G;
		
		Print_Fruit(i,'*');
	}
}
void Print(){
	for(int i=Left*2;i<=Right*2;i++)
	for(int j=Up;j<=Down;j++){
		if(N[i][j]!=M[i][j]){
			if(N[i][j]==0) Color(0),Setpos(i/2.0,j),printf("  ");
			else Color(-Abs(N[i][j])),Setpos(i/2.0,j),printf("  ");
		}
		M[i][j]=N[i][j];
	}memset(N,0,sizeof(N));Color(0);
}
void Slow(char *p) {while(1){if(*p!=0) printf("%c",*p++);else break;if(!kbhit()) Sleep(20);}}
int speed;
void Start(){Color(1);SS=1;
	Setpos(2,2),cout<<"水果忍胎 0.9 ";
	Setpos(10,3),cout<<"作者:胎神大大";
	Setpos(2,6),cout<<"按 x 进入教学模式,按 y 直接开始游戏!";
	Setpos(2,8),cout<<"除了封面其他的都做好了qwq,但是做封面好麻烦所以说不想做直接发布了   我这边用的 Win11 输出的字符画很流畅,不知道你们电脑会不会有什么黑点阿残影阿输出错误之类的,总之这个游戏玩起来确实蛮爽的!大家加油,看看哪个先点满成就哈(万一有 BUG 呢是吧,毕竟有些成就死活打不出来...另外因为有成就所以说顺便把存档也做了,大家放心打)";
	Setpos(1,20),cout<<"你可根据电脑性能重新选择画面流畅度:默认为 均衡 流畅度,按 q 调为低流畅,按 w 调为中低流畅,按 e 调为极高流畅 (盲目调高流畅度会导致画面卡顿)";speed=4;
	A:char e=_getch();if(e=='y') return;else if(e=='x') int nil=0;else if(e=='q') {speed=10;goto A;}else if(e=='w') {speed=4;goto A;}else if (e=='e') {speed=2;goto A;}else goto A;
	int Stage=0,StageY=0,StageT=0;
	system("cls");memset(N,0,sizeof(N));memset(M,0,sizeof(M));
	Put_Frame();
	T=0;Clocknum=0;X=2;Y=1;Vx=Vy=0;Jump=1;Put_Man(X,Y);//初始状态掉落 
	memset(F,0,sizeof(F));l=m=0;Score=Combo=0;
    while(1) if(clock()-Clocknum>=25)
    {T++;
    	Clocknum=clock();
    	up=dn=lf=rt=0;
        if(GetAsyncKeyState(VK_UP)&0x8000) up=1;else Jumplock=0; 
        if(GetAsyncKeyState(VK_DOWN)&0x8000) dn=1;else Dnlock=0; 
        if(GetAsyncKeyState(VK_LEFT)&0x8000) lf=1;else Lflock=0; 
        if(GetAsyncKeyState(VK_RIGHT)&0x8000) rt=1;else Rtlock=0; 
        if(kbhit()) {char g=_getch();if(g==' ') Sleep(100),Setpos(16,3),sy++,Color(0),system("pause");if(g=='y'&&Stage>=1) StageY=1;if(g=='x'&&Stage==2) Jump_2=1,Setpos(26,26),Color(5),cout<<"开";}
        if(sy>=1) Setpos(16,3),cout<<"                           ",sy=0;
        
        if(Stage==0&&StageT==0){
        	Setpos(2,22),Color(0),Slow("欢迎来到 忍者神胎 教学关卡");Sleep(500);
        	Setpos(2,24),Color(0),Slow("本游戏只有↑↓→←四种按键操作,想必是十分简单的,但又有很大的发挥空间!");Sleep(500);
        	Setpos(2,26),Color(0),Slow("按下↑↓→←进行移动。注:空中按 ↓ 有加速下落的效果");
			StageT=T;	
		}
		if(Stage==0&&T-StageT>=100)//5s
		{Stage++;
        	Setpos(2,22),Color(0),printf("                           ");
        	Setpos(2,24),Color(0),printf("                                                                        ");	
        	Setpos(2,26),Color(0),printf("                                                                ");
        	m++,F[m].Angle=0,F[m].AngleSpeed=0,F[m].color=2,F[m].half=0,F[m].Life=1,F[m].R=3.45,F[m].t=0,F[m].Type=1,F[m].Vx=F[m].Vy=0,F[m].X=16,F[m].Y=13;Print();
        	Setpos(2,22),Color(0),Slow("按↑跳起后,立刻在空中重新  长按 方向键 可以进行挥砍!来试试刀法!");
        	Setpos(2,24),Color(0),Slow("按 y 开启下一阶段教学");
		}
		if(Stage==1&&F[1].Life==1) StageT=T;
		if(Stage==1&&F[1].Life==0&&T-StageT>=20){
			StageT=T;
        	l=0,m++,F[1].Angle=45,F[1].AngleSpeed=0,F[1].color=2,F[1].half=0,F[1].Life=1,F[1].R=3.45,F[1].t=0,F[1].Type=1,F[1].Vx=F[1].Vy=0,F[1].X=16,F[1].Y=13;
		}
        if(StageY==1&&Stage==1){StageY=0;Stage++;memset(M,-1,sizeof(M));memset(N,0,sizeof(N));
        	Setpos(2,22),Color(0);printf("                                                               ");
        	Setpos(2,24),Color(0);printf("                      "); 
        	l=0;for(int tt=1;tt<=3;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0,F[tt].X=16,F[tt].Y=19-tt*5;
        	Print();Setpos(2,22),Color(0),Slow("接下来练习连招!");
        	Setpos(2,24),Color(0),Slow("在空中可以连续按  ↑ 进行多段跳跃,如果你不习惯,可以按 x 开启二段跳能力(PS:连招的秘诀是把握节奏)");
        	Setpos(2,26),Color(0),Slow("按 y 开启下一阶段教学      ( 二段跳能力状态:       )");
        	Setpos(26,26),Color(5);cout<<"关";
		}
		if(Stage==2&&F[1].Life+F[2].Life+F[3].Life==3) StageT=T;
		if(Stage==2&&F[1].Life+F[2].Life+F[3].Life<3&&T-StageT>=50){
			StageT=T;
        	l=0;for(int tt=1;tt<=3;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0,F[tt].X=16,F[tt].Y=19-tt*5;
        }
        if(StageY==1&&Stage==2){StageY=0;Stage++;memset(M,-1,sizeof(M));memset(N,0,sizeof(N));
        	Setpos(2,22),Color(0),printf("                 ");
        	Setpos(2,24),Color(0),printf("                                                                                                  ");
        	Setpos(2,26),Color(0),printf("                                                          ");
        	l=0;for(int tt=1;tt<=4;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0;
			F[1].X=9,F[1].Y=15.5;F[2].X=17.3,F[2].Y=9.4;F[3].X=9.6,F[3].Y=3.5;F[4].X=17,F[4].Y=1;

        	Print();Setpos(2,22),Color(0);Slow("空中折线跳:先跳起,再在空中向上连续左右冲刺,是一种杀伤面积广,上升距离大的连招");
        	Setpos(2,24),Color(0);Slow("按 y 开启下一阶段教学 (本关四个果子可一个连招砍完,试试精细操作!)"); 
		}
		if(Stage==3&&F[1].Life+F[2].Life+F[3].Life+F[4].Life==4) StageT=T;
		if(Stage==3&&F[1].Life+F[2].Life+F[3].Life+F[4].Life<4&&T-StageT>=50){
			StageT=T;
        
        	l=0;for(int tt=1;tt<=4;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0;
			F[1].X=9,F[1].Y=15.5;F[2].X=17.3,F[2].Y=9.4;F[3].X=9.6,F[3].Y=3.5;F[4].X=17,F[4].Y=1;}
        if(StageY==1&&Stage==3){StageY=0;Stage++;memset(M,-1,sizeof(M));memset(N,0,sizeof(N));
        	Setpos(2,22),Color(0),printf("                                                                                         ");
        	Setpos(2,24),Color(0),printf("                                                                            ");
        	l=0;for(int tt=1;tt<=4;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0;
			F[1].X=15.4,F[1].Y=15.5;F[2].X=7.3,F[2].Y=9.5;F[3].X=15.4,F[3].Y=3.6;F[4].X=15.4,F[4].Y=8.5;

        	Print();Setpos(2,22),Color(0);Slow("三角围杀:先使用折线跳跳至目标上方,再向下瞄准,冲刺切除下方水果");
        	Setpos(2,24),Color(0);Slow("按 y 开启下一阶段教学"); 
		}
		if(Stage==4&&F[1].Life+F[2].Life+F[3].Life+F[4].Life==4) StageT=T;
		if(Stage==4&&F[1].Life+F[2].Life+F[3].Life+F[4].Life<4&&T-StageT>=50){
			StageT=T;
        
        	l=0;for(int tt=1;tt<=4;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0;
			F[1].X=15.4,F[1].Y=15.5;F[2].X=7.3,F[2].Y=9.5;F[3].X=15.4,F[3].Y=3.6;F[4].X=15.4,F[4].Y=8.5;}
        if(StageY==1&&Stage==4){StageY=0;Stage++;memset(M,-1,sizeof(M));memset(N,0,sizeof(N));
        	Setpos(2,22),Color(0),printf("                                                                              ");
        	Setpos(2,24),Color(0),printf("                                                                            ");
        	l=0;for(int tt=1;tt<=4;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0;
			F[1].X=4.7,F[1].Y=15.5;F[2].X=1,F[2].Y=15.5;F[3].X=1,F[3].Y=11;F[4].X=10,F[4].Y=5;

        	Print();Setpos(2,22),Color(0);Slow("撞墙跳:利用平扑撞墙会产生一个小向上速度的特性,将本应断掉的连招接续起来");
        	Setpos(2,24),Color(0);Slow("按 y 开启下一阶段教学 (本关接连招砍绿果、紫果、红果)"); 
		}
		if(Stage==5&&F[1].Life+F[2].Life+F[3].Life+F[4].Life==4) StageT=T;
		if(Stage==5&&F[1].Life+F[2].Life+F[3].Life+F[4].Life<4&&T-StageT>=50){
			StageT=T;
        	l=0;for(int tt=1;tt<=4;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0;
        	F[1].X=4.7,F[1].Y=15.5;F[2].X=1,F[2].Y=15.5;F[3].X=1,F[3].Y=11;F[4].X=10,F[4].Y=5;}
        if(StageY==1&&Stage==5){StageY=0;Stage++;memset(M,-1,sizeof(M));memset(N,0,sizeof(N));
        	Setpos(2,22),Color(0),printf("                                                                                ");
        	Setpos(2,24),Color(0),printf("                                                                            ");
        	l=0;for(int tt=1;tt<=4;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0;
			F[1].X=18,F[1].Y=15;F[2].X=16,F[2].Y=17;F[3].X=24,F[3].Y=13;F[4].X=24,F[4].Y=8;

        	Print();Setpos(2,22),Color(0);Slow("平地起冲:长按 → 加速至变黄,立即再按下  ↑ 可直接起冲,接连招");
        	Setpos(2,24),Color(0);Slow("按 y 开启下一阶段教学 (本关接连招砍紫果、红果)"); 
		}
		if(Stage==6&&F[1].Life+F[2].Life+F[3].Life+F[4].Life==4) StageT=T;
		if(Stage==6&&F[1].Life+F[2].Life+F[3].Life+F[4].Life<4&&T-StageT>=50){
			StageT=T;
        	l=0;for(int tt=1;tt<=4;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0;
        	F[1].X=18,F[1].Y=15;F[2].X=16,F[2].Y=17;F[3].X=24,F[3].Y=13;F[4].X=24,F[4].Y=8;}
        if(StageY==1&&Stage==6){StageY=0;Stage++;memset(M,-1,sizeof(M));memset(N,0,sizeof(N));
        	Setpos(2,22),Color(0),printf("                                                                              ");
        	Setpos(2,24),Color(0),printf("                                                                            ");
        	l=0;for(int tt=1;tt<=4;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0;
			F[1].X=5,F[1].Y=16;F[2].X=10,F[2].Y=19;F[3].X=12,F[3].Y=19;F[4].X=21,F[4].Y=15;

        	Print();Setpos(2,22),Color(0);Slow("凌波微步: 跳起在空中向右下冲击地面,不要松开 →以获得极大的速度,然后重新按下  ↑ ,紧接平地起冲!");
        	Setpos(2,24),Color(0);Slow("按 y 完成教学关卡 (本关蓝果下冲,紫果起跳,接连招砍红果)"); 
		}
		if(Stage==7&&F[1].Life+F[2].Life+F[3].Life+F[4].Life==4) StageT=T;
		if(Stage==7&&F[1].Life+F[2].Life+F[3].Life+F[4].Life<4&&T-StageT>=50){
			StageT=T;
        	l=0;for(int tt=1;tt<=4;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0;
			F[1].X=5,F[1].Y=16;F[2].X=10,F[2].Y=19;F[3].X=12,F[3].Y=19;F[4].X=21,F[4].Y=15;
        }
        if(StageY==1&&Stage==7) return;
        
		if(RushT1==0) Move(1);
        Go();
		if(RushT1==0&&T%speed==0) Print();
}
}
void Read(){
    ifstream in("水果忍胎存档.in");int Xx=0,Yy;
    for(int i=0;i<=21;i++) in>>Medal[i],Xx+=345*(2*i+1)*Medal[i];
    in>>Yy>>Score>>Combo>>T>>FXia>>FUp;if(Yy!=Xx) Cheat=1;
    in.close();
}
void Save(){
    ofstream out("水果忍胎存档.in");int Xx=0;
    for(int i=0;i<=21;i++) out<<Medal[i]<<' ',Xx+=345*(2*i+1)*Medal[i];
    out<<Xx<<' '<<Score<<' '<<Combo<<' '<<T<<' '<<FXia<<' '<<FUp;
    out.close();
}
void Medal_(){if(SS==1) return;
	if(Cheat==1) Setpos(33,0),Color(4),printf("检测到您更改过存档,你的存档已不可用。"),memset(Medal,0,sizeof(Medal));
	Setpos(33,1),Color(0),printf("[成就系统]  (按 c 可以存档 d 读档)");int rr=0;
	Setpos(34,3);if(Medal[3]==1) Color(5),rr++;else Color(7);printf("[出刀!]   完成一次切割");
	Setpos(34,4);if(Medal[7]==1) Color(5),rr++;else Color(7);printf("[绝杀]     在底线处完成一次切割");
	Setpos(34,5);if(Medal[4]==1) Color(5),rr++;else Color(7);printf("[全图鉴]   切割全部五种水果");
	Setpos(34,6);if(Medal[5]==1) Color(5),rr++;else Color(7);printf("[闪光]     达到十五 COMBO");   
	Setpos(34,7);if(Medal[6]==1) Color(5),rr++;else Color(7);printf("[回眸]     精准达到 520 分");  
	Setpos(34,8);if(Medal[8]==1) Color(5),rr++;else Color(7);printf("[柴刀]     下劈劈裂水果三十次");
	Setpos(34,9);if(Medal[9]==1) Color(5),rr++;else Color(7);printf("[连锁反应] 一次腾空中切割五个水果");
	Setpos(34,10);if(Medal[10]==1) Color(5),rr++;else Color(7);printf("[霹雳]     五秒钟切割十个水果");
	Setpos(34,11);if(Medal[11]==1) Color(5),rr++;else Color(7);printf("[征服者]   进行五分钟游戏");
	Setpos(34,12);if(Medal[12]==1) Color(5),rr++;else Color(7);printf("[神来之笔] 一次腾空中切割十个水果");
	Setpos(34,13);if(Medal[13]==1) Color(5),rr++;else Color(7);printf("[天封]     在最高线处完成一次切割");
	Setpos(34,14);if(Medal[14]==1) Color(5),rr++;else Color(7);printf("[升龙]     上劈劈裂水果四十次");
	Setpos(34,15);if(Medal[15]==1) Color(5),rr++;else Color(7);printf("[小忍者]   达到一千分");
	Setpos(34,16);if(Medal[16]==1) Color(5),rr++;else Color(7);printf("[八连]     一次腾空中冲刺八次(有巧解)");   
	Setpos(34,17);if(Medal[17]==1) Color(5),rr++;else Color(7);printf("[连诀]     达到四十 COMBO");   
	Setpos(34,18);if(Medal[18]==1) Color(5),rr++;else Color(7);printf("[幸存者]   连续十次空刀(请勿点亮)");    
	Setpos(34,19);if(Medal[19]==1) Color(5),rr++;else Color(7);printf("[水果杀手] 达到一万分");
	Setpos(34,20);if(Medal[20]==1) Color(5),rr++;else Color(7);printf("[虎翅]     腾空十秒");   
	Setpos(34,21);if(Medal[21]==1) Color(5),rr++;else Color(7);printf("[你疯了?!] 达到十万分");
	Setpos(34,22);if(rr>=19) Medal[22]=1;if(Medal[22]==1) Color((T%4<=1)?-4:-5);else Color(7);printf("[传说]     达成全部成就");   
}
int main(){	
    CONSOLE_CURSOR_INFO cursor_info={1,0};
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
    srand((unsigned)time(NULL));
    Start();
	ST:SS=0;
	system("cls");memset(N,0,sizeof(N));memset(M,0,sizeof(M));FC=FCF=FCT=FO=FFFt=FXia=FUp=0;memset(FT,0,sizeof(FT));memset(Medal,0,sizeof(Medal));
	Put_Frame();Medal_();
	T=0;Clocknum=0;X=2;Y=1;Vx=Vy=0;Jump=1;Put_Man(X,Y);//初始状态掉落 
	memset(F,0,sizeof(F));l=m=0;Score=Combo=0;
    Setpos(2,-3),Color(1),cout<<"本游戏为休闲模式,没有目标分数,请尽情享受切水果的酣爽盛宴!(空格可以暂停)";Medal_();
    while(1) if(clock()-Clocknum>=25)
    {T++;if(T>11000&&Medal[11]==0) Medal[11]=1,Medal_();
    	Clocknum=clock();
    	up=dn=lf=rt=0;
        if(GetAsyncKeyState(VK_UP)&0x8000) up=1;else Jumplock=0; 
        if(GetAsyncKeyState(VK_DOWN)&0x8000) dn=1;else Dnlock=0; 
        if(GetAsyncKeyState(VK_LEFT)&0x8000) lf=1;else Lflock=0; 
        if(GetAsyncKeyState(VK_RIGHT)&0x8000) rt=1;else Rtlock=0; 
        if(kbhit()) {char g=_getch();if(g==' ') Sleep(100),Setpos(16,3),sy++,Color(0),system("pause");if(g=='c') Save(),system("color 6E"),Sleep(1000),system("color 0F");if(g=='d') Read(),system("color 6E"),Sleep(1000),system("color 0F"),Medal_();}
        if(sy>=1) Setpos(16,3),cout<<"                           ",sy=0;
        
		if(RushT1==0) Move(0);
        Go();
		if(RushT1==0&&T%speed==0) Print();
        
        if(clock()-Clocknum>=25) continue;
        if(T>=50&&T<=200&&T%15==5) CreatF();
		if(T>=300&&T<2000&&T%80==5) CreatF();
		else if(T>=2000&&T<3000&&T%70==5) CreatF();
		else if(T>=3000&&T<4000&&T%50==5) CreatF();
		else if(T>=4000&&T%30==5) CreatF();
		if(T>=1500&&T%80==5) CreatF();
		if(Combo>=10&&T%80==40) CreatF();
	if((Combo<10&&T%140==0)||(Combo>=10&&Combo<20&&T%100==0)||(Combo>=20&&T%70==0)) Combo--;Combo=max(0,Combo);
    if(Rush==1||AttTime>0||Attention==1) Color(5);else Color(1);Setpos(2,-2),printf("积分:%-4d ",Score);
	if(Combo>=15) Color((T%4<=1)?-4:-5); printf("  连击 %-3dCOMBO !!  ",Combo);
	if(Rush==1||AttTime>0||Attention==1) Color(5);else Color(1);printf(" 用时:%d ",T);Color(0);
    }
    return 0;
}

 <2024> 胎神之路 win11 适配版

 #include<bits/stdc++.h>
#include<windows.h>
#include<stdio.h>
#include<conio.h>
#include<time.h>
using namespace std;
float X,Y,X0,Y0,dx,dy;int Left=1,Right=20,Up=1,Down=28;
int Clocknum,T,gap,Life,Speed;float Score;
int up,dn,lf,rt,sy;float Vx,Vy;int Walk,Jump;
int Jumplock,Dnlock,Lflock,Rtlock;
const float G=0.038,t0=0.2,t00=0.8,t000=0.5;//时间参量 
int N[100][45],M[100][45];

float Sin(int a) {return sin(3.1416*a/180);}float Cos(int a) {return cos(3.1416*a/180);}
void Color(int a){if(a==0||a==8||a==-8) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(a==-10||a==1||a==-18) 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|FOREGROUND_BLUE);
if(a==-1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_RED|BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE);if(a==-2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_GREEN|FOREGROUND_GREEN);if(a==-3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_BLUE|FOREGROUND_RED|FOREGROUND_BLUE);if(a==-4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED|FOREGROUND_RED);if(a==-5) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN|FOREGROUND_RED|FOREGROUND_GREEN);if(a==-6) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_BLUE);if(a==-7) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE);
if(a==-11) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE|BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE);if(a==-12) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE|BACKGROUND_INTENSITY|BACKGROUND_GREEN);if(a==-13) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE|BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_BLUE);if(a==-14) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE|BACKGROUND_INTENSITY|BACKGROUND_RED);if(a==-15) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE|BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN);if(a==-16) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE|BACKGROUND_INTENSITY|BACKGROUND_BLUE);if(a==-17) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE|BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE);
}
int To_int(float a){return int(a+0.5);}float Abs(float a){return (a>=0)?a:-a;}float Min(float a,float b){return (a<=b)?a:b;}
void Setpos(float x,float y){COORD pos;pos.X=To_int(x)*2+1,pos.Y=To_int(y);SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}
void Put_Frame(int x,int y){for(int i=0;i<=x+1;i++)for(int j=0;j<=y+1;j++){if(i==0||j==0||i==x+1||j==y+1) Setpos(i,j),printf("[]");}}
void Clear(float x,float y){int i=To_int(x),j=To_int(y);
	if(i<Left||i>Right||j<Up||j>Down) return;
	if(N[i][j]==0) Color(0),Setpos(i,j),printf("  ");
	else if(N[i][j]==1) Color(-Abs(N[i][j])),Setpos(i,j),printf("<>");
	else if(N[i][j]==5) Color(-Abs(N[i][j])),Setpos(i,j),printf("<>");
	else if(N[i][j]==7) Color(-Abs(N[i][j])),Setpos(i,j),printf("__");
	else if(N[i][j]==2) Color(-Abs(N[i][j])),Setpos(i,j),printf("[]");
	else if(N[i][j]==3) Color(-Abs(N[i][j])),Setpos(i,j),printf("[]");
	else if(N[i][j]==4) Color(-Abs(N[i][j])),Setpos(i,j),printf("##");
	else Color(-Abs(N[i][j])),Setpos(i,j),printf("  ");
}
void Put_Man(float x1,float y1){
	int x=To_int(x1);int y=To_int(y1);
	if(y<Up||x<Left||x>Right||y>Down) return;
	Color(-10-N[x][y]);
	Setpos(x1,y1),printf("㊣");
}
void Cir(int s,int c)
{	int x=X,y=Y;
    for(int i=x-s;i<=x+s;i++)
    for(int j=y-s;j<=y+s;j++)
    {
        float k=(i-x)*(i-x)+(j-y)*(j-y)-s*s;
        if(i<Left||i>Right||j<Up||j>Down) continue;
        if(k<=s&&k>=-s) Setpos(i,j),Color(c),cout<<"  ";if(N[i][j]==8) N[i][j]=7;if(N[i][j]==4) N[i][j]=0;
    }
    if(c==-5) Cir(s-1,-1),Cir(s-2,0);
}
void Go(){
	int PrintFlag=0,NotMoveFlag=0;
	if(Y<=Up) Y=Up;if(X<=Left) X=Left;if(X>=Right) X=Right;
	if(Y>=Down){
		if(dx!=0||dy!=0) X=dx,Y=dy,Vy=-0.4,Vx=0;
		else Life--,Y=Up;
	}
	
	int Here=N[To_int(X)][To_int(Y)],Stand=N[To_int(X)][To_int(Y)+1],Head=N[To_int(X)][To_int(Y)-1],Lft=N[To_int(X)-1][To_int(Y)],Rit=N[To_int(X)+1][To_int(Y)];
	
	//以下为基础块的反应 
	if(Life<=0) return;  //复活 
	if(Here==3){Score+=5;N[To_int(X)][To_int(Y)]=2,dx=To_int(X),dy=To_int(Y);}//复活点 
	
	if((Here==1||Here==7)&&((Vy>0&&Walk==0)||(Walk==1))){Vy=0;Y=To_int(Y)-1;Jump=0;Walk=1;PrintFlag=1;}//触墙 
	else if((Stand==1||Stand==7)&&Vy>0&&Walk==0){Vy=0;Y=To_int(Y);Jump=0;Walk=1;PrintFlag=1;}//触墙 
	else if((Here==1||Here==7)&&Walk==0){Vx*=0.8;Vy*=0.8;Y=To_int(Y)-1;Jump=0;Walk=1;PrintFlag=1;}//触墙 
	else if((Stand==1||Stand==7)&&Walk==0){Vx*=0.8;Vy*=0.8;Y=To_int(Y);Jump=0;Walk=1;PrintFlag=1;}//触墙 
//	else if((((Lft==1||Lft==7)&&Vx<0)||((Rit==1||Rit==7)&&Vx<0))&&Walk==1) {Vx=0;X=To_int(X);PrintFlag=1;}//触墙 
	else if(Here==5&&((Vy>0&&Walk==0)||(Walk==1))){Vx*=0.8;Vy=-0.7;Y=To_int(Y)-1;Jump=0;Walk=0;NotMoveFlag=1;PrintFlag=1;}//触弹簧 
	else if(Stand==5&&((Vy>0&&Walk==0)||(Walk==1))){Vx*=0.8;Vy=-0.7;Y=To_int(Y);Jump=0;Walk=0;NotMoveFlag=1;PrintFlag=1;}//触弹簧 
	else if(Here==4){//触炸弹 
		Score-=5;Y=To_int(Y)-1;Walk=0;PrintFlag=1;Cir(1,-5),Sleep(90),Cir(2,-5),Sleep(100),Cir(3,-5),Sleep(110),Cir(4,-5),Sleep(150);Cir(2,0);Cir(3,0);Cir(4,0);
		if(dx!=0||dy!=0) X=dx,Y=dy,Vy=-0.4,Vx=0;
		else Life--,Vy=-0.6;
	}
	else if(Here==8&&Vy>0&&Walk==0){Score+=2;//从上触隐形 
		Vy=0;Y=To_int(Y)-1;Jump=0;Walk=1;PrintFlag=1;int xx=To_int(X);while(N[xx][To_int(Y)]==8) N[xx][To_int(Y)]=7,xx++; xx=To_int(X)-1;while(N[xx][To_int(Y)]==8) N[xx][To_int(Y)]=7,xx--; 
	}
	else if(Here==8&&Vy<=0&&Walk==0){Score+=2;//从下触隐形 
		Vy=0;Y=To_int(Y)+1;Walk=0;PrintFlag=1;int xx=To_int(X);while(N[xx][To_int(Y)]==8) N[xx][To_int(Y)]=7,xx++; xx=To_int(X)-1;while(N[xx][To_int(Y)]==8) N[xx][To_int(Y)]=7,xx--; 
	}
	else if(Stand==8&&Vy>0&&Walk==0){Score+=2;//从上触隐形 
		Vy=0;Y=To_int(Y);Jump=0;Walk=1;PrintFlag=1;int xx=To_int(X);while(N[xx][To_int(Y)+1]==8) N[xx][To_int(Y)+1]=7,xx++; xx=To_int(X)-1;while(N[xx][To_int(Y)+1]==8) N[xx][To_int(Y)+1]=7,xx--; 
	}
	else if(Head==8&&Vy<=0&&Walk==0){Score+=2;//从下触隐形 
		Vy=0;Y=To_int(Y);Walk=0;PrintFlag=1;int xx=To_int(X);while(N[xx][To_int(Y)-1]==8) N[xx][To_int(Y)-1]=7,xx++; xx=To_int(X)-1;while(N[xx][To_int(Y)-1]==8) N[xx][To_int(Y)-1]=7,xx--; 
	}
	else if(Stand==1&&Vy==0&&Walk==1) int nil=0;//普通站立 
	else if(Stand==7&&Vy==0&&Walk==1) int nil=0;//普通站立 
	else Walk=0;
	
	//以下为操作部分 
	int Num=up+dn+lf+rt;
	if(Walk==1&&Jump==0){
		if(Num==0) Vx*=0.6;//摩擦 
		if(up==1&&Jumplock==0){
			Vy=-0.6;Walk=0;Jump=1;Jumplock=1;
		}
		if(dn==1&&Dnlock==0){
			Y+=2;Walk=0;Dnlock=1;
		}
	}
	if(Num==1||(Num==2&&up==1)){
		if(lf==1){
			if(Jump==0){
				if(Vx<=1.5*t0&&Vx>-0.5*t0) Vx-=0.5*t0;
				if(Vx<=-0.5*t0&&Vx>-1.5*t0) Vx-=0.3*t0;
				else if(Vx<=-1.5*t0) Vx=-1.5*t0;
			}
			else{
				if(Vx<=1.5*t0&&Vx>-1.5*t0) Vx-=0.3*t0;
				else if(Vx<=-1.5*t0) Vx=-1.5*t0;
			}
		}
		if(rt==1){
			if(Jump==0){
				if(Vx>=-1.5*t0&&Vx<0.5*t0) Vx+=0.5*t0;
				if(Vx>=0.5*t0&&Vx<1.5*t0) Vx+=0.3*t0;
				else if(Vx>=1.5*t0) Vx=1.5*t0;
			}
			else{
				if(Vx<=1.5*t0&&Vx>-1.5*t0) Vx+=0.2*t0;
				else if(Vx>=1.5*t0) Vx=1.5*t0;
			}
		}	
	}
	if(Walk==0){//普通滞空 
		int num=up+dn;
		if(Num==0) Vx*=0.9;//摩擦 
		if(num==1&&up==1&&Jump==0&&Jumplock==0){
			Vy=-0.6;Walk=0;Jump=1;Jumplock=1;
		}
		if(num==1&&up==1&&Jump==1&&Jumplock==0){
			if(Vy>-0.2) Vy=-0.35;
			if(Vy<=-0.2) Vy-=0.2;
			Jump=2;Jumplock=1;//二段跳 
		}
		if(num==1&&dn==1){
			Vy+=0.1; 
		}
		Vy+=G;
	}
	Vy=Min(0.5,Vy);
	if(NotMoveFlag==0) X+=Vx,Y+=Vy;
	if(Y<=Up) Y=Up;if(X<=Left) X=Left;if(X>=Right) X=Right;if(Y>=Down) Y=Down;
	if(PrintFlag==1) Clear(X0,Y0),Put_Man(X,Y),X0=X,Y0=Y;
	else if((To_int(X0)==To_int(X)&&To_int(Y0)==To_int(Y))&&Walk==0) Put_Man(X,Y),X0=X,Y0=Y;
	else if((To_int(X0)!=To_int(X)||To_int(Y0!=To_int(Y)))&&T%gap==0) Clear(X0,Y0),Put_Man(X,Y),X0=X,Y0=Y;
}
void Move(){//移动的状态调整,准备移步至Go函数 
}
int RR;
void Creat(){
	if(dx!=0||dy!=0) dy++;if(dy>Down) dx=dy=0;
	for(int i=Left;i<=Right;i++){
	for(int j=Up;j<=Down;j++) N[i][j]=M[i][j-1];
	N[i][Up-1]=0;
	}
	RR++;
    if(RR==4) {int r=rand()%2;if(r==0) RR=0;}
    if(RR==5) {int r=rand()%4;if(r<=2) RR=0;}
    if(RR==6) RR=0;
	if(RR==0) {
		int j=Up;
		Ax: int Bx=0; for(int i=Left;i<=Right;i++) N[i][j]=N[i][j-1]=0;
		for(int i=Left;i<=Right;i+=3){
			int R1=rand()%3+2,R2=rand()%4+3,R3=3;
			int R=rand()%70+1;
			if(R<=10||R==25) {Bx++;int k=1,kk=R2;while(R2>0&&i<=Right) {N[i][j]=1;int R4=rand()%25;if(R4==0&&k!=1&&k!=kk) N[i][j+1]=N[i][j+2]=1;else if(R4<=3&&k!=1&&k!=kk) N[i][j+1]=1; i++,k++,R2--;}}
			if(R>21&&R<=24) {Bx++;int k=1,kk=R2;while(R2>0&&i<=Right) {N[i][j-1]=1;if(k==1||k==kk) N[i][j]=1;i++,k++,R2--;}}
			if(R>10&&R<=13) {Bx++;while(R2>0&&i<=Right) N[i][j]=5,i++,R2--;}
			if(R>13&&R<=16) {while(R1>0&&i<=Right) N[i][j]=4,i++,R1--;}
			if(R>16&&R<=19) {Bx++;while(R1>0&&i<=Right) N[i][j]=8,i++,R1--;}
			if(R>19&&R<=21) {Bx++;while(R3>0&&i<=Right) {N[i][j]=N[i][j+1]=1;if(R3==2) N[i][j-1]=3,N[i][j+1]=0;i++,R3--;}}
		}
		if(Bx==0) goto Ax;
	}
	else if(RR==2){
		int j=Up;
		for(int i=Left+1;i<=Right-1;i++){
			int R=rand()%300+1;
			if(R==1) N[i-1][j]=N[i+1][j]=N[i][j-1]=N[i][j+1]=N[i][j]=4,i+=3;
			if(R==2) N[i-1][j]=N[i][j]=N[i][j+1]=N[i][j+2]=1,i+=3;
			if(R==3) N[i+1][j]=N[i][j]=N[i][j+1]=N[i][j+2]=1,i+=3;
		}
	}
}
void Print(){
	Color(1);Setpos(23,1),cout<<"分数:"<<max(0,(int)Score)<<"   ",Setpos(23,3),cout<<"速度:"<<Speed<<"   ",Setpos(23,5),cout<<"生命:"<<Life<<"   ",Color(0);
    
	for(int i=Left;i<=Right;i++)
	for(int j=Up-1;j<=Down;j++){
		if(j>=Up&&N[i][j]!=M[i][j]){
			if(N[i][j]==0) Color(0),Setpos(i,j),printf("  ");
			else if(N[i][j]==1) Color(-Abs(N[i][j])),Setpos(i,j),printf("<>");
			else if(N[i][j]==5) Color(-Abs(N[i][j])),Setpos(i,j),printf("<>");
			else if(N[i][j]==7) Color(-Abs(N[i][j])),Setpos(i,j),printf("__");
			else if(N[i][j]==2) Color(-Abs(N[i][j])),Setpos(i,j),printf("[]");
			else if(N[i][j]==3) Color(-Abs(N[i][j])),Setpos(i,j),printf("[]");
			else if(N[i][j]==4) Color(-Abs(N[i][j])),Setpos(i,j),printf("##");
			else Color(-Abs(N[i][j])),Setpos(i,j),printf("  ");
		}
		M[i][j]=N[i][j];
	}Color(0);
}
void Start(){
	for(int j=1;j<=12;j++) Creat(),Print();
	for(int i=Left;i<=Right;i++) N[i][14]=N[i][15]=1;Color(0);
	Setpos(23,7),cout<<"规则:"; 
	Setpos(23,8),cout<<"←→左右移动";
	Setpos(23,9),cout<<"按↑跳跃,可二段跳";
	Setpos(23,10),cout<<"空中可用←→控制方向";
	Setpos(23,11),cout<<"空气阻力大,远距离大跳需要空中长按←→"; 
	Setpos(23,12),cout<<"白的是正常块。黄的是弹跳块,可借助其三段跳" ;
	Setpos(23,13),cout<<"看不见的是隐形块,撞到了可以加分,但要小心!" ;
	Setpos(23,14),cout<<"紫色的是复活点,走到那里才能激活它" ;
	Setpos(23,15),cout<<"激活复活点有5分加分,这很多" ;
	Setpos(23,16),cout<<"红色的是炸弹,碰到会扣分,没复活点时会扣命" ;
	Setpos(23,17),cout<<"掉出视线也会没命,一定要飞速向上跳!" ;
	Setpos(23,18),cout<<"地图下移速度随时间增加" ;
	Setpos(23,19),cout<<"1000分通关!!!" ;
	Setpos(23,20),cout<<"程序保证每一行都有块生成" ;
	Setpos(23,21),cout<<"如果你看不到哪有,就说明那一行有隐形块" ;
	Setpos(23,22),cout<<"空格键可以暂停" ;
	Setpos(23,23),cout<<"还有这是随机出的图哦~有时候要看运气" ;
	Setpos(23,24),cout<<"死亡后分数并不会全部消失,可以放心玩耍,总会通关的!" ;
	Setpos(23,26),cout<<"这是《胎神之路》的 win11 适配流畅版" ;
	Setpos(23,27),cout<<"胎神大大还有很多创意准备升级这款游戏哦!敬请期待!" ;
}
void Return(){
        system("color 1A");Sleep(10);
        system("color 2B");Sleep(10);
        system("color 3C");Sleep(10);
    system("color 0F");system("cls");
}
int main()
{
	
	Put_Frame(Right,Down);
    CONSOLE_CURSOR_INFO cursor_info={1,0};
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
    srand((unsigned)time(NULL));
    ST:
    memset(N,0,sizeof(N));memset(M,0,sizeof(M));
	T=0;Clocknum=0;gap=3;Life=5;
	X=10;Y=12;X0=X,Y0=Y;Vx=Vy=0;Jump=1;//初始状态掉落 
    Start();
	Put_Man(X,Y);
    while((int)Score<=1000&&Life>0) if(clock()-Clocknum>=25)//每帧0.025s 
    {T++;
    	Clocknum=clock();
    	up=dn=lf=rt=0;
        if(GetAsyncKeyState(VK_UP)&0x8000) up=1;else Jumplock=0; 
        if(GetAsyncKeyState(VK_DOWN)&0x8000) dn=1;else Dnlock=0; 
        if(GetAsyncKeyState(VK_LEFT)&0x8000) lf=1;else Lflock=0; 
        if(GetAsyncKeyState(VK_RIGHT)&0x8000) rt=1;else Rtlock=0; 
        if(kbhit()) {char g=_getch();if(g==' ') Sleep(100),Setpos(2,3),sy++,Color(0),system("pause");}
        if(sy>=1) Setpos(2,3),cout<<"                           ",sy=0;
        
		Move();
        Go();
		if(Score<=10) Speed=40;
		else if(Score<=30) Speed=30;
		else if(Score<=100) Speed=20;
		else if(Score<=250) Speed=15;
		else if(Score<=400) Speed=10;
		else if(Score<=700) Speed=8;
		else if(Score<=800) Speed=6;
		else if(Score<=900) Speed=5;
		else if(Score<=1000) Speed=4;
        if(T%gap==0) Print();
        if(T%Speed==0){Creat(),Clear(X0,Y0),Y++,X0=X,Y0=Y,Print(),Put_Man(X,Y);
		if(Score<=100) Score+=1;
		else if(Score<=250) Score+=0.8;
		else if(Score<=800) Score+=0.5;
		else if(Score<=900) Score+=0.4;
		else if(Score<=1000) Score+=0.3;
        	
		}
    }
    if(Life<=0) {Print();Setpos(4,10),system("color 7F"),Color(4),cout<<"You! Die!!!",Sleep(1000);Score=((int)Score/100)*100;if(Score>500&&Score<=700) Score=500;if(Score>700&&Score<=800) Score=600;if(Score>800&&Score<=900) Score=700;if(Score>900) Score=800;}
    else {Setpos(4,10),system("color 6E"),Color(3),cout<<"You! Win!!!",Sleep(1000);}
    Setpos(1,12),cout<<"Please point 'y' to Play AGain.";Color(0);
    A:char e=_getch();if(e=='y') Return();else goto A;goto ST;
    return 0;
}

<2024> 海岛奇胎 win11 适配版

#include<bits/stdc++.h>
#include<windows.h>
#include<stdio.h>
#include<conio.h>
#include<time.h>
using namespace std;
typedef BOOL (WINAPI *PROCSETCONSOLEFONT)(HANDLE, DWORD);
PROCSETCONSOLEFONT SetConsoleFont;
POINT Windowpos(){POINT pt;GetCursorPos(&pt);HWND h=GetForegroundWindow();ScreenToClient(h,&pt);pt.x=(pt.x+4)/10+0.5;pt.y=pt.y/8+0.5;swap(pt.x,pt.y);return pt;}
int mouse;POINT pt;float kx,ky;int ti(float a) {return ((int)(a*10+5))/10;}
void Setpos(float x,float y){COORD pos;pos.X=ti(y*4)/2;pos.Y=ti(x);SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}
//Setpos中,横5和竖5是一样的长度,在C,N中我们把y*2存入,/2输出 ,所以 支持4.5 
struct node {float x,y,fx,fy;int kind,staytime,blood,CD,enemy,turn;bool life;} M[100001],E[100001];//Mytower Enemy Bullet
struct bullet {float x,y,vx,vy,h;int kind,staytime,enemy,endx,endy,up;bool life;} B[100001];
float Espeed[7]=    {-1,    0.14*0.9,   0.2*0.9,    0.08*0.9,   0.3*0.9,    0.3*0.9,    0.1*0.9,};//敌人速度 
float Bspeed[7]=    {-1,    0.6,    0.6,    0.6,    1,      0.1,    0.6,};//打塔的子弹速度 
float Bfspeed[7]=   {-1,    0.45,    0.6,    -1,     0.55,    1,		0.35,};//打敌的子弹速度 
float MR[7]=        {-1,    12*0.9,     10*0.9,     25*0.9,     10*0.9,      15*0.9,     20*0.9,};
float ER[7]=        {-1,    6*0.9,      1.8*0.9,    8*0.9,      7*0.9,      1*0.9,      10*0.9,};
int MCDmax[7]=      {10000, 10,     7,      60,     2,      90,     50};
int ECDmax[7]=      {-1,    30,     10,     40,     25,     1,      40};
int Mblood[7]=      {-1,200,150,300,250,400,300};
int Eblood[7]=      {-1,50,100,30,100,10,200};
bool Zhan[50][50];
//Pk_Pb : personkill_or_placeboom
int m[51][101],n[51][101],o[51][101],T,CD,CDmax,Day,ml,mr,el,er,bl,br,money,Level=1,endless;
void Color(int a){
    if(a==-2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN);
    if(a==-1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
    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);
}
void C(int i,int j){Color(0);
    Setpos(i,j/2.0);int N=n[i][j];if(N==-1) printf(" ");if(N>=0&&N<=9) printf("%d",N);
    if(N==-2) printf("+");if(N==-3) Color(5),printf("+"),n[i][j]=-1,o[i][j]=4;if(N==-4) Color(3),printf("+"),n[i][j]=-1,o[i][j]=4;
    //以下字符占2格 
    if(N==11) Color(1),printf("О ");if(N==13) Color(3),printf("◎ ");if(N==14) Color(4),printf("+ ");if(N==16) Color(5),printf("◎ ");
    if(N==-11) Color(1),printf("⊙ ");if(N==-12) Color(2),printf("⊙ ");if(N==-13) Color(3),printf("⊙ ");if(N==-14) Color(4+rand()%2),printf("█ ");if(N==-15) Color(1),printf("● ");if(N==-16) Color(5),printf("¤ ");
    if(N==49) Color(0),printf("营 ");if(N==50) Color(0),printf("墙 ");if(N==51) Color(1),printf("● ");if(N==52) Color(2),printf("■ ");if(N==53) Color(3),printf("▲ ");if(N==54) Color(4),printf("▼ ");if(N==55) Color(6),printf("◆ ");if(N==56) Color(5),printf("★ ");
    if(N==81) Color(1),printf("○ ");if(N==82) Color(2),printf("□ ");if(N==83) Color(3),printf("△ ");if(N==84) Color(4),printf("▽ ");if(N==85) Color(6),printf("◇ ");if(N==86) Color(5),printf("☆ ");
    if(N==1001)  printf("╔");if(N==1003)  printf("╗");if(N==1004)  printf("╠");if(N==1005)  printf("╣");if(N==1006)  printf("╚");if(N==1007)  printf("╩");if(N==1008)  printf("╝");
    if(N==1012)  printf("↑ ");
}
void Map(int a){if(a==1){for(int i=1;i<=39;i++)for(int j=2;j<=99;j++){
	if(n[i][j]!=m[i][j]||T%800==0){C(i,j);if(n[i][j]>=50||n[i][j]<=-10) n[i][j+1]=-1,j++;}
	if(o[i][j]==1) C(i,j);if(o[i][j]>0) o[i][j]--;}
	for(int i=1;i<=50;i++)for(int j=1;j<=100;j++){m[i][j]=n[i][j];}}
}
void N(float x,float y,int w){int xx=(int)(x+0.5),yy=(int)(y*2.0+0.5);if(xx>49||yy>98||xx<1||yy<1) return;else n[xx][yy]=w;}
int Turn[9][2]={{0,0},{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};
void Circle(int x,int y,int kind,int ex)
{int R;
    if(kind==1){int k=M[ex].kind;R=MR[k];int next=20-0.5*R;
    for(int i=0;i<=360;i+=next) N(x+R*sin(3.1416*i/180),y+R*cos(3.1416*i/180),-2);
    if(k==3) for(int i=0;i<=360;i+=15) R=10,N(x+R*sin(3.1416*i/180),y+R*cos(3.1416*i/180),-2);
    }
    if(kind==-1){int k=M[ex].kind;R=MR[k];int next=20-0.5*R;
    for(int i=0;i<=360;i+=next) N(x+R*sin(3.1416*i/180),y+R*cos(3.1416*i/180),-1);
    if(k==3) for(int i=0;i<=360;i+=15) R=10,N(x+R*sin(3.1416*i/180),y+R*cos(3.1416*i/180),-1);
    }
    if(kind==2){R=ex;int next=20-0.5*R;
    for(int i=0;i<=360;i+=next) N(x+R*sin(3.1416*i/180),y+R*cos(3.1416*i/180),-3);
    }
    if(kind==-2){R=ex;int next=20-0.5*R;
    for(int i=0;i<=360;i+=next) N(x+R*sin(3.1416*i/180),y+R*cos(3.1416*i/180),-4);
    }
}
void Cout(int a,int kind){
    if(kind==1)//炮台
    {
        float x=M[a].x,y=M[a].y;
        N(x,y,M[a].kind+50);
        if(a==1) N(x,y,49);
        int i=1;if(M[a].blood>=100) i=2;
        for(i;i<=8;i++) N(x+Turn[i][0],y+Turn[i][1],1000+i),Zhan[(int)x+Turn[i][0]][(int)y+Turn[i][1]]=1;
        int t=M[a].turn;
        int b=max(0,M[a].blood),bb=0;while(b>0){bb++;N(x-1,y+1-0.5*bb,b%10);b/=10;}
    }
    if(kind==2)//人 
    {
        float x=E[a].x,y=E[a].y;
        N(x,y,E[a].kind+80);
        N(x+1,y,1012);
        Zhan[(int)x][(int)y]=Zhan[(int)x+1][(int)y]=1;
        int b=max(0,E[a].blood),bb=0;while(b>0){bb++;N(x-1,y+1-0.5*bb,b%10);b/=10;}
    }
    if(kind==3)//对塔子弹 
    {
        float x=B[a].x,y=B[a].y;
        N(x,y,10+B[a].kind);
    }
    if(kind==4)//对人子弹 
    {
        float x=B[a].x,y=B[a].y;
        N(x-B[a].h,y,-10+B[a].kind);
    }
}
int Find_enemy(int Who,int good_or_bad){
    int ans=-1,r=rand()%2;float ansx=1e9,x;//搜敌人 
if(good_or_bad>=1){float X=M[Who].x,Y=M[Who].y;
    if(good_or_bad==2) X=E[Who].x,Y=E[Who].y;
    for(int i=el;i<=er;i++){if(E[i].life==0) continue;x=sqrt((E[i].x-X)*(E[i].x-X)+(E[i].y-Y)*(E[i].y-Y));
    if(good_or_bad==2&&E[i].kind==4) continue;
    if(M[Who].kind==3&&x<10) continue;//迫击炮 
    if(M[Who].kind==6&&ans!=-1&&ansx>x) ansx=x;//火箭炮
    if(ansx>x) ansx=x,ans=i;
    if(ansx==x) {int r=rand()%2;if(r==1) ansx=x,ans=i;}}}
    if(good_or_bad==0){float X=E[Who].x,Y=E[Who].y;for(int i=ml;i<=mr;i++) {if(M[i].life==0) continue;x=sqrt((M[i].x-X)*(M[i].x-X)+(M[i].y-Y)*(M[i].y-Y));if(ansx>x) ansx=x,ans=i;if(ansx==x) {int r=rand()%2;if(r==1) ansx=x,ans=i;}}}
    return ans;
}
void Find_boomkill(int Who,float r,bool good_or_bad,int kill){
    float x,X=B[Who].x,Y=B[Who].y;int kk=(float)kill/2.5;kill+=rand()%kk-kk/5;
    if(good_or_bad==1){for(int i=el;i<=er;i++){if(E[i].life==0) continue;x=sqrt((E[i].x-X)*(E[i].x-X)+(E[i].y-Y)*(E[i].y-Y));if(r>=x) E[i].blood=min(E[i].blood-kill,Eblood[E[i].kind]+Day+50);}
}//搜敌人
    else{for(int i=ml;i<=mr;i++){if(M[i].life==0) continue;x=sqrt((M[i].x-X)*(M[i].x-X)+(M[i].y-Y)*(M[i].y-Y));if(r>=x) M[i].blood-=kill;}
}//搜炮台
}
void Die(){
    for(int i=ml;i<=mr;i++)if(M[i].blood<=0) {
        M[i].life=0;if(i==ml) ml++;
    }
    for(int i=el;i<=er;i++)if(E[i].blood<=0) {
        E[i].life=0;if(i==el) el++;
    }
    for(int i=bl;i<=br;i++){
        if(B[i].x+B[i].vx<1||B[i].x+B[i].vx>49||B[i].y+B[i].vy<1||B[i].y+B[i].vy>98) {B[i].life=0;}
        if(B[i].staytime>=100) B[i].life=0;
    }
}
void Move(int a){
    if(a==2)
    {
    for(int i=ml;i<=mr;i++){if(M[i].life==0) continue;Cout(i,1);}
    for(int i=el;i<=er;i++){if(E[i].life==0) continue;Cout(i,2);}
    return;
    }
    for(int i=ml;i<=mr;i++){
        if(M[i].life==0) continue;
        else{M[i].staytime++;int e=M[i].enemy;if(E[e].life==0) M[i].enemy=-1;

            if(M[i].kind==5&&M[i].enemy==-1&&M[i].CD<=70&&T%2==0) M[i].CD++;
            if(M[i].kind==0&&M[i].blood<500&&T%20==0) M[i].blood++;
        if(M[i].enemy==-1||M[i].kind==4) M[i].enemy=Find_enemy(i,1);//喷火器 
        if(M[i].enemy!=-1)
    {int k=M[i].enemy;
        float X=M[i].x,Y=M[i].y,Ax=E[k].x-X,Ay=E[k].y-Y;if(Ay==0) Ay=1e-6;float Turnn=abs(Ax/Ay*1.0),Dis=sqrt((E[k].x-X)*(E[k].x-X)+(E[k].y-Y)*(E[k].y-Y));

        if(Dis>MR[M[i].kind]){M[i].enemy=-1;}
        else
        {M[i].CD++;
            if((M[i].kind!=6&&M[i].CD>=MCDmax[M[i].kind])||(M[i].kind==6&&M[i].CD<=21&&M[i].CD%4==0))//火箭炮 
            {
            if(M[i].kind==6) M[i].enemy=Find_enemy(i,1);
            if(Turnn>=sqrt(2)+1){if(Ay>0) M[i].turn=2;else M[i].turn=7;}
            else if(Turnn>=1.0/(sqrt(2)+1)*1.0){if(Ax>0&&Ay>0) M[i].turn=1;else if(Ax<0&&Ay>0) M[i].turn=3;else if(Ax<0&&Ay<0) M[i].turn=8;else M[i].turn=6;}
            else {if(Ax>0) M[i].turn=5;else M[i].turn=4;}
            br++,B[br].x=X,B[br].y=Y;
            B[br].kind=-M[i].kind;
            B[br].life=1,B[br].enemy=M[i].enemy,B[br].endx=E[M[i].enemy].x,B[br].endy=E[M[i].enemy].y,B[br].staytime=0;
            }
            if(M[i].CD>=MCDmax[M[i].kind]) M[i].CD=0;
        }
    }Cout(i,1);}}
    for(int i=el;i<=er;i++){
        if(E[i].life==0) continue;
        else{E[i].staytime++;E[i].CD++;
        int e=E[i].enemy;if(M[e].life==0||(E[i].kind==4&&E[e].life==0)) E[i].enemy=-1;
        if(E[i].enemy==-1) {E[i].enemy=Find_enemy(i,0);if(E[i].kind==4) E[i].enemy=Find_enemy(i,2);}
        if(E[i].enemy!=-1){int k=E[i].enemy;int Mkx=M[k].x;int Mky=M[k].y;if(E[i].kind==4) Mkx=E[k].x,Mky=E[k].y;
        float X=E[i].x,Y=E[i].y;float Dis=sqrt((Mkx-X)*(Mkx-X)+(Mky-Y)*(Mky-Y));
        float Ax=Mkx-X,Ay=Mky-Y,S=Espeed[E[i].kind];if(Ay==0) Ay=1e-6;float Turnn=abs(Ax/Ay*1.0);
        if(Dis>ER[E[i].kind]){float vx=Ax*S/Dis*1.0,vy=Ay*S/Dis*1.0;E[i].x+=vx,E[i].y+=vy;}
        else{
        if(E[i].CD>=ECDmax[E[i].kind]){
        if(E[i].kind==5) E[i].blood=-1;//炮灰 
        if(E[i].kind==4){
            br++,B[br].x=X,B[br].y=Y;
            B[br].kind=4;
            B[br].life=1,B[br].enemy=E[i].enemy,B[br].endx=E[E[i].enemy].x,B[br].endy=E[E[i].enemy].y,B[br].staytime=0;
        }
        else{
        br++,B[br].x=X,B[br].y=Y;
        B[br].kind=E[i].kind;
        B[br].life=1,B[br].enemy=E[i].enemy,B[br].endx=M[E[i].enemy].x,B[br].endy=M[E[i].enemy].y,B[br].staytime=0;
        }
        E[i].CD=0;}}}Cout(i,2);
    }}
    for(int i=bl;i<=br;i++){
        if(B[i].life==0) continue;
        else if(B[i].kind>0)//对塔子弹 >0
        {
            B[i].staytime++;
            int k=B[i].enemy;
            int Mkl=M[k].life,Mkx=M[k].x,Mky=M[k].y;
            if(B[i].kind==4) Mkl=B[k].life,Mkx=B[k].x,Mky=B[k].y;
            if(k!=-1&&Mkl==1) B[i].endx=Mkx,B[i].endy=Mky;
            float kx=B[i].endx,ky=B[i].endy,X=B[i].x,Y=B[i].y;float Ax=kx-X,Ay=ky-Y,S=Bspeed[B[i].kind];float Dis=sqrt(Ax*Ax+Ay*Ay);float vx=Ax*S/Dis*1.0,vy=Ay*S/Dis*1.0;
            B[i].x+=vx,B[i].y+=vy;//别改,对的! 
            if(Dis<=S){//打中了,减血 
                B[i].x=B[i].endx,B[i].y=B[i].endy;
                if(B[i].kind==1) Find_boomkill(i,1.5,0,20),Circle(B[i].endx,B[i].endy,-2,1);
                if(B[i].kind==2) Find_boomkill(i,1.5,0,10),Circle(B[i].endx,B[i].endy,-2,1);
                if(B[i].kind==3) Find_boomkill(i,3,0,20),Circle(B[i].endx,B[i].endy,-2,3);
                if(B[i].kind==4) Find_boomkill(i,2,1,-5),Circle(B[i].endx,B[i].endy,-2,2);
                if(B[i].kind==5) Find_boomkill(i,3,0,50),Circle(B[i].endx,B[i].endy,-2,3);//炮灰 
                if(B[i].kind==6) Find_boomkill(i,2,0,20),Circle(B[i].endx,B[i].endy,-2,2);
                B[i].life=0;continue;
            }
            Cout(i,3);
        }
        else//对人子弹 <0
        {
            B[i].staytime++;
            int k=B[i].enemy;if(k!=-1&&E[k].life==1) B[i].endx=E[k].x,B[i].endy=E[k].y;
            float kx=B[i].endx,ky=B[i].endy,X=B[i].x,Y=B[i].y;float Ax=kx-X,Ay=ky-Y,S=Bfspeed[-B[i].kind];float Dis=sqrt(Ax*Ax+Ay*Ay);float vx=Ax*S/Dis*1.0,vy=Ay*S/Dis*1.0;

            if(B[i].kind==-3){B[i].x+=1.0/(49.0-B[i].staytime)*Ax;B[i].y+=1.0/(49.0-B[i].staytime)*Ay;

            if(T%2==0){
            if(B[i].up==1){if(B[i].h<3) B[i].h++;else if(B[i].h<6) B[i].h+=0.5;else B[i].up++;}else if(B[i].up<=6) B[i].up++;else{if(B[i].h>3) B[i].h-=0.5;else B[i].h--;}}
            }
            else B[i].x+=vx,B[i].y+=vy;//抛物线
            if(B[i].kind==-3&&B[i].staytime>=48) {B[i].x=B[i].endx,B[i].y=B[i].endy,Find_boomkill(i,5,1,30),Circle(B[i].endx,B[i].endy,2,4);B[i].life=0;continue;}
            else if(B[i].kind!=-3&&Dis<=S)//打中了,减血 
            {
                if(B[br].kind==-2) B[i].endx+=rand()%7-2,B[i].endy+=rand()%7-2,Find_boomkill(i,2,1,20);//重机枪 
                B[i].x=B[i].endx,B[i].y=B[i].endy;
                if(B[i].kind==-1) Find_boomkill(i,2,1,20),Circle(B[i].endx,B[i].endy,2,2);
                if(B[i].kind==-2) Find_boomkill(i,2,1,10),Circle(B[i].endx,B[i].endy,2,2);
                if(B[i].kind==-4) Find_boomkill(i,2,1,5),Circle(B[i].endx,B[i].endy,2,2);
                if(B[i].kind==-5) Find_boomkill(i,3,1,120),Circle(B[i].endx,B[i].endy,2,3);
                if(B[i].kind==-6) Find_boomkill(i,3,1,35),Circle(B[i].endx,B[i].endy,2,3);
                B[i].life=0;continue;
            }
            Cout(i,4);
        }
    }
    Die();//开始处理 life=0,前面不要有 life=0 
}
void StartWar(int D)
{
  for(int i=-1;i<=(int)T/1000;i++){
    int XY=rand()%4,Wx=rand()%38+1,Wy=rand()%48+2,x,y,k,R=rand()%100;
    if(Level==2) XY=3;if(Level==3) XY=3*(rand()%2);
    if(XY==0) x=2,y=Wy;if(XY==1) x=38,y=Wy;if(XY==2) x=Wx,y=1;if(XY==3) x=Wx,y=49;
    k=rand()%6+1;
    er++,E[er].x=x,E[er].y=y,E[er].kind=k,E[er].life=1,E[er].blood=Eblood[k]+Day;
  }
}
void Start()
{Color(0);
    Setpos(41,0),printf("    ┏━━━━━┓  ┏━━━━━┓  ┏━━━━━┓  ┏━━━━━┓  ┏━━━━━┓  ┏━━━━━┓");
    Setpos(42,0),printf("    ┃$100 ┃  ┃$120 ┃  ┃$150 ┃  ┃$150 ┃  ┃$200 ┃  ┃$250 ┃");
    Setpos(43,0),printf("    ┃  ●  ┃  ┃  ■  ┃  ┃  ▲  ┃  ┃  ▼  ┃  ┃  ◆  ┃  ┃  ★  ┃");Setpos(43,30),printf("Money: %d     ",money);
    Setpos(44,0),printf("    ┗━━━━━┛  ┗━━━━━┛  ┗━━━━━┛  ┗━━━━━┛  ┗━━━━━┛  ┗━━━━━┛");Setpos(43,40),printf("Day: %d     ",Day);
}
void Put_Frame(){int x=39,y=49;Color(-1);for(int i=0;i<=x+1;i++)for(int j=0;j<=y+1;j++){if(i==0||j==0||i==x+1||j==y+1) Setpos(i,j),printf("[]");}}
void Click()
{
    int What;
    pt=Windowpos();int Ww=(int)((pt.y)/2+1);
    if((int)((pt.x-2)/2.2-3)<40||Ww>28) return;
    else if(Ww<=6) What=1;else if(Ww<=10) What=2;else if(Ww<=15) What=3;else if(Ww<=19) What=4;else if(Ww<=23) What=5;else if(Ww<=28) What=6;
    if(What==1) if(money>=100) money-=100;else return;
    if(What==2) if(money>=120) money-=120;else return;
    if(What==3) if(money>=150) money-=150;else return;
    if(What==4) if(money>=150) money-=150;else return;
    if(What==5) if(money>=200) money-=200;else return;
    if(What==6) if(money>=250) money-=250;else return;
    Color(0),Setpos(43,30);printf("Money: %d     ",money);
    mr++;M[mr].x=25;M[mr].kind=What;M[mr].blood=Mblood[What];M[mr].life=1;M[mr].CD=MCDmax[What]-1;
    while(mouse)
    { 
        mouse=GetAsyncKeyState(VK_LBUTTON)&0x8000;
        pt=Windowpos();
        M[mr].x=min(38,max(2,(int)((pt.x-2)/2.2-3))),M[mr].y=min(48,max(2,(int)((pt.y-1)/2-1)));
        Circle(M[mr].x,M[mr].y,1,mr);
        Move(2);Map(1);Sleep(30);
        for(int i=0;i<=8;i++) N(M[mr].x+Turn[i][0],M[mr].y+Turn[i][1],-1),N(M[mr].x+Turn[i][0],M[mr].y+Turn[i][1]+0.5,-1); 
        Circle(M[mr].x,M[mr].y,-1,mr);
    }
    system("cls");memset(n,-1,sizeof(n));memset(m,-1,sizeof(m));Start();Put_Frame();
}
void Menu()
{Color(0);
    Setpos(5,7);cout<<"欢迎来到  海岛奇胎  !";Setpos(5,20);Color(-2);cout<<"【win11升级适配版】";Color(0); 
    Setpos(7,12);cout<<"作者:胎神大大";Setpos(7,24);Color(-2);cout<<"【    记住开全屏!     】";Color(0); 
    Setpos(8,12);cout<<"别名:城市守卫战 3.0";Setpos(8,24);Color(-2);cout<<"【  全屏!全屏!全屏! 】";Color(0); 
    Setpos(10,2);cout<<"规则:通过 鼠标 拖拽 下方的图标来安放炮塔,坚持100天通关!";
	Setpos(12,2);cout<<"炮塔的设定: 加农炮物美价廉,重机枪可打溅射,迫击炮范围巨大,喷火器离近必死,电磁炮一发入魂,火箭炮因为大家太喜欢所以说削了(bushi)"; Setpos(9,24);Color(-2);cout<<"【   现在就开!NOW!! 】";Color(0);  Setpos(16,26);Color(-2);cout<<"【全屏游戏】";Color(0); 
    Setpos(14,2);cout<<"敌人的设定: 步兵小菜一碟,骑兵骑脸输出,炮兵速慢手长,药兵无限加血,炮灰贴脸自爆,坦克(这个逼)难以评价"; Setpos(9,24);Color(-2);cout<<"【   现在就开!NOW!! 】";Color(0);
    Setpos(16,5);cout<<"请选择地图:";Setpos(17,7);cout<<"1.围城   (孤城争雄!!)";Setpos(18,7);cout<<"2.长城   (南蛮入侵!!)";Setpos(19,7);cout<<"3.王者   (你猜猜为什么叫这个名字)";Setpos(20,7);cout<<"4.放射   (不知道为什么特别难?)";Setpos(21,7);cout<<"5.真空   (你打不过的,相信我)";Setpos(23,7);cout<<"输入负数则开启无尽模式";Setpos(24,9);cout<<"例:-1:无尽围城";
    endless=0;A:char a=_getch();if(a=='-') {endless=1;goto A;}else if(a<'1'||a>'5') goto A;else Level=a-'0';system("cls"); 
}int Clocknum;
int main(){
    CONSOLE_CURSOR_INFO cursor_info={1,0};SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);srand((unsigned)time(NULL));
    St:Menu();Start();Put_Frame(); 
    memset(n,-1,sizeof(n));memset(m,-1,sizeof(m));memset(M,0,sizeof(M));memset(E,0,sizeof(E));memset(B,0,sizeof(B));
    T=ml=mr=el=er=bl=br=0;CDmax=160;Day=1;
    money=1000;if(Level==5) money=1500;
    mr++,M[mr].x=20,M[mr].y=25,M[mr].kind=0,M[mr].life=1,M[mr].blood=2000;
    if(Level==2) M[mr].y=5;
    if(Level==3) M[mr].x=38,M[mr].y=2;
if(Level==1) for(int i=0;i<=360;i+=30) mr++,M[mr].x=20+9*sin(3.1416*i/180),M[mr].y=25+9*cos(3.1416*i/180),M[mr].kind=0,M[mr].life=1,M[mr].blood=500;
if(Level==2) for(int i=5;i<40;i+=6) mr++,M[mr].x=i,M[mr].y=19,M[mr].kind=0,M[mr].life=1,M[mr].blood=500,mr++,M[mr].x=i,M[mr].y=13,M[mr].kind=0,M[mr].life=1,M[mr].blood=500;
if(Level==3) for(int i=-90;i<=0;i+=45) mr++,M[mr].x=38+8*sin(3.1416*i/180),M[mr].y=2+8*cos(3.1416*i/180),M[mr].kind=0,M[mr].life=1,M[mr].blood=500,mr++,M[mr].x=38+15*sin(3.1416*i/180),M[mr].y=2+15*cos(3.1416*i/180),M[mr].kind=0,M[mr].life=1,M[mr].blood=500,mr++,M[mr].x=38+25*sin(3.1416*i/180),M[mr].y=2+25*cos(3.1416*i/180),M[mr].kind=0,M[mr].life=1,M[mr].blood=500;
if(Level==4) for(int i=30;i<=390;i+=60) mr++,M[mr].x=20+6*sin(3.1416*i/180),M[mr].y=25+6*cos(3.1416*i/180),M[mr].kind=0,M[mr].life=1,M[mr].blood=500,mr++,M[mr].x=20+11*sin(3.1416*i/180),M[mr].y=25+11*cos(3.1416*i/180),M[mr].kind=0,M[mr].life=1,M[mr].blood=500;
    while(M[1].life==1) if(clock()-Clocknum>=30)
    {
        T++;Clocknum=clock();
        memset(n,-1,sizeof(n));//这里默认全输空格  //鼠标,键盘,暂停操作
        mouse=GetAsyncKeyState(VK_LBUTTON)&0x8000;
        pt=Windowpos();N((pt.x-2)/2.2-3,(pt.y)/2+1,-2);
        if(mouse) Click();
        if(Day>=100&&endless==0) break;
        CD--;if(CD<=0){CD=CDmax;StartWar(Day);Day++;Setpos(43,40),printf("Day: %d     ",Day);}
            if(T%50==0) {money=min(money+10,2000);if(money<100) money=min(money+5,2000);if(Day>60) money=min(money+10,2000);if(Day>85) money=min(money+5,2000);
				Setpos(43,30),printf("Money: %d     ",money);
        	}
        Move(1);Map(1);
    }
    if(Day>=100) {system("color 6E"),Sleep(1000);for(int i=1;i<=1000;i++) cout<<"YOU WIN !!  ";system("pause");system("color 0F");}
    else {system("color 7F"),Sleep(1000);for(int i=1;i<=1000;i++) cout<<"GAME OVER...  ";system("pause");system("color 0F");}
    system("cls");
    goto St;
    return 0;
}

<2021> 小胎弹弹乐

#include<bits/stdc++.h>
#include<windows.h>
#include<stdio.h>
#include<conio.h>
#include<time.h>
using namespace std;
const double pi=3.1415926536;
int toint(float a){return ((int)(a*10+5))/10;}
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_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);}
//0123456
void Setpos(float x,float y){int xx=toint(x),yy=toint(y);COORD pos;pos.X=xx*2,pos.Y=yy;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}
int T,Sco,sco,color,col,colortime,colormax,speed,board,Blen,Rcolor,board2;
float X,Y,vx,vy,ax,ay,g=0.12;
int turn,bluetime=3;float bluea=0.5,bluepause=0.7,greenpause=0.9,purpleS=5,blackF=2,WD,WDmax=10;
int D[2][4]={{1,-1,0,0},{0,0,1,-1}};
struct node{int t,c,die,turn;}C[100001];int cl,cr;
void Go(float t)//使用正坐标轴  边界:0-20 
{
    float x2=X,y2=Y;int out;bool vxe=0,vye=0; 
    ax=0,ay=g;
    if(color==1) {ax=bluea*D[0][turn],ay=bluea*D[1][turn];if(D[0][turn]!=0) vy*=bluepause;else vx*=bluepause;}
    if(color==2) vx*=greenpause,vy*=greenpause;
    if(color==6) {float Ax=10-X,Ay=10-Y,Dis=sqrt(Ax*Ax+Ay*Ay)*1.0;
        if(Dis>1&&abs(Ax)>1&&abs(Ay)>1) {float ac=blackF/(Dis*Dis)*1.0,afx,afy;float d=abs(Ax/Ay*1.0)+1;
        afy=sqrt(ac/(1+d*d))*1.0,afx=sqrt(ac/(1+d*d))*d*1.0;if(Ax>0) afx*=-1;if(Ay>0) afy*=-1;vx-=afx;vy-=afy;}}
    if(vx<0) vxe=1,vx*=-1;if(vy<0) vye=1,vy*=-1;
    vx=fmin(2.0,fmax(0.1,vx)),vy=fmin(2.0,fmax(0.1,vy));
    if(vx<=0.2&&vy<=0.2&&color==2) color=4;
    if(vxe==1) vx*=-1;if(vye==1) vy*=-1;
    if(color==1) x2+=vx*t,y2+=vy*t;
    else if(color==2||color==5||color==6) ax=ay=0,x2+=vx*t,y2+=vy*t;
    else x2+=vx*t,y2+=vy*t+0.5*g*t*t;
    if(y2<0||y2>20){X=fmax(0.4,fmin(19.5,x2));Y=fmax(0.4,fmin(19.5,y2));
        if(color==1&&turn>=2&&colortime==0) colortime=bluetime;
        else if(color==1&&turn>=2&&colortime!=0) color=4;
        if(color==2) color=4;
        if(color==6) vy=0;else vy*=-1;
            if(Y>=19.5){board2=5;
                if((board-0.4>X||board+Blen+0.4<X)&&WD==0) system("Color C"),Sleep(500),system("Color F"),Sco-=5,WD=WDmax;
                else if(color!=6){Sco++;vx=(float)(rand()%50)/20.0-1.25;vy*=0.9+(rand()%40)/200.0;}
                if(abs(vx)>=2) vx*=0.9;if(abs(vy)<=1.7) vy*=1.2;if(abs(vy)>=2.2) vy*=0.9;if(abs(vy)<=1||color==6) vy=-1;
            }return;}
    else if(x2<0||x2>20){X=fmax(0.4,fmin(19.5,x2));Y=fmax(0.4,fmin(19.5,y2));
        if(color==1&&turn<2&&colortime==0) colortime=bluetime;
        else if(color==1&&turn<2&&colortime!=0) color=4;
        if(color==2) color=4;
        if(color==6) vx=0;else vx*=-1;if(abs(vx)>=2) vx*=0.85;return;}
    else X=x2,Y=y2,vx+=ax*t,vy+=ay*t;
}
void Board(int a){//1:动弹板 
    Setpos(board,20);Color(0);
    for(int i=1;i<=Blen;i++) {if(a==0) cout<<"  ";if(a==1) cout<<"●";}
}
void Line(int c,int t,int tur,int a){Color(c);
    if(tur==0) for(int i=1;i<=19;i+=2) {Setpos(20-t*2,i);if(a==0) cout<<' ';else if(c==1) cout<<'@';else cout<<'#';}
    if(tur==1) for(int i=1;i<=19;i+=2) {Setpos(t*2,i);if(a==0) cout<<' ';else if(c==1) cout<<'@';else cout<<'#';}
    if(tur==2) for(int i=1;i<=19;i+=2) {Setpos(i,20-t*2);if(a==0) cout<<' ';else if(c==1) cout<<'@';else cout<<'#';}
    if(tur==3) for(int i=1;i<=19;i+=2) {Setpos(i,t*2);if(a==0) cout<<' ';else if(c==1) cout<<'@';else cout<<'#';}
}
float Sin(int a) {return sin(3.1416*a/180);}float Cos(int a) {return cos(3.1416*a/180);}
void Circle(int c,int t,int a){
    int rx=10,ry=10,r=t,num=10,next=360/num,start=t*7; 
    for(register int i=0;i<num;i++){
    Setpos(rx+Sin(i*next+start)*r,ry+Cos(i*next+start)*r);
    Color(c);if(a==0) cout<<' ';else if(c==0) cout<<'&';else if(c==2) cout<<'*';else if(c==4) cout<<'$';else if(c==5) cout<<'%';else cout<<'X';}
}
void ChangeColor(int c)
{color=c;colortime=0;
        if(color==3) Setpos(X,Y),cout<<"  ",X+=D[0][turn]*purpleS,Y+=D[1][turn]*purpleS,X=fmax(0.5,fmin(19.5,X)),Y=fmax(0.5,fmin(19.5,Y)),colortime=5;
        else if(color==5) {int exspeed=1.5;vx*=exspeed;vy*=exspeed;colormax=colortime=10+rand()%50;}
        else if(color==6) colormax=colortime=10+rand()%30;
        else if(color==0) vy=-1.5,vx*=0.8,colortime=5;
} 
void Remind(int n,int c,int t,int tur){
    if(c==1||c==3) {if(t!=10) Line(c,t+1,tur,0);if(t!=0) Line(c,t,tur,1);}
    else {if(t!=10) Circle(c,t+1,0);if(t!=0) Circle(c,t,1);}
    if(t==0) turn=tur,ChangeColor(c),C[n].die=1;
}
void Start()
{
    char g;Color(5);system("cls");
    Setpos(1,1);cout<<"      ---●-- 小胎弹弹乐 --●---";Color(0);
    Setpos(1,3);cout<<"  -- 一个看似简单但你却无法通关的游戏...";
    Setpos(1,4);cout<<"  ----------  作者:胎神大大  ---------";
    Setpos(1,5);cout<<"游戏规则:";
    Setpos(1,7);cout<<"1.相信大家都玩过弹弹乐吧!";
    Setpos(1,8);Color(5),cout<<"  ←→键控制跳板接住球即可得分!";Color(0);
    Setpos(1,9);cout<<"2.但是在这个游戏,会出现 不同颜色 的魔法攻击来 扰乱 球的轨道!";
    Setpos(1,11);cout<<"3.  ";Color(4),cout<<"普通颜色:红";
    Setpos(3,12);Color(1),cout<<"蓝色攻击:重力";Color(5),cout<<"  黄色攻击:匀速";
    Setpos(3,13);Color(2),cout<<"绿色攻击:束缚";Color(3),cout<<"  紫色攻击:瞬移";
    Setpos(3,14);Color(0),cout<<"白色攻击:上推";Color(6),cout<<"  黑色攻击:引力";
    Setpos(1,15);Color(0),cout<<"   ( 记法:愤怒的小鸟 + 传说之下 )";
    Setpos(1,16);cout<<"4.按下 空格 可以暂停";
    Setpos(1,17);cout<<"5.板长与变色概率随分数改变!";Color(5),cout<<"100分通关!";Color(0);
    Setpos(1,19);cout<<"  开始游戏:";system("pause");
}
int main()
{
    system("mode con cols=43 lines=21");
    CONSOLE_CURSOR_INFO cursor_info={1,0};
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
    srand((unsigned)time(NULL));St:Start();system("cls");
    X=2,Y=5,vx=0.2,vy=0,color=4,speed=50,Sco=0,board=5,Blen=7,cl=1,cr=0;
    Color(0);Board(1);
    while(1)
    {
        T++;
        if(Sco>=100) break;Sco=max(0,Sco);
        if(Sco!=sco||T%100==1){if(T%200==1||Sco<sco) system("cls"),Board(1);
            Color(0),Setpos(1,1),cout<<"分数:"<<Sco<<' ';sco=Sco;
            Rcolor=(int)(90-0.6*Sco);
            int blen=(int)(7-(Sco+20)/30);if(Blen<blen&&board>=21-Blen) Board(0),board--;if(Blen!=blen) Board(0),Blen=blen,Board(1);
        }
        if(GetAsyncKeyState(VK_LEFT)&0x8000&&board>0) Board(0),board--,Board(1);
        if(GetAsyncKeyState(VK_RIGHT)&0x8000&&board<21-Blen) Board(0),board++,Board(1);
        if(kbhit()){char c=_getch();if(c==' ') Color(0),Setpos(1,2),system("pause"),Setpos(1,2),cout<<"                           ";}
        if(colortime==1) color=4;
        if(colortime>0) {Setpos(1,2),colortime--;if(color==5||color==6){for(int i=1;i<=colortime-1;i+=colormax/9) Color(color),cout<<"▂";cout<<"                   ";}}
        if(WD>0) WD--;
        if(rand()%Rcolor==0) {cr++;CC:C[cr].c=rand()%7; 
        if(C[cr].c==4) goto CC;C[cr].t=10;C[cr].die=0;C[cr].turn=rand()%4;}
        while(C[cl].die==1) cl++;if(cr<cl) cr=0,cl=1,memset(C,0,sizeof(C));
        for(int i=cl;i<=cr;i++) {Remind(i,C[i].c,C[i].t,C[i].turn);C[i].t--;}
        Setpos(X,Y);cout<<"  ";
        Go(1);
        if(board2>0) Board(1),board2--;
        if(color!=col) Setpos(1,2),cout<<"                                  ";
        if(color==6) Color(color),Setpos(10,10),cout<<"○";
        else if(col==6) Setpos(10,10),cout<<"  ";col=color;
        Color(color),Setpos(X,Y);cout<<"●";
        Sleep(speed);
    }
    if(Sco<100) {Setpos(6,9);system("color 7F");Color(11);cout<<"   GAME OVER...";}
    else {Setpos(6,9);system("color 6E");Color(5);cout<<"LEVEL VICTORY !";}
    Setpos(4,11);Sleep(1000);cout<<"play again? (y/n)";Sleep(1000);char g;
    A:if(kbhit()) g=_getch();if(g=='n') return 0;else if(g!='y') goto A;else if(g=='y') goto St;
}

<2021> 丧尸危机

#include<bits/stdc++.h>
#include<windows.h>
#include<time.h>
#include<conio.h>
using namespace std;
int mzhg,zd,swhm,qxs,swx,sn,mp,tongguan,sw1,zd1,sn1,mz1,mp1,zbbj,ccg,mzzd,mz,tongguan1,sw,x,s,cdd,jg,qiang,gun,by,vv,gjj[100],hjj[100],zjj[100];
void Read()
{
    ifstream in("丧尸危机存档.in");
    in>>mzhg>>zd>>swhm>>qxs>>swx>>sn>>mp>>tongguan>>sw1>>zd1>>sn1>>mz1>>mp1>>zbbj>>ccg>>mzzd>>mz>>tongguan1>>sw>>x>>s>>cdd>>jg>>qiang>>gun>>by>>vv;
    for(int i=0;i<=99;i++) in>>gjj[i];
    for(int i=0;i<=99;i++) in>>hjj[i];
    for(int i=0;i<=99;i++) in>>zjj[i];
    in.close();
}
void Save()
{
    ofstream out("丧尸危机存档.in");
    out<<mzhg<<' '<<zd<<' '<<swhm<<' '<<qxs <<' '<<swx<<' '<<sn<<' '<<mp<<' '<<tongguan<<' '<<sw1<<' '<<zd1<<' '<<sn1<<' '<<mz1<<' '<<mp1<<' '<<zbbj<<' '<<ccg<<' '<<mzzd<<' '<<mz<<' '<<tongguan1<<' '<<sw<<' '<<x<<' '<<s<<' '<<cdd<<' '<<jg<<' '<<qiang<<' '<<gun<<' '<<by<<' '<<vv<<'\n';
    for(int i=0;i<=99;i++) out<<' '<<gjj[i];out<<'\n';
    for(int i=0;i<=99;i++) out<<' '<<hjj[i];out<<'\n';
    for(int i=0;i<=99;i++) out<<' '<<zjj[i];out<<'\n';
    out.close();
}
void Slowsay(string a) {int l=a.size();for(int i=0;i<l;i++){cout<<a[i];if(vv==0) Sleep(20);}printf("\n");if(vv==1) Sleep(100);}
int read()
{
    char ch=_getch();
    while(ch>'9'||ch<'0') ch=_getch();
    return ch-48;
}
void qp()
{
    system("cls");if(swx==2) Slowsay("王,"),zd=99999,sw=99999;
    Slowsay("当前你的状态是\n");
    printf("子弹 %d,食物 %d\n",zd,sw);
}
int esl()
{
    system("cls");
    char ch;
    Slowsay("你,饿死了。\n");
    if(vv==0) ch=_getch();
    hjj[1]=1;
    Slowsay("Bad End  1\n");
    ch=_getch();
    s++;
    return 0;
}
int mzd()
{
    hjj[2]=1;
    system("cls");
    char ch;
    Slowsay("你,被丧尸咬死了。\n");
    if(vv==0) ch=_getch();
    Slowsay("Bad End   2\n");
    ch=_getch();
    s++;
    return 0;
}
int hd1()
{
    system("cls");
    Slowsay("在某一天,你家门口响起了敲门声,你打开门,外面的发现让你欣喜若狂\n");
    Slowsay("政府的救援部队已经消灭了这个城市的丧尸,\n他们在这个城市的各个角落搜索着可能存在的幸存者.\n");
    Slowsay("Happy End-----苟到最后\n");Sleep(1000);gjj[1]=1;
    return 0;
}
int hd2()
{
    system("cls");
    int sw;
    char ch;
    Slowsay("在与妹子相处的这些时间里,你与她相爱了\n");
    Slowsay("你们的生活是那样的幸福\n");
    Slowsay("直到有一天......\n");
    Slowsay("基地首领希望你去执行一个任务,你选择\n");
    Slowsay("1.独自一人前往\n");
    Slowsay("2.和妹子一起去\n");
    while(true)
    {
        int x;
        x=read();
        if(x<1||x>2)
        {
            Slowsay("请重新输入\n");
            continue;
        }
        if(x==1)
        {
            Slowsay("当你完成任务回来的时候,发现——\n");
            Slowsay("基地被丧尸攻破了\n");
            Slowsay("这个基地的所有人都被丧尸杀了,一个人都没跑出来\n");
            hjj[4]=1;
            Slowsay("Bad End    4");
            s++;
        }
        if(x==2)
        {
            Slowsay("当你和妹子完成任务回来时,\n");
            Slowsay("基地已经变成一片废墟了\n");
            Slowsay("你和妹子没有办法,只能到处流浪\n");
            Slowsay("不过,两个人总比一个人要好\n");
            gjj[2]=1;
            Slowsay("Happy End------神仙眷侣"); 
        }
        break;
    }    Sleep(1000); 
    return 0;
}
int hd3()
{
    system("cls");
    char ch;
    Slowsay("你就这样平静的生活在这个基地里\n");
    Slowsay("直到某一天,大量的丧尸进攻了这里\n");
    if(zd>9)
    {
        Slowsay("每个人都在尽自己的努力去守卫基地\n");
        Slowsay("每个人都做到了自己能做到的\n");
        Slowsay("最后,奇迹出现了\n");
        Slowsay("大家成功守住了基地\n");
        Slowsay("而你,也因为在守卫过程中立下大功成为了这个基地的英雄\n");
        Slowsay("顺便说一句,到死了你也没女朋友\n");
        gjj[3]=1;
        Slowsay("Happy End-----英雄不朽");
        return 0;
    }
    Slowsay("丧尸的数量实在太多了,\n");
    Slowsay("尽管基地的大家都在尽全力防守\n");
    Slowsay("可基地还是被攻破了\n");
    Slowsay("而你,也死在了这里\n");
    s++;
    hjj[5]=1;
    Slowsay("Bad End     5"); Sleep(1000); 
}
int hd4()
{
    system("cls");
    Slowsay("在于少年相处的这些时间里");
    Slowsay("你尽力地保护着他");
    Slowsay("而他也常常给你带来惊喜");
    Slowsay("慢慢的,你开始认清你自己");
    Slowsay("你是个gay");
    Slowsay("于是,你就和少年性福快乐的生活在了一起");
    Slowsay("Happy End-----认清自己");
    gjj[4]=1;  Sleep(1000); 
}
int td()
{
    system("cls");
    char ch;
    Slowsay("那箱饼干与你的枪一起发出了强光\n");
    Slowsay("紧接着,他们融为了一体\n");
    Slowsay("当光芒散去时,整个世界都发生了变化\n");
    Slowsay("所有的丧尸都变回了人类\n");
    Slowsay("伟大的勇士!丧尸危机终于解除了!!接下来,是普天同庆的大狂欢!!!\n");
    Slowsay("True End-----拯救世界\n");Sleep(1000); 
    Slowsay("???????????????????????????????????");
    Slowsay("......这是怎么回事......");
    Slowsay("......为什么......");
    Slowsay("......不是普通的......");
    Slowsay("......从何而来......");Sleep(1000); 
    Slowsay("。 。 。 。 。 。是谁。 。 。 。 。 。");
    Slowsay("你陷入沉思。");
    if(zjj[1]!=1)
    {
        Slowsay("获得线索-----奇特的枪与饼干");
    }
    zjj[1]=1; Sleep(1000); 
}
int td2()
{
    system("cls");
    char ch;
    Slowsay("你的变异已经开始了");
    Slowsay("你开始疯狂的进食,直到把自己的胃撑破");
    Slowsay("然后,就眼前一黑失去意识");
    Slowsay("再次醒来时,你已经是一个丧尸了");
    Slowsay("奇怪的是,你还保留着自己的意识");
    Slowsay("你感觉到自己的力气变得更大,速度变得更快");
    Slowsay("或许变成丧尸也不错————你这样想着");
    Slowsay("True End-----认清!·本我"); 
    if(zjj[2]!=1)
    {
        Sleep(2000);
        Slowsay("获得线索-----延迟变异!·少年");
    }
    zjj[2]=1; Sleep(1000); 
}
int bd8()
{
    Slowsay("坐在椅子上的是一个15岁左右的少年");
    Slowsay("正在你因为他的年龄而惊讶时");
    Slowsay("少年却站了起来,看向了你身后的妹子");
    Slowsay("“差不多了吧”,妹子这样说道");
    Slowsay("“可以了”,这是少年的回答");
    Slowsay("然后,你就感到脖子一阵剧痛");Sleep(1000);
    Slowsay("在你失去意识前,妹子一直没有松口。");
    s++;
    Slowsay("Bad End     8");
    if(hjj[8]==0)
    {
        Sleep(2000);
        Slowsay("获得线索-----早已变异!·妹子");
    }
    hjj[8]=1;  Sleep(1000); 
}
int td3()
{
    system("cls");
    Slowsay("你和妹子冲出了丧尸的围杀,");
    Slowsay("可是当你们来到那个幸存者基地时");
    Slowsay("却发现那个基地有一些不对");
    Slowsay("所有人都死气沉沉的");
    Slowsay("你们直接走向了首领的房间");Sleep(1000);
    if(zjj[2]==1&&zjj[3]==1) 
    {   
        bd8();
        return 0;
    }
    Slowsay("换完子弹的你想离开");
    Slowsay("就在你快要离开的时候,妹子抓住了你的手");
    Slowsay("“我喜欢你,别走”,她这样说");
    Slowsay("于是,你留了下来");
    Slowsay("你们的生活是那样的幸福"); 
    Slowsay("直到有一天......");Sleep(1000);
    Slowsay("基地首领希望你去执行一个任务,\n");
    Slowsay("在执行任务的过程中");
    Slowsay("妹子曾被丧尸咬到过一口");
    Slowsay("她以为你没有发现");
    Slowsay("而你却在远处看到了这一幕");
    Slowsay("奇怪的是,她却并没有变异\n");
    Slowsay("那一刹那你突然想起,");
    Slowsay("你们的房间里,总是弥漫着一股血腥的味道......");Sleep(1000);
    Slowsay("Happy End------神仙眷侣");Sleep(1000);
    Slowsay("???????????????????????????????????");
    Slowsay("True End------认清?·妹子");
    if(zjj[3]==0)
    {
        Sleep(2000);
        Slowsay("获得线索-----不变异?·妹子"); 
    }
    zjj[3]=1;Sleep(1000);
}
int td4()
{
    system("cls");
    Slowsay("当丧尸危机爆发时,你正呆在家里\n");
    char ch=_getch();
    if(vv==0) ch=_getch();
        system("cls");
        Slowsay("当丧*#******丧尸危机*$*&*^&*机爆发时,**你正呆***&*爆发******#在家里**\n");Sleep(1000);
    	Slowsay("***检*#******测到*不**丧尸危**88机*$匹*$**机爆发时,**配***#在家里****\n");Sleep(2000);
    	Slowsay("L当****#OG****I危机*$N**E机爆***(RR*8%#404)**发时,**你O*****#在家R里!\n");Sleep(2000);
        system("cls");
    if(vv==0) ch=_getch();
    Slowsay("有什么不对劲");
    Slowsay("你这样想着");
    Slowsay("过去了好多天,\n你还是一个人都没有遇到,\n除了丧尸就是丧尸");
    Slowsay("为什么他们......不见了?");
    Slowsay("\n");
    Slowsay("True End------验证失败");
    zjj[4]=1;
    if(zbbj==0)
        Slowsay("进阶线索-----乱码,废弃与失联"),zbbj=1;Sleep(1000);
}
int td5()
{
    system("cls");
    Slowsay("当少年死去后,整个世界好像变得不同了");
    Slowsay("所有的活人在一瞬间消失");
    Slowsay("所有的丧尸当场去世"); 
    Slowsay("你的眼前只剩下了黑暗");
    Slowsay("不知道过去了多久,你死了");
    Slowsay("Bad End......");Sleep(1000);
    Slowsay("不,还没有结束");
    Slowsay("虽然好像和往常死去之后的感觉一样");
    Slowsay("但是。。。好像。。。");Sleep(1000);
    Slowsay("有延迟?。。。");
    Slowsay("。。。在这段时间里,你的思考一直没停。。。");
    Slowsay("True End-----死亡姗姗来迟");
    s++;
    if(zjj[5]==0)
        Slowsay("进阶线索-----少年之死");
    zjj[5]=1;   Sleep(1000); 
}
int tg3()
{
    Slowsay("当你再次睁开眼时");
    Slowsay("你发现自己躺在一个营养仓内");
    Slowsay("你无比的确认这就是真实的世界");
    Slowsay("脑中的一切开始明晰起来");
    Slowsay("你认为自己知道了一切的真相");
    Slowsay("去杀光人类吧!!!!");
    Slowsay("你这样想着");
    Slowsay("在身着白大褂的丧尸们的欢呼声中");
    Slowsay("你打碎了玻璃,跑出了营养仓");
    Slowsay("来到了外面这个被战争破坏得满目疮痍的世界");
    Slowsay("战火硝烟,炮声隆隆");
    Slowsay("你熟练的发出嘶吼,呼唤着周围的丧尸");
    Slowsay("你指挥着他们,毁掉了一个又一个人类的基地"); 
    Slowsay("最后,在这场世纪战争中,丧尸们艰难地取得了胜利"); 
    Slowsay("作为它们的英雄,你自豪的统治着世界。"); 
    Slowsay("虽然,其实,在那些你不知道的地方");
    Slowsay("一个个一样的营养仓中,装着一个个一样的你。");
    Slowsay("---------------游戏终极剧情通关-------------");
    tongguan1=2; Save(); Sleep(1000);
}
int tg2()
{
    Slowsay("当你再次睁开眼时");
    Slowsay("你发现自己躺在一个营养仓内");
    Slowsay("你无比的确认这就是真实的世界");
    Slowsay("可是你却发现自己没法操纵身体");
    Slowsay("隔着玻璃,一个黑色的身影正在操作着");
    Slowsay("你清晰的看见那个人的大脑裸露出来,与你的接在一起");
    Slowsay("这时,又有一大波记忆涌入脑海。");
    Slowsay("“少年与妹子......是以“成功者”“英雄”“神话传说”为原型创造的人物......”");
    Slowsay("“游戏中的情节与场景......取材于现实世界真实案例......”");
    Slowsay("再往后,你的脑中一片混乱。");
    Slowsay("“...舍弃.........熟练..我....智慧..学习........获得.....”");
    Slowsay("“.....种族...探索.......杀...进化.........帮助..需要.....”");
    Slowsay("“...成熟....兵器.....无敌..下风.......战争...伟大.....英雄.....”");
    Slowsay("激昂的声音一直回荡着。");
    Slowsay("---------------游戏进阶剧情通关-------------"); 
    tongguan1=1; Sleep(1000); 
}
int td6()
{
    Slowsay("一天以后,少年回来了");
    Slowsay("一起回来的还有妹子");
    Slowsay("“找到了......”");
    Slowsay("少年的手中拿着一个破损的铭牌");
    Slowsay("铭牌上的字迹很诡异,但写着熟悉的内容:");
    Slowsay("【22-08-03...】");
    Slowsay("“你的......”");
    Slowsay("妹子神色复杂的看了你一眼");
    Slowsay("“我们是一类人......”");
    Slowsay("“现在,让我把你带出去吧。”");
    if(qxs==1&&swx==0)
    {
        tg2();
        return 0;
    }
    else
    {
        Slowsay("一股强烈的撕扯感出现到了你身上");
        if(swx==1) Slowsay("此时的你,是如此渴望着死亡与结局\n你大笑着张开双臂,迎接了死亡。");
        else Slowsay("此时的你并不能接受如此巨大的伤害"),Slowsay("你死了。");
        Slowsay("Bad End      14");
        if(hjj[14]==0)
            Slowsay("进阶线索-----外面的世界");
        hjj[14]=1;
        s++; 
    }Sleep(1000); 
} 

int bd6()
{
    system("cls");
    Slowsay("你感觉到自己正在变异,");
    Slowsay("意识开始逐渐模糊起来");
    Slowsay("你的肚子正无比渴望着食物,你啃噬着触及的一切!");
    Slowsay("但是不够,你的身躯饿得干枯,你甚至开始食用自己的躯体!");
    Slowsay("接着,你眼前一黑,再也没有醒来......");
    s++;
    hjj[6]=1;
    Slowsay("Bad End      6");Sleep(1000); 
} 

int bd3()
{
    system("cls");
    char ch;
    Slowsay("长久的等待终于让你失去了理智,你疯了。\n");
    Slowsay("Bad End   3\n");
    hjj[3]=1;Sleep(1000); 
    if(mp==-1)
    {
        Slowsay("当政府的救援队打开你家的门时,你嘶吼着扑了上去");
        if(zd>0)
            Slowsay("他们试图将你击毙,却被你提前一枪击倒");
        else
        {
            Slowsay("你被他们击毙了");
            Slowsay("Bad End       12");
            s++;
            hjj[12]=1;
            return 0; 
        }
        Slowsay("你如同一个熟练的猎手,狩猎着救援队");
        Slowsay("当他们全部死去后,你开始享用起你的大餐");
        Slowsay("Bad End           13");
        if(by==0)
            Sleep(2000),Slowsay("进阶线索-----早已变异!·本我"),by=1;
        hjj[13]=1;
        return 0; 
    }
    s++;
}
int bd7()
{
    s++;
    system("cls");
    Slowsay("你,被狗咬死了");
    Slowsay("Bad End      7");
    hjj[7]=1;Sleep(1000); 
}

int bd15()
{s++;
    Slowsay("你发现这笔迹有些不对");
    Slowsay("就好像是新写上去的一样");
    Slowsay("认字迹的话,好像还十分熟悉");  Sleep(1000);  
    Slowsay("正当你想的入迷的时候,你的脖子被咬住了");
    Slowsay("在死前,你隐约听到了少年的声音,“Again.”");
    Slowsay("Bad End     15");
    if(hjj[15]==0)
    {
        Sleep(2000);
        Slowsay("进阶线索-----伪造......");   
    } 
    hjj[15]=1; Sleep(1000); 
}
int tgg3()
{
    system("cls");
    Slowsay("你杀掉了少年,并吃掉了他的尸体");
    Slowsay("世界开始崩塌");
    tg3(); Sleep(1000); 
}
int bd9()
{
    s++;
    system("cls");
    Slowsay("诡异的是,当你杀光了跟来的丧尸后,发现地下室里并没有丧尸");
    Slowsay("这里有的,只是一个穿着白大褂的尸体");
    Slowsay("在尸体的衣服口袋中,你找到了一个笔记本");
    Slowsay("****(无法辨认)1号****进展*****永生**");
    Slowsay("今********,*号诞生了,他比其*****更*");
    Slowsay("有些不对,*****的发育*****太快***");
    Slowsay("2号的**被***出有*****强感染性*****");
    Slowsay("**********************************");
    Slowsay("***瓶颈,或许我们**应该****活体样本");
    Slowsay("**,**样本*****失去活性,*****但**在动\n");
    if(mp==-1)
    {
        bd15();
        return 0;
    } 
    Slowsay("正当你看的入迷的时候,你的脖子被咬住了");
    Slowsay("在死前,你隐约听到了少年的声音,“Again.”");
    Slowsay("Bad End     9");
    if(hjj[9]==0)
    {
        Sleep(2000);
        Slowsay("获得线索-----实验体·1号和2号");   
    } 
    hjj[9]=1;Sleep(1000); 
} 

int tg()
{
    system("cls");
    Slowsay("不知为何,当你走到这里时,感到世界在一瞬间发生了变化");
    Slowsay("你不知道这个变化发生在那里,你只知道,现在的世界十分违和");
    Slowsay("或许,这个世界不是真实的");
    Slowsay("当你的脑中出现了这个的时候,你眼前的世界,蹦塌了");
    Slowsay("于此同时,大量记忆冲进了你的脑海");
    Slowsay("不,它们只是回来了,这本身就是你的记忆");
    Slowsay("他们在一开始被一些虚假的记忆所替换");
    Slowsay("从记忆中,你得知你此时正在玩一个vr游戏");
    Slowsay("少年与妹子则是游戏的npc");
    Slowsay("这款游戏号称有着超强的代入感");
    Slowsay("你在发售当天就买来玩了");
    Slowsay("“这游戏真是了不起啊”,你这样想着,“再玩一次吧”");
    Slowsay("...是啊,没错,这一切只是游戏,游戏。............");Sleep(1000); 
    Slowsay("躺在仓中的你,自始至终,都没有睁开眼。");
    Slowsay("---------------游戏基础剧情通关-------------"); 
    cdd=0;
    tongguan=1;Sleep(1000); 
}
int cg()
{
    system("cls");
    Slowsay("你感觉到违和感在不断加深");
    Slowsay("世界好像不再是真实的");
    Slowsay("你现在脑中只有一种想法\n");Sleep(1000); 
    Slowsay("活下去!越久越好!!!"); Sleep(1000); 
}
int cg2()
{
    system("cls");
    system("Color C");
    Slowsay("违和感在此时已经聚集到了顶峰\n");
    Slowsay("你的脑中想清楚了一切\n");
    Slowsay("1.那么,下一步是  杀光他们\n");
    Slowsay("2.那么,下一步是  团结起来\n");
    x=read();
    if(x==1)
        Slowsay("已立起尸王线flag,接下来,去打通全 15 badend!"),swx=1,qxs=1; 
    else
        Slowsay("“看来你还是没懂啊......”背后传来冷冷的声音\n\n“ A  G  A  I  N   . ”"); 
    system("Color F");Sleep(1000); 
}
int Swx()
{
    system("cls");
    Slowsay("哈。。。哈。。。哈。。。。。。");
    Slowsay("我。。。已经完成了。。。");
    Slowsay("所有的死法。。。我都体验了一遍了。。。");
    Slowsay("我。。。一直是只丧尸吧。。。");
    Slowsay("无论被打倒多少次。。。我都会站起来继续。。。");
    Slowsay("只要是我想通的结局。。。我便一定会通掉它。。。");
    Slowsay("只要是我想杀的人。。。我便一定会杀死他。。。");
    Slowsay("只要是我想知道的真相。。。我便一定会知晓它。");
    Slowsay("我。。。已经不是以前的那个懦弱无能的我了。。。");
    Slowsay("这一轮。。。我。。。要成为王!!!\n");
    Slowsay("在实验室中,为首者发出低哑的嘶吼:");
    Slowsay("所有人员一级戒备!实验,进入最后阶段!!");
    Slowsay("------------终极剧情-尸王线开启!------------");cdd=0;
}
int bd10()
{
    system("cls");
    Slowsay("你发现了另一个基地");
    Slowsay("弹尽粮绝的你选择加入了他们");
    Slowsay("之后的每一天都十分单调");
    Slowsay("外出寻找物资,然后天黑了回家睡觉");
    Slowsay("应该是这样吗?");
    Slowsay("也许吧");
    Slowsay("Bad End     10");
    hjj[10]=1; Sleep(1000); 
}
int hd5()
{
    Slowsay("没关系的,一切都会过去的");
    Slowsay("你这样说的");
    Slowsay("他似乎感觉到了你的善意,一点一点向你靠近");
    Slowsay("你紧紧的抱住了他");
    Slowsay("我会保护好你的"); Sleep(1000); 
    Slowsay("Happy End-----跨越物种的gay~");  Sleep(1000); 
}
int sswj()
{
Save();
    system("cls");
    int w=0;
    mp=0;
    if(tongguan==1&&zjj[4]==0)
    {
        Slowsay("检测到你已通关,是否领取特殊物品\n");
        Slowsay("1.领取");
        Slowsay("2.不领取");
        while(true)
        {
            x=read();
            if(x==1)    
                mp=-1; 
            if(x==2)
            {
                td4();
                return 0;
            }
            break;
        }
    }
    else if(tongguan==1)
    {
        Slowsay("检测到你已通关,已领取特殊物品\n");mp=-1;
    }
    char ch;
    if(cdd==1)
    {
        Slowsay("是否读取存档\n");
        Slowsay("1.读取\n");
        Slowsay("2.不读取\n");
        x=read();
        if(x==1)
        {
            sw=sw1;
            zd=zd1;
            sn=sn1;
            mz=mz1;
            mp=mp1;
            goto cddd1;
        }
    }
    system("cls");
    Slowsay("当丧尸危机爆发时,你正呆在家里\n");if(vv==0) ch=_getch();
    Slowsay("你有10点物资可以分配到子弹和食物上"); 
    if(swx==2) Slowsay("...\n\n但是!不!我已经不会再惧怕食物短缺与丧尸小兵了!\n\n我,应当是世界的王!!\n"),zd=99999,sw=99999;
    else{if(vv==0) ch=_getch();
    int x,y;
    qiang=0;gun=0;zd=0;sw=0;mz=0;mzzd=0;sn=0;mzhg=0;
    Slowsay("\n请输入你的选择(此次输入需键入回车,例:5 5 )\n");
    while(true)
    {
        scanf("%d%d",&x,&y);
        zd=x;sw=y;
        if(x+y!=10||x<0||y<0)
        {
            if(x==666666&&y==5201314)
            {
                Slowsay("启用秘籍\n");
                Slowsay("请输入你真正需要的子弹数和食物数(上限:999 )\n");
        scanf("%d%d",&x,&y);
        zd=min(x,999);sw=min(y,999);
                break;
            }
            Slowsay("请重新输入\n");
            w++;
            if(w>5)
            {
                SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
                Slowsay("行了行了,这只是第一个选择而已\n"), 
                Slowsay("有必要这么皮吗\n"),
                Slowsay("自动分配食物3个子弹7个\n");
                if(vv==0) ch=_getch();
                sw=3,zd=7; 
                break;
            }
        }
        else break;
    }
    }
    Slowsay("你的家里是个较为安全的地方,你可以选择搜索你家的物资或是去邻居家看看\n");
    if(vv==0) ch=_getch();
    Slowsay("1.留在家中\n");
    Slowsay("2.前往邻居家\n"); 
    while(true)
    {
        x=read();
        if(x!=1&&x!=2)
            Slowsay("请重新输入\n");
        else
            if(x==1)
            {if(swx==2) {Slowsay("饿啊!为什么我还呆在家里!!");break;}
            else {
                Slowsay("在二楼,你发现了一些食物食物+3\n");
                if(vv==0) ch=_getch();
                Slowsay("在家里过了一夜,食物-1\n");
                sw=sw+2;
                break;
            }}
            else
            {if(swx==2) {Slowsay("可恶!为什么邻居家里没有人!!");break;}
            else {
                Slowsay("在前往邻居家的路上,你遇到了丧尸\n");
                if(vv==0) ch=_getch(); 
                if(zd<1) 
                {
                    Slowsay("你朝他开了一枪,不过枪里没有子弹,你被他咬死了\n");
                    if(vv==0) ch=_getch(); 
                    hjj[11]=1;
                    Slowsay("Bad End      11\n");
                    s++;
                    if(vv==0) ch=_getch();
                    Slowsay("另外在说一句,一个子弹都不带,还到处乱浪,你是真的作");
                    return 0;
                }
                else
                {
                    Slowsay("你用你手中的枪结束了他的生命,子弹-1\n");
                    zd=zd-1;
                    if(vv==0) ch=_getch();
                    Slowsay("邻居家里不知为何并没有人,你在仔细搜索后发现了一个弹夹,里面有4发子弹\n");
                    zd+=4;
                    if(vv==0) ch=_getch();
                    Slowsay("在邻居家过了一夜后,食物-2\n");
                    sw=sw-2;
                    if(sw<0)
                    {
                        esl();
                        return 0; 
                    } 
                }
                break;
            }}
    }
    if(vv==0) ch=_getch();
    qp();
    Slowsay("你回想起这附近有一座商场,你决定\n");
    if(vv==0) ch=_getch();
    Slowsay("1.前往商场\n");
    Slowsay("2.到处乱走\n");
    Slowsay("3.留在屋子里\n");
    while(true)
    {
        x=read();
        if(x!=1&&x!=2&&x!=3)
        {
            Slowsay("请重新输入\n");
            continue;
        }
        if(swx==2&&x==1) {system("cls"),Slowsay("你循着残存的记忆前往商场,找到了适合你膨胀体型的衣服,可以继续隐藏下去。\n\n"),mz=1;break;}
        else if(swx==2&&x==2) {system("cls"),Slowsay("你到处乱走,见人即杀,丧尸与人类的血混合着溅满了街道,\n惨叫连连,火光接天,如同末世一般。\n你站在尸山上狂笑,不屑于看那些渺小的灵魂。\n\n然而,你丝毫没有注意,一个娇小的身影远远的看到了你,捂着嘴逃之夭夭。\n\n"),mz=10086;break;}
        else if(swx==2&&x==3) {system("cls");Slowsay("你如一名老练的猎手忍耐着饥饿,终于等来了敲门声。\n你得意洋洋的屠杀着这送上门来的大餐\n并跟踪着逃兵进入了幸存者基地。\n那一天,残阳似血,为浸染大地的红再镶上一道道金光。\n\n");Sleep(1000);return 0;} 
        else if(x==3)
        {
            if(sw<2) 
            {
                esl();
                return 0;
            }
            Slowsay("无聊正在逐渐消磨你的意志,但你还是坚持了下来。食物-2\n");
            sw=sw-2;
            if(vv==0) ch=_getch();
            Slowsay("之后的每一天你都是这样,独自一人在家中等待救援\n");
            if(vv==0) ch=_getch();
            Slowsay("在过了好久之后\n");cout<<mp; 
            if(sw<6)
            {
                esl();
                return 0;
            }
            x=rand()%2;
            if(x==1&&mp==0) {hd1();return 0; }
            else {bd3();return 0;}
        }
        else if(x==2)
        {       
            int xx=rand()%3;
            if(xx!=0)
            {
                Slowsay("在到处乱走的过程中,你遇到了来自世界各地的丧尸,子弹-2\n");
                if(zd<2)
                {
                    mzd();
                    return 0;
                }
                zd=zd-2;
            }
            else
            {
                Slowsay("在到处乱走的过程中,你走入了一处曾为战场的废墟\n");
                if(vv==0) ch=_getch();
                Slowsay("你循着硝烟味,终于找到了军队残留的弹药箱,子弹+6\n");
                zd+=6;
            }
            break;
        }
        else if(x==1)
        {
            if(zd<4)
            {
                mzd();
                return 0;
            }
            Slowsay("在前往商场的过程中,你遇到了丧尸,子弹-4\n");
            zd=zd-4;
            if(vv==0) ch=_getch();
            Slowsay("你在商场发现了食物与子弹,食物+3,子弹+2\n"); 
            sw=sw+3;zd=zd+2;
            break;
        }
    }
    if(mz!=10086)
    {Slowsay("你在回家的路上发现了一个女幸存者\n");
    if(vv==0) ch=_getch();
    Slowsay("她试图向你讨要食物,你的选择是\n");
    Slowsay("1.不给\n");
    Slowsay("2.给她2份食物\n");
    Slowsay("3.给她2份子弹\n");
    Slowsay("4.给她一枪\n");
    while(true)
    {
        x=read();
        if(x<1||x>4)
        {
            Slowsay("请重新输入。\n");
            continue;   
        }   
        if(x==1)
        {
            Slowsay("妹子生气的走了。\n");
            if(vv==0) ch=_getch();
        }
        if(x==2)
        {
            if(sw<2)
            {
                Slowsay("食物不足\n");
                continue;
            }
            sw=sw-2;
            mzhg++;
            Slowsay("你的食物-2,妹子好感度+1\n");
            if(vv==0) ch=_getch();
        }
        if(x==3)
        {
            if(zd<2)
            {
                Slowsay("子弹不足\n");
                continue;
            }
            mzzd=1;
            Slowsay("你给了妹子两份子弹,妹子离开了\n"),zd=zd-2;
            if(vv==0) ch=_getch();
        }
        if(x==4)
        {
            if(zd<1)
            {
                Slowsay("子弹不足\n");
                continue;
            }
            zd=zd-1;
            Slowsay("你一枪杀死了妹子,并从她的尸体上找到了4份食物\n");
            sw=sw+4;
            mzhg=-1;
            if(swx==2) Slowsay("你吃掉了妹子的尸体,真是人间佳肴!\n"),mzhg=-10086;
        }
        if(swx==2&&x!=4) Slowsay("你看着妹子的背影在心中狂笑\n"),mzhg=10086;
        break;
    }}
    Slowsay("又过了一夜,你的食物-2\n");
    if(vv==0) ch=_getch();
    qp();
    sw=sw-2;
    if(sw<0)
    {
        esl();
        return 0; 
    }
    if(mzhg==1) Slowsay("那个妹子又来找到了你,并邀请你加入他们的幸存者基地\n");
    else Slowsay("你在附近发现了一个幸存者基地\n");
    if(swx!=2){
    Slowsay("在前往基地的途中,你遇到了丧尸\n");
    Slowsay("你且战且退,大量丧尸把你逼进了一家商店\n");
    Slowsay("门口的丧尸越来越多,你选择\n");
    Slowsay("1.杀出去\n");
    Slowsay("2.守在这\n");
    while(true)
    {
        x=read();
        if(x<1||x>2)
        {
            Slowsay("请重新输入\n");
            continue;
        }
        if(x==1)
        {
            int res=0;
            if(mzhg>0)
                res=1;
            else res=3;
            if(zd<res)
            {
                mzd();
                return 0;
            }
            zd=zd-res;
            printf("你消耗了一些子弹冲了出去,子弹-%d\n",res);
            if(mzzd==1&&mp==-1)
            {
                Slowsay("妹子在她杀死的丧尸的尸体上找到了许多物资,子弹+7,食物+3\n");
                zd=zd+7;sw=sw+3;
                mz=1;
                break;
            }
            x=rand()%5;
            if(res==1&&x!=3)
                Slowsay("妹子为了帮你突围,被丧尸咬到,然后自杀了。\n"),mzhg=-1; 
            if(x==3&&res==1)
            {
                td3();
                return 0;
            }
        }
        else
        if(x==2)
        {
            if(zd<5)
            {
                mzd();
                return 0;
            }
            zd=zd-5;
            Slowsay("你守在这家商店里直到杀死了所有找来的丧尸,子弹-5\n"); 
            if(mzhg==1)
            {
                Slowsay("妹子在商店中发现了一把无限子弹的枪,子弹+10086\n");
                zd=10086;
                if(vv==0) ch=_getch();
                Slowsay("但是妹子在翻找货架的时候被沾了丧尸血的货架划伤\n");
                Slowsay("妹子自杀了\n");
                mzhg=-1; 
            }
        }
        break;
    }}
    if(vv==0) ch=_getch();
    qp();
    Slowsay("你来到了这个幸存者基地\n");
    if(mz==10086) {system("cls");Slowsay("人们在一位年轻首领的带领下顽强的与你战斗\n每个人都在尽自己的努力去守卫基地\n哪怕战友们一个个倒下\n哪怕首领被你愤怒的捏爆脑袋\n没有一个人放弃战斗,没有一个人抛弃希望\n\n最后,奇迹出现了\n\n在基地的废墟中,你的尸体沉重的倒下。\n\n");s++;Sleep(1000);return 0;}
    Slowsay("这个基地的首领表示可以用子弹交换你手中的食物\n");
    printf("你还有%d份食物,%d份子弹\n",sw,zd);
    if(vv==0) ch=_getch();
    Slowsay("请输入你需要的子弹数(0-9)\n");
    while(true)
    {
        x=read();
        if(x<0||x>sw)
        {
            Slowsay("请重新输入\n");
            continue;
        }
        sw=sw-x;
        zd=zd+x;
        if(x>=1)
        {
            Slowsay("首领很开心你能提供稀缺的食物,多给了你1份子弹\n");
            zd=zd+2;
        }
        break;
    }
    if(vv==0) ch=_getch();
    qp();
    Slowsay("又过了一天,食物-2");
    sw=sw-2;
    if(sw<0)
    {
        esl();
        return 0;
    }
    if(vv==0) ch=_getch();
    system("cls");
    Slowsay("基地首领希望你加入这个基地\n");
    Sleep(500);
    Slowsay("你的选择是\n");
    Sleep(500);
    system("Color C");
    Slowsay("1.留在这");
    Slowsay("2.离开");
    while(true)
    {
        x=read();
        if(x<1||x>2)
        {
            Slowsay("请重新输入\n");
            continue;
        }
        system("Color F");
        if(swx==2&&x==1){system("cls");Slowsay("在一个月黑风高的夜里,你终于忍不住袭击了营地。\n年轻首领被你梦中封喉。\n人们顽强的与你战斗\n每个人都在尽自己的努力去守卫基地\n没有一个人放弃战斗,没有一个人抛弃希望\n但是他们失败了。\n在基地的废墟中,英雄们的尸体沉重的倒下。\n\n而你狂笑着吞噬着一切。\n\n");Sleep(1000);return 0;}
        else if(x==1)
        {
            if(mzhg>-1) hd2();
            else hd3(); 
            return 0;
        }
        else if(x==2)
        {
            Slowsay("你决定\n");
            Slowsay("1.当天离开\n");
            Slowsay("2.再停留一天\n"); 
            while(true)
            {
                x=read();
                if(x<1||x>2)
                {
                    Slowsay("请重新输入\n");
                    continue;
                }
                if(x==1) break;
                if(x==2)
                {
                      if(vv==0) ch=_getch();
                     qp();
                    Slowsay("这个基地的首领表示可以用子弹交换你手中的食物\n");
                    printf("你还有%d份食物,%d份子弹\n",sw,zd);
                    if(vv==0) ch=_getch();
                    Slowsay("请输入你需要的子弹数\n");
                    while(true)
                    {
                        x=read();
                        if(x<0||x>sw)
                        {
                            Slowsay("请重新输入\n");
                            continue;
                        }
                        sw=sw-x;
                        zd=zd+x;
                        if(x>=3)        
                        {
                            Slowsay("首领很开心你能提供稀缺的食物,多给了你3份子弹\n");
                            zd=zd+3;
                        }
                        break;
                    }
                    sw=sw-2;
                    if(sw<0)
                    {
                        esl();
                        return 0;
                    }
                    Slowsay("又过了一夜,食物-2\n"); 
                }
                break;
            }
            Slowsay("在你离开的时候,一个少年跑了过来。\n");
            Slowsay("他说,他想要和你一起走\n");
            Slowsay("1.带上他\n");
            Slowsay("2.不带他\n");
            while(true)
            {
                x=read();
                if(x<1||x>2)
                {
                    Slowsay("请重新输入\n");
                    continue;
                }
                if(x==2)
                {
                    Slowsay("少年生气的离开了");
                    if(swx!=2) Slowsay(",当他走远了,你才发现\n\n在刚刚的接触中,他偷走了你所有的子弹\n");
                    else Slowsay("\n当你走远后,你才发现,少年一直冷笑着跟在你的身后\n"),sn=1;
                    zd=0;
                }
                if(x==1)
                {
                    Slowsay("你选择上少年一起走\n");
                    Slowsay("少年将他身上带着的一份食物交给了你\n");
                    sw=sw+1;
                    Slowsay("食物消耗+1,少年入队\n");
                    sn=1;
                }
                break;
            }
        }
        break;
    }
    if(vv==0) ch=_getch();
    qp();
    printf("你在路边的一座没人的房子里过了一夜,食物-%d\n",2+sn);
    sw=sw-2-sn;
    if(vv==0) ch=_getch();
    if(sn==1&&swx==2)
    {
        Slowsay("\n1.杀了少年,这时没人可以阻止你!\n");
        Slowsay("2.我决定在少年面前一直隐瞒到底\n");
        x=read();
        if(x==1){Slowsay("少年不见了,难道他发现了......\n\n你一回头,少年咯咯笑着咬住你的脖子\n\n你应该等我虚弱时再下手啊.....\n\n");s++;return 0;}
    }
    if(sw<0)
    {
        esl();
        return 0;
    }
    Slowsay("是否存档?\n");
    Slowsay("1.存档(记录当前进度,只能有一个存档)\n");
    Slowsay("2.不存\n");
    x=read();
    if(x==1)
    {
        cdd=1;
        sw1=sw;
        zd1=zd;
        mp1=mp;
        mz1=mz;
        sn1=sn;
        Slowsay("存档成功");
    }
cddd1:
    qp();
    if(sn==1)
    {
        vv=0;
        Slowsay("今天一早你就被少年叫醒了,\n");
        if(vv==0) ch=_getch();
        Slowsay("他在床底下发现了一箱方便面,食物+8\n");
        sw=sw+8;
        Slowsay("少年向你讨要武器,你决定\n");
        Slowsay("1.把枪给他\n");
        Slowsay("2.把捡到的水管给他\n");
        Slowsay("3.什么都不给他\n");
        while(true)
        {
            x=read();
            if(x<1||x>3)
            {
                Slowsay("请重新输入\n");
                continue;
            }
            if(x==1) gun=0,qiang=2;
            if(x==2) gun=2,qiang=1;
            if(x==3) gun=0,qiang=1;
            break;
        }
    }
    else
    {
        Slowsay("你在冰箱里发现了几包巧克力\n");
        if(vv==0) ch=_getch();
        Slowsay("希望它们还没过期吧,食物+3\n");
        sw=sw+3;
    }
    if(vv==0) ch=_getch();
    Slowsay("今天你们来到了一家大商场\n");
    Slowsay("你决定\n");
    Slowsay("1.独自探索1楼\n");
    Slowsay("2.独自探索2楼\n");
    if(sn==1)
    {
        Slowsay("3.和少年一起探索2楼");
    }
    while(true)
    {
        x=read();
        if(x<1||x>3)
        {
            Slowsay("请重新输入\n");
            continue;
        }
        if(x==1)
        {
            Slowsay("你在一楼发现了一些子弹,子弹+3\n");
            zd=zd+3;
            Slowsay("奇怪的是,一只丧尸都没有看到\n");
            if(vv==0) ch=_getch(); 
            if(sn>0)
            {
                if(qiang==2)
                {
                    Slowsay("当你来到二楼时,发现了一地尸体\n");
                    Slowsay("少年就倒在这尸体中间,他死前手还紧紧握着枪\n");
                    Slowsay("你把枪拿了回来,并在少年的尸体下面发现了一箱压缩饼干\n");
                    Slowsay("食物+10086\n");
                    if(vv==0) ch=_getch();
                    sw=10086;
                    if(sw>10000&&zd>9000) 
                    {
                        td();
                        return 0;
                    }
                    sn=0;
                    qiang=1;
                }
                else
                {
                    Slowsay("当你来到二楼时,发现了少年的尸体\n");
                    if(vv==0) ch=_getch();sn=0;
                    Slowsay("你紧紧握着手中的枪,猛地一回头\n");
                    Slowsay("四周大量的丧尸向你涌来\n");
                    if(vv==0) ch=_getch();
                    zd=zd-5;
                    if(zd<0)
                    {
                        mzd();
                        return 0;
                    }
                    Slowsay("你杀光了这些丧尸,子弹-5\n");
                    if(vv==0) ch=_getch();
                    Slowsay("你在二楼找到了食物,食物+3\n");
                    sw+=3;
                }
            }
        }
        if(x==2)
        {
            Slowsay("你来到了二楼,数之不尽的丧尸忽然从阴影中窜出\n");
            if(qiang==2)
            {
            Slowsay("尽管你没了枪也尽力抵抗,可丧尸的数量实在太多。\n");
                mzd();
                return 0;
            }
            if(vv==0) ch=_getch();
            zd-=5;
            if(zd<0)
            {
            Slowsay("尽管你尽力抵抗,可丧尸的数量实在太多。\n");
                mzd();
                return 0;
            }
            Slowsay("你杀光了这些丧尸,子弹-5\n");
            if(vv==0) ch=_getch();
            Slowsay("你在二楼找到了食物,食物+3\n");
            sw+=3;
            if(sn==1)
            {
                Slowsay("少年在一楼找到了子弹,子弹+3\n");
                zd=zd+3;
            }
        }
        if(x==3&&sn==1)
        {
            system("cls");
            Slowsay("你们来到了二楼\n"); 
            if(vv==0) ch=_getch();
            system("Color C");
            Slowsay("数之不尽的丧尸从阴影中窜出");
            Slowsay("尽管你们尽力抵抗,可丧尸的数量实在太多。");
            if(gun!=2&&qiang!=2)
            {
                Slowsay("没有武器的少年被当场咬死。");
                if(mp==-1&&mz==0)
                {
                    td5();
                    return 0;
                }
                sn=0;   
            }
            Slowsay("其中一只丧尸趁你不注意冲到了你的旁边");
            if(gun==2) Slowsay("就在你要被咬死的时候,少年扔出了手中的水管\n,救下了你");
            else if(qiang!=2)
            {
                zd=zd-3;
                if(zd<0)
                {
                    mzd();
                    return 0;
                }
                Slowsay("你赶忙回头几枪补掉了这只丧尸,子弹-3");
            }
            zd=zd-3;
            if(qiang==2||zd<0)
            {
                system("Color F"); 
                mzd();
                return 0;
            }
            system("Color F"); 
            Slowsay("经过了一番苦战,你们终于战胜了所有丧尸,子弹-3");
            if(vv==0) ch=_getch();
        }
        break;
    }
    if(vv==0) ch=_getch();
    qp();
    if(vv==0) ch=_getch();
    printf("又过了一夜,食物-%d\n",sn+2);
    sw=sw-2-sn;
    if(sw<0)
    {
        esl();
        return 0;
    }
    qp();
    Slowsay("今天在出门的时候\n");
    Slowsay("你遇到了一条流浪狗\n");
    Slowsay("1.用枪打死它\n");
    Slowsay("2.用食物打发它\n");
    while(true)
    {
        x=read();
        if(x<1||x>2)
        {
            Slowsay("请重新输入\n");
            continue;
        }
        if(x==1)
        {
            zd=zd-1;
            if(zd<0)
            {
                bd7();
                return 0;
            }
            Slowsay("你一枪打死了这条狗,子弹-1\n");
            if(sn==0) break;
            Slowsay("在打死了狗之后,你忽然发现少年的脸色不太好\n");
            if(vv==0) ch=_getch();
            Slowsay("原来,在昨天的商场中,少年早就被咬了一口");
            Slowsay("他一直瞒着你,不敢说出来");
            Slowsay("此时,他闻到了血腥味,看到了尸体,已经忍不住,濒临变异了!!");
            Slowsay("你决定\n");
            Slowsay("1.杀了他\n");
            Slowsay("2.不杀他\n");int a3=0;
            if(gjj[4]==1&&zd<4)
            {
                Slowsay("3.安抚他\n");a3=1;
            }
            while(1)
            {
                x=read();
                if(x<1||x>3||(x==3&&a3==0))
                {
                    Slowsay("请重新输入\n");
                    continue;
                }
                if(x==1)
                {
                    if(swx==2)
                    {
                        if(mzhg<-1000) tgg3();
                        else Slowsay("\n“杀我还早的很呢......”\n\n少年咯咯笑着挡下了你所有的攻击\n\n“因为你还不是一个优秀的丧尸......”"),Sleep(1000),mzd();
                        return 0;
                    }
                    if(vv==0) ch=_getch();
                    if(mp==-1&&mz==0)
                    {
                        Slowsay("奇怪的是,你直接秒掉了他。\n");Sleep(1000); 
                        sn=0;
                        td5();
                        return 0;
                    }
                    else if(mp==-1&&mz!=0)
                    {
                        Slowsay("突然,妹子出现了。\n");
                        Slowsay("“放着我来!”,妹子与少年搏斗起来,妹子的力气极大,竟然真的压制住了少年!\n");
                        Slowsay("在你的惊恐目光下,少年的皮肤渐渐变淡,重新变回了“人”!\n");
                        Slowsay("这时,你才注意到少年的声音一直带着点沙哑,如同低吼一般\n");
                        Slowsay("“我没事。”他说。\n");
                    }
                    else
                    {
                    system("Color C");
                    Slowsay("你试着向他开枪,子弹穿过了他的身体\n");
                    Slowsay("你十分惊恐,疯狂地倾泻着手中的弹药\n");
                    Slowsay("“没有用的。”少年咯咯笑着向你走进,\n");
                    Slowsay("而他的伤口却以肉眼可见的速度愈合!\n");
                    Slowsay("怎么可能!怎么可能,怎么可能......\n");
                    system("Color F");
                        mzd();
                        if(zjj[9]==0)
                        {
                            Slowsay("获得线索-----无敌变异!·少年\n");Sleep(1000);
                            zjj[9]=1;
                        }
                        return 0;
                    }
                }
                if(x==2)
                {
                    system("Color C");
                    Slowsay("你看着少年变异\n");
                    Slowsay("奇怪的是,他变异后并没有像其他的丧尸一样,向你扑过来\n");
                    Slowsay("而是躲在墙角瑟瑟发抖\n");
                    Slowsay("你慢慢的走过去\n");
                    Slowsay("就在你走近的时候,少年突然暴起\n");
                    Slowsay("狠狠地咬住了你的手臂\n");
                    Slowsay("你赶忙用枪打死他,可是为时已晚\n");
                    system("Color F");
                    sn=0;
                    if(sw>=6){td2();return 0;}
                    else{bd6();return 0;}
                }
                break;
            }
            if(x==3&&gjj[4]==1)
            {
                gjj[5]=1;
                hd5();
                return 0;
            }
        }
        if(x==2)
        {
            sw=sw-1;
            if(sw<0){bd7();return 0;}
            Slowsay("你用一份食物引开了这条狗,食物-1\n");
        }
        break;
    }if(swx==2)
    {system("cls");if(sn==1) Slowsay("少年的变异的很突然,但身为丧尸的你没有受到攻击\n你们结伴一起狩猎着人类\n只是,与少年相处的越久,你就越发感受到他的强大。\n你只好收起杀心跟在他后面。\n应该是这样吗?"),Sleep(1000),Slowsay("\n\n“我错过了机会”\n"); 
    else Slowsay("少年死后,你无聊的屠杀着一切,\n在接下来的几天里,你轻松的杀掉了城中所有的生物\n之后,你只能天天游荡,无助的面对着这座死城\n应该是这样吗?\n"),Sleep(1000),Slowsay("\n“我走错了路。”");
    Sleep(1000);return 0;} 
    if(vv==0) ch=_getch();
    if(sn==1&&sw>=4&&gun==2&&zd>5){hd4();return 0;}
    if(sn==1)
    {
        Slowsay("又过了一天,食物-2\n");
        sw=sw-2;
        if(sw<0){esl();return 0;}
        if(vv==0) ch=_getch();
            system("cls");
        Slowsay("今天早上,你发现少年不见了\n");
        Slowsay("你决定\n");
        Slowsay("1.去寻找他\n");
        Slowsay("2.不去找他\n");
        while(true)
        {
            x=read();
            if(x<1||x>2)
            {
                Slowsay("请重新输入\n");
                continue;
            } 
            if(x==1)
            {
            system("cls");qp(); 
                Slowsay("你通过蛛丝马迹一路追踪,来到了一座大厦前\n");
                Slowsay("在路上,你遭遇了丧尸,子弹-2\n");
                zd=zd-2;
                if(zd<0)
                {
                    mzd();
                    return 0;   
                }
                Slowsay("你决定\n");
                system("Color C");
                Slowsay("1.破门!冲入大厦\n");
                Slowsay("2.悄悄开门,潜入大厦\n");
                Slowsay("3.寻找其它的入口\n");
                while(true)
                {
                    x=read();
                    if(x<1||x>3)
                    {
                        Slowsay("请重新输入\n");
                        continue;
                    }
                    if(x==1)
                    {
                        int xx=rand()%4; 
                        Slowsay("你进入大厦才发现这里几乎充满了丧尸!");
                        Slowsay("丧尸似乎被你惊醒,如同海啸般向你涌来!");
                        system("Color F");
                        if(zd>6) Slowsay("怎么回事!!你一路且战且退来到了地下室"),zd-=6,bd9();
                        else if(xx==0) Slowsay("幸运的是,你退后的脚碰到了地下室的暗门,Thanks God!"),bd9();
                        else Sleep(1000),mzd();
                        return 0;
                    }
                    if(x==2)
                    {
                        int xx=rand()%6;
                        Slowsay("你进入大厦才发现这里几乎充满了丧尸!");
                        system("Color F");
                        Slowsay("怎么回事!!你害怕得定在原地,奇怪的是它们并没有向你扑来,只是疲惫的看着你。");
                        Slowsay("定睛一看,丧尸们个个躯体畸形,断手断脚者不乏其数");
                        Slowsay("再一看,这些丧尸们被奇怪的机器束缚,不得踏出大厦一步。");
                        Slowsay("你大着胆子靠近一个丧尸,发现它的头上有着模糊的字迹");
                        Slowsay("【21.7.29,失败】");Sleep(1000); 
                        Slowsay("瞬间,那个丧尸惊恐地捂住头上的字,发出奇怪的吼声!");
                        Slowsay("其它丧尸如同被激怒,海啸般向你涌来!");
                        if(zd>6) Slowsay("怎么回事!!你一路且战且退来到了地下室"),zd-=6,bd9();
                        else if(xx==0) Slowsay("幸运的是,你退后的脚碰到了地下室的暗门,Thanks God!"),bd9();
                        else Sleep(1000),mzd();
                        return 0;
                    }
                    if(x==3)
                    {
                        system("Color F");
                        Slowsay("你走入刚刚的大街,你的老相识开心地吐着舌头看着你");
                        Slowsay("......后面跟着它的一堆朋友......");
                        Slowsay("......你被讨食的狗狗们追着跑过了两条大街,不停地扔出食物来减缓它们的攻势......");
                        if(sw>5) Slowsay("终于,它们全部满足的趴倒在了地上。\n领头狗如同可以听懂人话一样,将你带到了一个隐蔽的地道口前......"),sw-=5,bd9();
                        else bd7();
                        return 0;
                    }
                    break;
                }
            }
            break;
        }
    }
    qp();
    if(vv==0) ch=_getch();
    if(mz==1&&sn==1&&swx==0){td6();return 0;}
    Slowsay("又过了一天,食物-2");
    sw=sw-2;if(sw<0){esl();return 0;}
    Sleep(500);
    Slowsay("遭遇丧尸,子弹-3");
    zd=zd-3;if(zd<0){mzd();return 0;}   
    Sleep(500);
    Slowsay("又过了一天,食物-2");
    sw=sw-2;if(sw<0){esl();return 0;}
    Sleep(500);
    Slowsay("遭遇丧尸,子弹-2");
    zd=zd-2;if(zd<0){mzd();return 0;}   
    Sleep(500);
    if(ccg==1){tg(); return 0;}
    else{bd10();return 0;}
}
int main()
{
    srand(time(0));
    Read();
    int go=0;
    while(tongguan1!=2)
    {
        int v=0;
        char ch;
        mp=0;
        if(go==1){
        Sleep(1000);
        if(vv==0) ch=_getch();
        system("cls");Save();}go=1;
        Slowsay("1.进行游戏\n");
        Slowsay("2.查看成就\n");
        Slowsay("3.查看线索(获得全部线索后通关游戏)\n");
        Slowsay("4.获得一条随机的提示\n");
        Slowsay("5.游戏相关\n");
        Slowsay("6.极速模式\n");
        Slowsay("7.退出游戏\n");
        x=read();
        if(x==1)
        { 
            sswj();
            if(s>50&&swhm==0)
            {
                swhm=1;
                Slowsay("又死了啊......");
                Slowsay("这已经是第几次了呢......");
                Slowsay("一个柔和的声音从耳边传来");
                Slowsay("或许早该放弃了");Sleep(1000);
                Slowsay("获得线索-----计数者");
            }
        } 
        if(x==2)
        {
            int v1=0;
            system("cls");
            if(tongguan1==2) Slowsay("\n已通关终极剧情\n");
            if(tongguan1==1) Slowsay("\n已通关进阶剧情(进阶不重要!终极才是王道!)\n");
            if(tongguan==1) Slowsay("\n已通关基础剧情\n");
            int v=0;
            Slowsay("\nHappy Bnd 达成\n");
            if(gjj[1]==1) Slowsay("苟到最后\n");else Slowsay("未达成\n"); 
            if(gjj[2]==1) Slowsay("神仙眷侣\n");else Slowsay("未达成\n"); 
            if(gjj[3]==1) Slowsay("英雄不朽\n");else Slowsay("未达成\n"); 
            if(gjj[4]==1) Slowsay("认清自己\n");else Slowsay("未达成\n"); 
            if(gjj[5]==1) Slowsay("跨越物种的gay\n");else Slowsay("未达成\n"); 
            Slowsay("\n");
            Slowsay("Bad End 达成(共15个)\n");
            for(int i=1;i<=17;i++)
                if(hjj[i]==1)
                    printf("%d ",i),v1++;
            if(v1>=15&&swx==1)
                swx=2,cdd=0,Swx();
            Slowsay("\n");
            printf("当前死亡次数:%d",s);
            Slowsay("\n");
            Slowsay("True End 达成\n");
            if(zjj[1]==1) Slowsay("拯救世界\n");else Slowsay("未达成\n");   
            if(zjj[3]==1) Slowsay("认清?·妹子\n");else Slowsay("未达成\n");  
            if(zjj[2]==1) Slowsay("认清!·本我\n"); else Slowsay("未达成\n");  
            if(zjj[4]==1) Slowsay("验证失败\n");else Slowsay("未达成\n");  
            if(zjj[5]==1) Slowsay("死亡姗姗来迟\n");else Slowsay("未达成\n");  
            Slowsay("\n");
            if(vv==0) char ch=_getch();
        }
        if(x==3)
        {
            system("cls");
            int v=0;
            Slowsay("基础线索\n");
            if(zjj[1]==1) Slowsay("    奇特的枪与饼干\n"),v++;else Slowsay("    ?????\n");
            if(zjj[2]==1) Slowsay("    延迟变异?·少年\n"),v++;else Slowsay("    ?????\n");
            if(zjj[9]==1) Slowsay("    无敌变异!·少年\n"),v++;else Slowsay("    ?????\n");
            if(zjj[3]==1) Slowsay("    不变异?  ·妹子\n"),v++; else Slowsay("    ?????\n");
            if(hjj[8]==1) Slowsay("    早已变异!·妹子\n"),v++; else Slowsay("    ?????\n");
            if(hjj[9]==1) Slowsay("    实验体·1号和2号\n"),v++; else Slowsay("    ?????\n");
            if(v>=6&&ccg==0)
            {
                Sleep(2000);
                cdd=0;cg();ccg=1;
            }
            Slowsay("进阶线索\n");
            if(swhm==1) Slowsay("    计数者\n"),v++; else Slowsay("    ?????\n");
            if(zbbj==1) Slowsay("    乱码,废弃与失联\n"),v++; else Slowsay("    ?????\n");
            if(by==1) Slowsay("    早已变异!·本我\n"),v++; else Slowsay("    ?????\n");
            if(hjj[15]==1) Slowsay("    伪造......\n"),v++; else Slowsay("    ?????\n"); 
            if(zjj[5]==1) Slowsay("    少年之死\n"),v++; else Slowsay("    ?????\n");
            if(hjj[14]==1) Slowsay("    外面的世界\n"),v++; else Slowsay("    ?????\n");
            if(v>=12&&qxs==0)
            {
                Sleep(2000);
                cg2();cdd=0;Sleep(1000);
                Slowsay("-------- 游戏进阶结局已解锁(快前往达成吧)--------");qxs=1;
            }
            if(vv==0) ch=_getch();
        } 
        if(x==4)
        {
            system("cls");
            int y=rand()%3;
            if(y==0){Slowsay("【稀有提示】"); x=rand()%14;
            if(x==0) Slowsay("【稀有结局提示】 试试 0 10 开局!");
            else if(x==1) Slowsay("【稀有结局提示】 最好的爱总要先错过~");
            else if(x==2) Slowsay("【剧情提示】 二周目:少年变异后有新剧情!");
            else if(x==3) Slowsay("【剧情提示】 不变异的妹子总有一天会在营地暴露!再来一遍!");
            else if(x==4) Slowsay("【剧情提示】 弹尽粮绝之时,变异的少年会记起上辈子的爱情!再来一遍!");
            else if(x==5) Slowsay("【剧情提示】 第二天,和首领换更多子弹,他会更开心!");
            else if(x==6) Slowsay("【剧情提示】 在家里等待疯掉?再来一遍!");
            else if(x==7) Slowsay("【剧情提示】 二周目:再次进入实验室吧!");
            else if(x==8) Slowsay("【剧情提示】 二周目:神枪手妹子...");
            else if(x==9) Slowsay("【剧情提示】 二周目:不带子弹!等待救援!");
            else if(x==10) Slowsay("【通关方式】 二周目:在获得所有线索后前往“外面的世界”。");
            else if(x==11) Slowsay("【通关方式】 三周目:(都提示这么明显了)吃掉妹子,杀掉少年。");
            else if(x==12) Slowsay("【线索提示】 死亡很多次后......(有个地方可以刷死亡次数)");
            else Slowsay("【???】 666666,5201314(会错过一些线索与结局!)");
            }else{x=rand()%14;
            if(x==0) Slowsay("加了好感后,妹子有几率不死");
            else if(x==1) Slowsay("少年喜欢子弹");
            else if(x==2) Slowsay("乱走有时可以获得子弹");
            else if(x==3) Slowsay("冲进去活下来几率更大");
            else if(x==4) Slowsay("分头探商店可以获得更多资源");
            else if(x==5) Slowsay("有一些结局只能通关后触发");
            else if(x==6) Slowsay("有一些结局要脸好才能触发");
            else if(x==7) Slowsay("有一些结局要通其他结局后才能触发");
            else if(x==8) Slowsay("大多数时候,你认为一个地方没有好结局只是因为你食物/子弹不够"); 
            else if(x==9) Slowsay("绝大多数的线索来自结局");
            else if(x==10) Slowsay("三大重叠剧情线路:普通,进阶,尸王线");
            else if(x==11) Slowsay("本游戏是一个剧情严谨,人物丰满,细思极恐的好!游!戏!~");
            else if(x==12) Slowsay("事实证明剧情游戏是最难调的!有Bug一定要去博客说出来啊!(luogu.com.cn/blog/z1e2k3i4/)");
            else Slowsay("完成目标后,需要在线索,成就界面开启新剧情哦");
            }
            if(vv==0) char ch=_getch();continue;
        }
        if(x==5)
        {
            system("cls");
            Slowsay("作者:小小小苗\n");
            Slowsay("改错,调试,搬运,游玩:胎神大大(就是在游戏论坛翻到的宝藏而已emm......)\n");
        }
        if(x==6)
        {
            system("cls");
            if(vv==0) vv=1,Slowsay("已开启极速模式");
            else vv=0,Slowsay("已关闭极速模式");
        }
        if(x==7)
        {
            system("cls");
            Slowsay("想退?死吧!!");s++; 
        }
    }
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
    Slowsay("Thanks for playing......");Sleep(1000); 
    Slowsay("您已通关,我亲爱的 终极丧尸,成功者,杀人机器,你还没杀够吗?......");system("Color C"); 
}

<2021> 角色躲避胎

#include<bits/stdc++.h>
#include<windows.h>
#include<stdio.h>
#include<conio.h>
#include<time.h>
using namespace std;
typedef BOOL (WINAPI *PROCSETCONSOLEFONT)(HANDLE, DWORD);
PROCSETCONSOLEFONT SetConsoleFont;
POINT Windowpos(){POINT pt;GetCursorPos(&pt);HWND h=GetForegroundWindow();ScreenToClient(h,&pt);
pt.x=(pt.x+4)/8+0.5;pt.y=pt.y/16+0.5;//鼠标矫正此处 
swap(pt.x,pt.y);return pt;}
int mouse;POINT pt;
void Print(int a){HMODULE hKernel32 = GetModuleHandle("kernel32");SetConsoleFont = (PROCSETCONSOLEFONT)GetProcAddress(hKernel32,"SetConsoleFont");SetConsoleFont(GetStdHandle(STD_OUTPUT_HANDLE),a);}
int ti(float a) {return ((int)(a*10+5))/10;}
void Setpos(float x,float y){COORD pos;pos.X=ti(y*4)/2;pos.Y=ti(x+2);SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}
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),BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE);
                  if(a==-8) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_RED);if(a==1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);
                  if(a==-11) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_GREEN|BACKGROUND_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),BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN);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==-6) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_BLUE);
                  if(a==7) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
                  if(a==8) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);if(a==9) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_GREEN|BACKGROUND_BLUE);if(a==10) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_BLUE);if(a==11) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE);if(a==12) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN);if(a==13) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY);if(a==14) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN|FOREGROUND_BLUE);}
void Slow(char *p,int a) {while(1){if(*p!=0) printf("%c",*p++);else break;Sleep(a);}} 

int to(float a) {if(a>0) return int(a+0.5);else if(a<0) return int(-a-0.5);if(a==0) return 0;}
float Sin(int a) {return sin(3.1416*a/180);}float Cos(int a) {return cos(3.1416*a/180);}
float Sin0(int a) {return sin(3.1416*a);}float Cos0(int a) {return cos(3.1416*a);}//多少pai 
//------------------------------------杂七杂八的图像函数。。。------------------------------------
int m[51][101],n[51][101],s[51][101];speacial
int bl,br,Life,level,T,Turnx,Turny,End,Lev,people,unkillT,unkillTmax,Tempty;
float X,X2,Y,Y2,speed=30,Attack=1,Anc,Anv,Anb,cMin,vMin,bMin,skillC,skillV,skillB,Blood,Bloodmax,EXP,EXPmax;

int D[2][5]={{0,1,-1,0,0},{0,0,0,-1,1}};//上下右左 
float Sx=18,Sy=60,Svx=0,Svy=0,Stx,Sty,Sr=0,Sm=0,Svmax=2,Srmax=5;
int Sleep_1,Sleep_1max,Sleep_2,Sleep_3;
int Bean,BeanBoo,BeanBoom,TimeStop,Thunder,ThunderTime,ThunderTurn,Crab;

struct bullet{float x,y,vx,vy,fx1,fx2,fx3;int w,t,k,l,ex1,ex2,ex3;//what,time,kill,life;
float maxsize,angle,maxangle,minangle,xr,ybig,ysmall,v; 
int turn,staytime,num,source;
}B[1000001];//改时别忘了Delete! 
void Delete_B(int i) {
B[i].x=B[i].y=B[i].vx=B[i].vy=B[i].fx1=B[i].fx2=B[i].fx3=B[i].w=B[i].t=B[i].k=B[i].l=B[i].ex1=B[i].ex2=B[i].ex3=0;
B[i].maxsize=B[i].angle=B[i].maxangle=B[i].minangle=B[i].xr=B[i].ybig=B[i].ysmall=B[i].v=B[i].turn=B[i].staytime=B[i].num=B[i].source=0;}
void S(float x,float y){int i=(int)x,j=(int)y;Setpos(i,j/2.0);printf("a");}
void C(float x,float y){int i=(int)x,j=(int)y;Setpos(i,j/2.0);//直接输出该点 
    if(n[i][j]==0) printf(" ");
    if(n[i][j]==1) Color(-1),printf(" ");
    //以下无伤 
    if(n[i][j]==-1) Color(-8),printf(" ");
    if(n[i][j]==-2) Color(-11),printf(" ");
    if(n[i][j]==-3) Color(-5),printf(" ");
    Color(0);
}
void Map(int a){if(a==1){for(register int i=1;i<=50;i++)for(register int j=1;j<=100;j++){if(n[i][j]!=m[i][j]){C(i,j);}}for(register int i=1;i<=50;i++)for(register int j=1;j<=100;j++){m[i][j]=n[i][j];}}}
//Map1:更新地图 
void N(float x,float y,int w){int xx=(int)x,yy=(int)y;//放置点在地图上
if(xx>40||yy>80||xx<1||yy<1) return;
else if(w<0&&n[xx][yy]>=1) return;//白色盖住红色 
else n[xx][yy]=w;}
void Die(){
    system("cls");system("color 0F");
    Slow("You Die !",50);
    system("color 3B");Sleep(10);system("cls");system("color 0F");}
void Win(){
    system("cls");
    for(register int i=0;i<=3;i++)
    {printf("You Win !");
        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);
    }printf("   好敷衍啊...");Lev=1;system("color 0F");Sleep(5000);system("cls");
}
void Circle(int x,int y,int r,int num,int start,int whatnumber,int source){if(r<0) return;if(r==0) num=1;int next=360/num;for(register int i=0;i<num;i++){br++;
    B[br].w=3;B[br].staytime=3;if(whatnumber==0) whatnumber=1;B[br].num=whatnumber;B[br].source=source;
    B[br].t=0;B[br].l=1;B[br].x=x+Sin(i*next+start)*r;B[br].y=y+2*Cos(i*next+start)*r;}}
void Rock_Circle(float x0,float y0,float xr,float ybig,int staytime,int source,int num){
    if(xr<0) return; 
for(register int i=x0-xr;i<=x0+xr;i++){float Ay=ybig*2*sqrt(xr*xr-(i-x0)*(i-x0));for(register float j=y0-Ay;j<y0+Ay;j++){br++;B[br].w=3;B[br].staytime=staytime;B[br].t=0;B[br].l=1;B[br].x=i;B[br].y=to(j);B[br].staytime=staytime;B[br].num=num;
if(num==-3) B[br].num=-2,B[br].ex2=1;
B[br].source=source;B[br].ex1=B[B[br].source].ex1;}}}
void Rock_line(float x0,float y0,float x,float y,int source){
    float Ax=x-x0,Ay=y-y0,R=sqrt(Ax*Ax+Ay*Ay);
    bool yy=0;
    if(Ax<0) swap(x,x0),swap(y,y0),Ax*=-1,Ay*=-1;if(Ay<0) yy=1;
    float ax=Ax/R*1.0,ay=Ay/R*1.0,j=y0,i=x0;
    while(i<=x&&((j<=y&&yy==0)||(j>=y&&yy==1)))
    {
        br++;B[br].w=3;B[br].t=0;B[br].l=1;B[br].x=to(i);B[br].y=to(j);
        B[br].staytime=to(R);B[br].source=source;B[br].num=B[source].num;
        if(source==-2) B[br].source=0,B[br].num=-2;
        i+=ax;j+=ay;
    }
}
void Circle_bomb(int x,int y,int number,int start,float speed,int source,int num){int next=360/number;for(register int i=0;i<number;i++){br++;B[br].w=2;B[br].t=0;B[br].l=1;B[br].source=source;B[br].num=num;
    B[br].vx=Sin(i*next+start)*speed;B[br].x=x-B[br].vx;
    B[br].vy=2*Cos(i*next+start)*speed;B[br].y=y-B[br].vy;
    }}
void Rand_put_Knife(int turn){
    br++;
B[br].w=1;
B[br].t=0;B[br].l=1;
B[br].x=X+rand()%10-5;
B[br].y=1;
B[br].staytime=3;
B[br].turn=turn;
B[br].angle=0+180*turn;
B[br].maxangle=180;B[br].minangle=0;
B[br].v=7;
if(turn==1) B[br].v*=-1;
B[br].ybig=(rand()%25)/10.0+4;//3 导轨扁度 2为圆 
B[br].ysmall=0.01;// ybig* ysmall=刀光横宽倍数  0.25为圆 
B[br].maxsize=0.01;//刀光纵宽
B[br].xr=(rand()%5-2+(Y-B[br].y))/B[br].ybig*1.0;//导轨大小 
}
void Put_Round_Bullet(int ex,float v){//1:反伤 
for(register int i=0;i<=v*4;i+=5) {br++;B[br].w=5;B[br].t=0;B[br].l=1;B[br].x=X;B[br].y=Y;B[br].angle=i+110;B[br].maxangle=600;
B[br].v=60-(int)v;
B[br].staytime=3;B[br].xr=3+v/10.0;
if(ex==1) B[br].ex1=1;
}if(v>=27)
for(register int i=0;i<=v*4;i+=5) {br++;B[br].w=5;B[br].t=0;B[br].l=1;B[br].x=X;B[br].y=Y;B[br].angle=i+110;B[br].maxangle=600;
B[br].v=60-(int)v;
B[br].staytime=3;B[br].xr=4+v/10.0;
if(ex==1) B[br].ex1=1;
}
}
void Rand_put_Bullet(){
    br++;
B[br].w=2;
B[br].t=0;B[br].l=1;
B[br].x=rand()%40;
B[br].y=1;
B[br].vy=(rand()%25+25)/15.0;
}
void put_Bullet(float x,float y,float vx,float vy,int num){
    vx/=2.0;
if(vy!=0) {br++;B[br].w=2;B[br].t=0;B[br].l=1;B[br].x=x;B[br].y=y-1;B[br].vx=vx;B[br].vy=vy;B[br].num=num;if(num==-4) num=-2,B[br].maxsize=5;}
br++;B[br].w=2;B[br].t=0;B[br].l=1;B[br].x=x;B[br].y=y;B[br].vx=vx;B[br].vy=vy;B[br].num=num;if(num==-4) num=-2,B[br].maxsize=5;}
void Rand_sin_Bullet(){
    br++;
B[br].w=6;
B[br].t=0;B[br].l=1;
B[br].x=rand()%40;
B[br].y=1;
B[br].vy=(rand()%25+25)/15.0;B[br].staytime=10;
B[br].angle=0;B[br].xr=3;B[br].v=(rand()%125+25)/2.0;
}
void Rand_back_Bullet(){
    br++;
B[br].w=7;
B[br].t=0;B[br].l=1;
B[br].x=rand()%40;
B[br].y=1;
B[br].ybig=80-(rand()%5)/2.0;
}
void Rand_brouce_Bullet(){//ex2:弹跳数 
    br++;
B[br].w=8;
B[br].t=0;B[br].l=1;
B[br].x=rand()%40;
B[br].y=1;
B[br].vy=(rand()%25+25)/15.0;
B[br].vx=(rand()%50-25)/15.0;
B[br].xr=(rand()%15)/10.0+1.5;
B[br].ex2=3;
}
void Put_brouce_Bullet(int a,float x,float y,float vx,float vy,float ex2){
    vy*=2;
if(a==0) {br++;B[br].w=8;B[br].t=0;B[br].l=1;B[br].x=x;B[br].y=y;B[br].vx=vx;B[br].vy=vy;B[br].xr=1.5;B[br].num=-3;B[br].ex2=ex2;}
if(a==1) Put_brouce_Bullet(0,X,Y,0,-1.5,0);
if(a==2) Put_brouce_Bullet(0,X,Y,0,-2,5),Put_brouce_Bullet(0,X,Y,0,2,5),Put_brouce_Bullet(0,X,Y,-2,0,5),Put_brouce_Bullet(0,X,Y,2,0,5),Put_brouce_Bullet(0,X,Y,-1.414,1.414,5),Put_brouce_Bullet(0,X,Y,-1.414,-1.414,5),Put_brouce_Bullet(0,X,Y,1.414,1.414,5),Put_brouce_Bullet(0,X,Y,1.414,-1.414,5);
if(a==3) for(int i=1;i<=1;i++) Put_brouce_Bullet(0,X+2.5-rand()%50/10,Y+5-rand()%100/10,0,-1-rand()%25/10,0);
}
void Hurt(int x,int y,int ex){
    br++;
B[br].w=4;
B[br].t=0;B[br].l=1;
B[br].x=x;
B[br].y=y;
if(ex==1) B[br].staytime=3,B[br].v=1,B[br].num=-1;//伤 
if(ex==2) B[br].staytime=5,B[br].v=5,B[br].num=-3;//清 
}
void Level_Bullet(){
    if(T<=50&&T%5==0) Rand_put_Bullet();else if(T<=100) return;
    else if(T<=150&&T%5==0) Rand_put_Knife(T%2);else if(T<=200) return;
    else if(T<=250&&T%7==0) Rand_sin_Bullet();else if(T<=300) return;
    else if(T<=350&&T%7==0) Circle_bomb(20,40,15,T%15,2,0,1);else if(T<=400) return;
    else if(T<=450&&T%7==0) Rand_back_Bullet();else if(T<=500) return;
    else if(T<=550&&T%10==0) Rand_brouce_Bullet();else if(T<=600) return;
    else if(T<=1000){if(T%5==0) Rand_put_Bullet();if(T%21==0) Rand_put_Knife(T%2);if(T%39==0) Rand_sin_Bullet();if(T%90==0) Circle_bomb(20,40,15,T%15,2,0,1);if(T%18==0) Rand_back_Bullet();if(T%34==0) Rand_brouce_Bullet();}
    else if(T<=2000){if(T%6==0) Rand_put_Bullet();if(T%17==0) Rand_put_Knife(T%2);if(T%23==0) Rand_sin_Bullet();if(T%60==0) Circle_bomb(20,40,15,T%15,2,0,1);if(T%9==0) Rand_back_Bullet();if(T%28==0) Rand_brouce_Bullet();}
    else {if(T%10==0) Rand_put_Bullet();if(T%13==0) Rand_put_Knife(T%2);if(T%9==0) Rand_sin_Bullet();if(T%40==0) Circle_bomb(20,40,15,T%15,2,0,1);if(T%8==0) Rand_back_Bullet();if(T%27==0) Rand_brouce_Bullet();}
}
void Move_bullet(){
    for(register int i=bl;i<=br;i++){
        if(B[bl].l==0) bl++;
        if(B[i].l==1&&TimeStop==0) B[i].t++;else continue;
    bool del;
        float x=B[i].x,y=B[i].y,vx=B[i].vx,vy=B[i].vy,fx1=B[i].fx1,fx2=B[i].fx2,fx3=B[i].fx3;
        int w=B[i].w,t=B[i].t,k=B[i].k,ex1=B[i].ex1,ex2=B[i].ex2,ex3=B[i].ex3;
    float maxsize=B[i].maxsize,angle=B[i].angle,maxangle=B[i].maxangle,minangle=B[i].minangle,xr=B[i].xr,ybig=B[i].ybig,ysmall=B[i].ysmall,v=B[i].v,turn=B[i].turn;
    int staytime=B[i].staytime,num=B[i].num,source=B[i].source;
        //what,time,kill,life;简化 
//    if(level==1){
        if(Sleep_1==0&&s[to(x)][to(y)]>=1&&s[to(x)][to(y)]<=2&&w==3&&ex1!=1&&num>=0&&num<=1) {Delete_B(source),del=1,Delete_B(i);EXP+=0.3;if(people!=4) Sleep_1=1;
    if(s[to(x)][to(y)]==1){B[i].w=2;B[i].t=0;B[i].l=1;B[i].num=-2;B[i].x=x;B[i].y=y;B[i].vx=to(x)-X;B[i].vy=to(y)-Y;B[i].vx/=2,B[i].vy/=2;B[i].ex1=1;B[i].staytime=2;}
        }

        if(w==1){//maxsize,angle,rx,ybig,v,x0,y0; 
        if(angle>maxangle||angle<minangle) {del=1,Delete_B(i);
        continue;}
        else {int v0=2;float a=angle;
        for(register int A=min(a+v0,a+v+v0);A<max(a+v0,a+v+v0);A+=v0)
        {
        angle+=v0;
        float rsmall=0.1;
        float y1=y+xr*ybig*Sin(angle)*1.0;
        float x1=x+xr*Cos(angle)*1.0;
        float R=1+rsmall*maxsize*Sin(angle)*1.0;
        Rock_Circle((int)x1,(int)y1,to(R),ybig*ysmall,staytime,i,1);
        }if(TimeStop==0) angle=a+v;}
        }//刀 
        if(w==2){
        if(x>40||y>80||x<1||y<1||(abs(vx)<=0.1&&abs(vy)<=0.1)||(people==4&&t>=6&&num<0)) {del=1,Delete_B(i);continue;}
        else {Rock_line(x,y,x+vx,y+vy,i);
        if(ex1==1) vx*=0.9,vy*=0.9;
        if(TimeStop==0) x+=vx,y+=vy;
        }}
        if(w==3) {
        if(ex2==1&&m[to(x)][to(y)]>0&&Sleep_2==0) Delete_B(source),Sleep_2=1;
        if(x>40||y>80||x<1||y<1||t>=staytime||(ex2==1&&m[to(x)][to(y)]>0&&Sleep_2==0)) {del=1,Delete_B(i),N(x,y,0);if(ex1==1||num==-2) s[to(x)][to(y)]=0;continue;}
        if(num!=0) N(x,y,num);
        else N(x,y,1);
        if(ex1==1) s[to(x)][to(y)]=1;else if(num==-2) s[to(x)][to(y)]=2;
        }//残影
        if(w==4){//Hurt
        Circle(x,y,1+t*v,90,1,num,i);if(t>=staytime) del=1,Delete_B(i);
        }
        if(w==5){//Round
        if(angle>maxangle||angle<minangle) {del=1,Delete_B(i);continue;}
        for(register int a=angle;a<angle+v;a+=3){Rock_Circle((int)(X+Sin(a)*xr),(int)(Y+2*Cos(a)*xr),1,0.5,staytime,i,-2);}
        if(TimeStop==0) angle+=v;
        }
        if(w==6){//Sin
        if(x>40||y>80||x<1||y<1) {del=1,Delete_B(i);continue;}
        for(register int a=angle;a<angle+v;a+=3){Rock_Circle((int)(x+Sin(a)*xr),(int)y,1,0.5,staytime,i,1);
        }if(TimeStop==0) angle+=v,x+=vx,y+=vy;
        }
        if(w==7){//Back
        if(x>40||x<1||y<1) {del=1,Delete_B(i);continue;}
        vy=(ybig-y)/10.0+0.2;if(turn==1) vy*=-1;
        if(TimeStop==0) x+=vx,y+=vy;
        if(y>=ybig) turn=1;
        if(turn==0) Rock_line(x,y,x,y+3,i),Rock_line(x-1,y,x-1,y-2,i),Rock_line(x+1,y,x+1,y-2,i);
        else Rock_line(x,y,x,y-3,i),Rock_line(x-1,y,x-1,y+2,i),Rock_line(x+1,y,x+1,y+2,i);
        }
        if(w==8){//Brouce
        if(x>40||y>80||x<1||y<1) {if(x<1) x=1,vx*=-1;if(x>40) x=40,vx*=-1;if(y<1) y=1,vy*=-1;if(y>80) y=80,vy*=-1;ex2--;}
        if(ex2<0) {del=1,Delete_B(i),N(x,y,0);continue;}
        Rock_Circle(x,y,xr,1,2,i,num);
        if(TimeStop==0) x+=vx,y+=vy;
        }
        if(w==9){//Crab_Attack
        vx=rand()%15-7,vy=rand()%29-14;if(ex1==3) vx=rand()%11-5,vy=rand()%11-5;if(ex1==2) vx=rand()%5+2;
        if(TimeStop==0) {float xx=fmax(fmin(x+vx,39),1),yy=fmax(fmin(y+vy,80),1);Rock_line(x,y,xx,yy,-2);x=xx,y=yy;
        if(ex1==3) X=to(x),Y=to(y),unkillT=2,Crab=1;}
        if(x>=39||y>=80||x<=1||y<=1) {del=1,Delete_B(i);if(ex1==3) Crab=2;continue;}
        }
        //    }
    if(del==0){//事实上不用,有continue了 
        B[i].x=x,B[i].y=y,B[i].vx=vx,B[i].vy=vy;B[i].fx1=fx1,B[i].fx2=fx2,B[i].fx3=fx3;
        B[i].w=w,B[i].t=t,B[i].k=k;B[i].ex1=ex1,B[i].ex2=ex2,B[i].ex3=ex3;

    B[i].maxsize=maxsize,B[i].angle=angle,B[i].maxangle=maxangle,B[i].minangle=minangle,B[i].xr=xr,B[i].ybig=ybig,B[i].ysmall=ysmall,B[i].v=v,B[i].turn=turn;
    B[i].staytime=staytime,B[i].num=num,B[i].source=source;
    }//回复 dd
      }
    if(bl>br) bl=br=0,memset(B,0,sizeof(B));
}
void Scissor(){
        if(Stx!=0&&Svx>=0) Svx=max(Svx/2+Stx/10,Svx+Stx/20);
        else if(Stx!=0&&Svx<0) Svx*=-1,Stx*=-1,Svx=max(Svx/2+Stx/10,Svx+Stx/20),Svx*=-1;
        else Svx*=0.9;
        if(Sty!=0&&Svy>=0) Svy=max(Svy/2+Sty/10,Svy+Sty/20);
        else if(Sty!=0&&Svy<0) Svy*=-1,Sty*=-1,Svy=max(Svy/2+Sty/10,Svy+Sty/20),Svy*=-1;
        else Svy*=0.9;
        Svx=max(-Svmax,min(Svmax,Svx));Svy=max(-Svmax,min(Svmax,Svy));
        Sx+=Svx*1.8,Sy+=Svy*1.8;
        Srmax=fmin(1+1.7*sqrt((Svx*Svx)+(Svy*Svy)),2+sqrt((Svx*Svx)+(Svy*Svy)));
        if(Sx<1) Sx=1,Svx*=-0.6;
        if(Sx>39) Sx=39,Svx*=-0.6;
        if(Sy<1) Sy=1,Svy*=-0.6;
        if(Sy>80) Sy=80,Svy*=-0.6;

        Sr=fmax(0,Sr-0.03);//摩擦 
        Rock_Circle(Sx,Sy,1+Sr,1,3,0,-2);
}
void Thunder_step(int x0,int y0,float l,int tx,int ty){
    int tt=tx+ty*4,e=0;
    for(register float i=X-3;i<=X+1;i++) for(register float j=Y-8;j<=Y+8;j++) C(i,j);
    if(X<=1||X>=39||Y<=1||Y>=80) e=1;
    X+=l*tx;Y+=2*l*ty;unkillT=2;
    if((X<1||X>39||Y<1||Y>80)&&e==1) {X=x0,Y=y0;return;}
    if(Thunder>0&&tt!=ThunderTurn&&tt!=0) Thunder--,ThunderTurn=tt;
    X=max(min((int)X,39),1),Y=max(min((int)Y,80),1);
    Rock_line(x0,y0,X,Y,-2);
}
void Crab_Attack(int x,int y,int a){
    br++;
B[br].w=9;
B[br].t=0;B[br].l=1;
B[br].x=x;
B[br].y=y;
B[br].ex1=a;
}
void Start_level(){level=1;
    system("cls"); 
Slow("  Ready ?! .................. Start !     ",50);
    memset(B,0,sizeof(B));memset(m,0,sizeof(m));memset(n,0,sizeof(n));memset(s,0,sizeof(s));
    bl=br=0;
    X=20,Y=70;
    T=0;Life=1;Blood=Bloodmax;unkillTmax=2;Tempty=1000;
    int an,An,kill,Stop;Turnx=1;Anc=Anv=Anb=unkillT=0;
    while(Life==1&&Lev<10)
    {
        T++;an=0;if(End>0) End--;
        Sleep_1=Sleep_2=0;
        if(GetAsyncKeyState(VK_UP)&0x8000) Turnx=1,an=1;
        else if(GetAsyncKeyState(VK_DOWN)&0x8000) Turnx=2,an=1;
        else Turnx=0;
        if(GetAsyncKeyState(VK_RIGHT)&0x8000) Turny=3,an=1;
        else if(GetAsyncKeyState(VK_LEFT)&0x8000) Turny=4,an=1;
        else Turny=0;
        if(an==1) An++;if(an==0&&An>0) An=0,Turnx=Turny=0,an=1;

    if(people==1) {   if(GetAsyncKeyState(67)&0x8000) {if(Anc==0) Anc=1;Anc=min(9.9,Anc+0.05);}else{if(Anc<0) Anc+=0.02;if(Anc>-0.5&&Anc<0.5) Anc=0,Setpos(X-2,Y/2-2),printf("   ");if(Anc>0) {int cy=Turny;if(Turnx==0&&Turny==0) cy=3;put_Bullet(X,Y,D[0][Turnx]*(Anc+2),D[1][cy]*(Anc+2),-2);Anc=cMin;}}
        if(GetAsyncKeyState(86)&0x8000) {if(Anv==0) Anv=1;Anv=min(9.9,Anv+0.05);}else{if(Anv<0) Anv+=0.02;if(Anv>-0.5&&Anv<0.5) Anv=0,Setpos(X-2,Y/2),printf("     ");if(Anv>0) {Put_Round_Bullet(1,(int)(20+Anv));Anv=vMin;}}
        if(GetAsyncKeyState(66)&0x8000) {if(Anb==0) Anb=1;Anb=min(9.9,Anb+0.05);}else{if(Anb<0) Anb+=0.02;if(Anb>-0.5&&Anb<0.5) Anb=0,Setpos(X-2,Y/2+2),printf("     ");if(Anb>0) {unkillT=5;int nb=(int)(Anb*3);Circle_bomb(X,Y,(nb+3),rand()%(nb+3),Anc*0.1+2,0,-2);Anb=bMin;}}
    }
    if(people==2) {if(GetAsyncKeyState(87)&0x8000) Stx=-1;else if(GetAsyncKeyState(83)&0x8000) Stx=1;else Stx=0;if(GetAsyncKeyState(68)&0x8000) Sty=1;else if(GetAsyncKeyState(65)&0x8000) Sty=-1;else Sty=0;
        if((GetAsyncKeyState(90)&0x8000)||(GetAsyncKeyState(88)&0x8000)) Sr=min(Sr+1,Srmax);//转速 X
        Scissor();
    }
    if(people==3) {
        if(GetAsyncKeyState(86)&0x8000) {if(Anv==0) Anv=1;Anv=min(9.9,Anv+0.05);}else{if(Anv<0) Anv+=0.02;if(Anv>-0.5&&Anv<0.5) Anv=0,Setpos(X-2,Y/2),printf("     ");if(Anv>0) {BeanBoo=8;Anv=vMin;}}
        if(GetAsyncKeyState(66)&0x8000) {if(Anb==0) Anb=1;Anb=min(9.9,Anb+0.05);}else{if(Anb<0) Anb+=0.02;if(Anb>-0.5&&Anb<0.5) Anb=0,Setpos(X-2,Y/2+2),printf("     ");if(Anb>0) {BeanBoom=30;Anb=bMin;}}
    if(BeanBoom>0) Put_brouce_Bullet(3,0,0,0,0,0),BeanBoom--;
    if(BeanBoo>0) BeanBoo--;if(BeanBoo%6==1) Put_brouce_Bullet(2,0,0,0,0,0);
    if(Bean>0) Bean--;if(Bean<=0) Put_brouce_Bullet(1,0,0,0,0,0),Bean=20;
    }
    if(people==4) {Sleep_3=0;
        if((GetAsyncKeyState(67)&0x8000)||(GetAsyncKeyState(86)&0x8000)){if(Anc==0) Anc=1;Anc=min(9.9,Anc+0.05);
        if(Anc>0&&Sleep_3<=2) {Sleep_3++;put_Bullet(X,Y,-3+rand()%60/10,-4-rand()%10/20,-4);Anc=0;if(TimeStop==0) Anc=cMin;}}else{if(Anc<0) Anc+=0.02;if(Anc>-0.5&&Anc<0.5) Anc=0,Setpos(X-2,Y/2-2),printf("   ");}
        if(GetAsyncKeyState(66)&0x8000) {if(Anb==0) Anb=1;Anb=min(9.9,Anb+0.05);}else{if(Anb<0) Anb+=0.02;if(Anb>-0.5&&Anb<0.5) Anb=0,Setpos(X-2,Y/2+2),printf("     ");
        if(Anb>0) {TimeStop=50;unkillT=50;Anb=bMin;}}if(TimeStop>0) TimeStop--;
    }
    if(people==5) {   if(GetAsyncKeyState(67)&0x8000) {if(Anc==0) Anc=1;Anc=min(9.9,Anc+0.05);}else{if(Anc<0) Anc+=0.02;if(Anc>-0.5&&Anc<0.5) Anc=0,Setpos(X-2,Y/2-2),printf("   ");
    if(Anc>0) {int cy=Turny;if(Turnx==0&&Turny==0) cy=4;Thunder_step(X,Y,3*Anc+4,-D[0][Turnx],-D[1][cy]);Anc=cMin;}}
        if(GetAsyncKeyState(86)&0x8000) {if(Anv==0) Anv=1;Anv=min(9.9,Anv+0.05);}else{if(Anv<0) Anv+=0.02;if(Anv>-0.5&&Anv<0.5) Anv=0,Setpos(X-2,Y/2),printf("     ");if(Anv>0) {Thunder=6;Anv=vMin;}}
        if(GetAsyncKeyState(66)&0x8000) {if(Anb==0) Anb=1;Anb=min(9.9,Anb+0.05);}else{if(Anb<0) Anb+=0.02;if(Anb>-0.5&&Anb<0.5) Anb=0,Setpos(X-2,Y/2+2),printf("     ");if(Anb>0) {ThunderTime=30;Anb=bMin;}}
    if(ThunderTime>0) ThunderTime--;if(an==0) ThunderTurn=0;
    }
    if(people==6) {   if(GetAsyncKeyState(67)&0x8000) {if(Anc==0) Anc=1;Anc=min(9.9,Anc+0.05);}else{if(Anc<0) Anc+=0.02;if(Anc>-0.5&&Anc<0.5) Anc=0,Setpos(X-2,Y/2-2),printf("   ");
    if(Anc>0) {Crab_Attack(X,Y,1),Anc=cMin;}}
        if(GetAsyncKeyState(86)&0x8000) {if(Anv==0) Anv=1;Anv=min(9.9,Anv+0.05);}else{if(Anv<0) Anv+=0.02;if(Anv>-0.5&&Anv<0.5) Anv=0,Setpos(X-2,Y/2),printf("     ");if(Anv>0) {Crab_Attack(1,rand()%59+10,2);Anv=vMin;}}
        if(GetAsyncKeyState(66)&0x8000) {if(Anb==0) Anb=1;Anb=min(9.9,Anb+0.05);}else{if(Anb<0) Anb+=0.02;if(Anb>-0.5&&Anb<0.5) Anb=0,Setpos(X-2,Y/2+2),printf("     ");if(Anb>0) {Crab_Attack(X,Y,3);Anb=bMin;}}
    Crab=0;}
    //操作
    if(TimeStop==0) Level_Bullet();
    if(TimeStop==0&&Tempty>0) Tempty--;
        else if(Tempty==0) Tempty=500,system("cls"),memset(B,0,sizeof(B)),memset(m,0,sizeof(m)),memset(n,0,sizeof(n)),memset(s,0,sizeof(s)),bl=br=0,Hurt(20,40,2);
//    //放子弹
    Move_bullet();
    if(Crab==2) system("cls"),Map(1); 
    if(an==1||kill==1||T<=2){
    if(Thunder!=0||ThunderTime!=0){Thunder_step(X,Y,5,-D[0][Turnx],-D[1][Turny]);}
    for(register float i=X-3;i<=X+1;i++) for(register float j=Y-8;j<=Y+8;j++) C(i,j);
    if(Turnx==1) X--;if(Turnx==2) X++;if(Turny==3) Y+=2;if(Turny==4) Y-=2;
            X=fmax(fmin(X,39),1),Y=fmax(fmin(Y,80),1);//你的位置更新 
if(TimeStop>0) Color(1+rand()%5);else if(unkillT>0) Color(8);else Color(1);
        if(Turnx==1||(Turnx==0&&Turny==0)) {Setpos(X-1,Y/2.0),printf("o"),Setpos(X,Y/2.0-0.5),printf("/+\\"),Setpos(X+1,Y/2.0);if(An%2==0) printf("A");else printf("H");}
        else if(Turnx==2) {Setpos(X-1,Y/2.0),printf("o"),Setpos(X,Y/2.0-0.5),printf("\\+/"),Setpos(X+1,Y/2.0);if(An%2==0) printf("A");else printf("H");}
        else if(Turny==3) {Setpos(X-1,Y/2.0+0.5),printf("o"),Setpos(X,Y/2.0-0.5),printf("-+"),Setpos(X+1,Y/2.0-0.5);if(An%2==0) printf("/>");else printf("v|");}
        else if(Turny==4) {Setpos(X-1,Y/2.0-0.5),printf("o"),Setpos(X,Y/2.0),printf("+-"),Setpos(X+1,Y/2.0);if(An%2==0) printf("<\\");else printf("|v");}
    }
    if(skillC==1&&Anc!=0&&Crab==0) Color(1),Setpos(X-2,Y/2-2),printf("C%0.1f   ",Anc);
    if(ThunderTime>0) Color(1+rand()%2*4),Setpos(X-2,Y/2),printf("%d  ",ThunderTime);
    else if(Thunder>0) Color(1+rand()%2*4),Setpos(X-2,Y/2),printf("%d  ",Thunder);
    else if(skillV==1&&Anv!=0&&Y<=76&&Crab==0) Color(2),Setpos(X-2,Y/2),printf("V%0.1f   ",Anv);
    if(TimeStop>0) Color(1+rand()%5),Setpos(X-2,Y/2+2),printf("%d  ",TimeStop);
    else if(skillB==1&&Anb!=0&&Y<=73&&Crab==0) Color(5),Setpos(X-2,Y/2+2),printf("B%0.1f   ",Anb);

    if(T%15==0) Blood=min(Blood+1,Bloodmax);
    if(unkillT<=0) for(register int i=0;i<=4;i++) if(n[(int)X+D[0][i]][(int)Y+D[1][i]]>=1) {Blood-=Attack,kill=1;Hurt(X,Y,1);unkillT=unkillTmax;}
    if(unkillT>0) unkillT--;
    if(EXP>EXPmax) Lev++,EXP=0,Blood*=1.4,Bloodmax*=1.1,EXPmax*=1.5,speed*=0.95,Attack*=1.1;
    Setpos(-1,1),Color(0),printf("T: %d ",T);
    Setpos(-1,5),printf("Level: %d ",Lev);
    Setpos(-1,10),printf("Blood: %d (/%d) ",(int)Blood,(int)Bloodmax);
    Setpos(-1,20),printf("EXP: %d (/%d) ",(int)EXP,(int)EXPmax);
    Setpos(-1,28),printf("距离清场时间还有 %d  ",Tempty);
    if(Blood<1) Life=0;
//判定死亡
        Map(1);
        Sleep(speed);
    }
    if(Lev>=10) system("color 6E"),Sleep(1000),Win();
    else system("color 7F"),Sleep(1000),Die();
}
void Interface(){
    system("cls"); Color(5);
    Setpos(0,9),printf("EASY GAME 2.0",5);
    Setpos(1,3),printf("■■■■    作者:胎神大大        ■■■");
    Setpos(2,3),printf("■                               ■");
    Setpos(3,3),printf("■■■■   ■     ■■ ■ ■     ■  ■■  ■     ■  ■    ■■");
    Setpos(4,3),printf("■        ■■    ■    ■       ■    ■ ■■   ■ ■ ■  ■ ■");
    Setpos(5,3),printf("■■■■ ■  ■ ■■    ■        ■■■ ■  ■ ■  ■  ■  ■■■2.0");
    Color(0),Setpos(7,3),printf("这是胎神大大连夜赶做出来敷衍你们的极简寒酸主界面......",10);
    Color(1),Setpos(11,3),Slow("按 C 修改角色/查看规则,",5);Color(2),Slow(" V 调整速度,",5);Color(-5),Slow(" Y",5);Color(5),Slow(" 开始游戏",5);
    Color(3),Setpos(13,3),Slow("注:因为此游戏运行程序较繁琐,容易卡,建议先调整速度!",5);
    Color(0),Setpos(28,1),printf("  -----------------------作者:胎神大大的啰嗦 P 话-----------------------\n\n     其实这个游戏的发展空间是很大的,但是无奈胎神大大时间(实力)有限只能几下赶完放出来了,唉其实超级不甘心的……这个程序创造很多实用的,用 C++ 写动画的基础函数,让普通的 C++ 程序也能做出炫酷(大雾)的效果(是我不会用(懒得编)啊啊啊),我会不定期来改 BUG 的,甚至没事干时过来多出几个人物!(像 PVP 啊, BOSS 啊我都超想编的 emm ~) \n    总之好好玩吧,    更  新  不  定   ,  敬  请  期  待    !");
}
void Time_check(){
    system("cls");
    Setpos(-1,1);Slow("  现在开始速度调整,按 C 加速, V 减速, B 退出",50);
    while(1)
    {if(kbhit()){char g=_getch();if(g=='c') speed*=0.95;else if(g=='v') speed*=1.05;else if(g=='b') break;}
        T++;if(T%2==0) Rand_put_Bullet(); 
    Setpos(-1,0),Color(0),printf("Speed: %0.3f   ",speed);Map(1);Move_bullet();Sleep(speed);} 
    Interface();
}
void Rules(){
    system("cls"); 
    Setpos(1,1),Slow("选择你的角色! ",10);
    Setpos(3,1),Slow("输入:1.小胎  2.伍六七  3.豌豆  4.DIO  5.善逸  6.Crab_Dave",10);
    while(1){
    if(kbhit()){char a=_getch();
    if(a=='1'){system("cls");
    Setpos(1,1),Slow("↑↓←→操作躲避子弹,活下去。",10);
    Setpos(3,1),Slow("角色名称:小胎",10);
    Setpos(5,1),Slow("角色编号:1",10);people=1;
    Setpos(7,1),Slow("技能:",10);
    Color(1),Setpos(9,1),Slow("C :遁之子弹(走路时反向发射,冷却时间:快) ",10);skillC=1;cMin=-1;
    Color(2),Setpos(11,1),Slow("V :护体神盾(有几率反弹子弹!冷却时间:中)",10);skillV=1;vMin=-5;
    Color(5),Setpos(13,1),Slow("B :元气烟花(无敌升级清场神器!冷却时间:慢)",10);skillB=1;bMin=-9;
    Setpos(15,1),Slow("所有技能,按的时间越久,威力越强!",10);break;}
    else if(a=='2'){system("cls");
    Setpos(1,1),Slow("↑↓←→操作躲避子弹,活下去。",10);
    Setpos(3,1),Slow("角色名称:伍六七",10);
    Setpos(5,1),Slow("角色编号:2",10);people=2;
    Setpos(7,1),Slow("技能:",10);
    Color(1),Setpos(9,1),Slow("AWSD (左手)操作剪刀!",10);skillC=0;
    Color(2),Setpos(11,1),Slow("Z或X :提升转速,加大范围!",10);skillV=0;
    Color(5),Setpos(13,1),Slow("速度越快,最大范围越大!",10);skillB=0;break;}
    else if(a=='3'){system("cls");
    Setpos(1,1),Slow("↑↓←→操作躲避子弹,活下去。",10);
    Setpos(3,1),Slow("角色名称:豌豆",10);
    Setpos(5,1),Slow("角色编号:3",10);people=3;
    Setpos(7,1),Slow("技能:",10);
    Color(1),Setpos(9,1),Slow("被动 :发射无穿透性的豌豆",10);skillC=0;
    Color(2),Setpos(11,1),Slow("V :自动发球机(连续八方向发射豌豆!冷却时间:中)",10);skillV=1;vMin=-4;
    Color(5),Setpos(13,1),Slow("B :能量豆(你懂得,无敌升级清场神器!冷却时间:慢)",10);skillB=1;bMin=-6;break;}
    else if(a=='4'){system("cls");
    Setpos(1,1),Slow("↑↓←→操作躲避子弹,活下去。",10);
    Setpos(3,1),Slow("角色名称:DIO",10);
    Setpos(5,1),Slow("角色编号:4",10);people=4;
    Setpos(7,1),Slow("技能:",10);
    Color(1),Setpos(9,1),Slow("C或V :木大直拳(冷却时间:快,时停中极快)",10);skillC=1;cMin=-0.6;
    Color(5),Setpos(13,1),Slow("B :砸瓦鲁多(你懂得!冷却时间:慢)",10);skillB=1;bMin=-8;break;}
    else if(a=='5'){system("cls");
    Setpos(1,1),Slow("↑↓←→操作躲避子弹,活下去。",10);
    Setpos(3,1),Slow("角色名称:善逸",10);
    Setpos(5,1),Slow("角色编号:5",10);people=5;
    Setpos(7,1),Slow("技能:",10);
    Color(1),Setpos(9,1),Slow("C :雷霆一步(按得越久冲的越远!冷却时间:快)",10);skillC=1;cMin=-1;
    Color(2),Setpos(11,1),Slow("V :六连(获得六次瞬移机会!冷却时间:中)",10);skillV=1;vMin=-4;
    Color(5),Setpos(13,1),Slow("B :化雷(短时获得无限瞬移机会!冷却时间:慢)",10);skillB=1;bMin=-6;break;}
    else if(a=='6'){system("cls");
    Setpos(1,1),Slow("↑↓←→操作躲避子弹,活下去。",10);
    Setpos(3,1),Slow("角色名称:Crab_Dave",10);
    Setpos(5,1),Slow("角色编号:6",10);people=6;
    Setpos(7,1),Slow("技能:",10);
    Color(1),Setpos(9,1),Slow("C :概率波(用后就知道了hhh~!冷却时间:中)",10);skillC=1;cMin=-3;
    Color(2),Setpos(11,1),Slow("V :瞬闪柱(贯穿全场的攻击!冷却时间:中)",10);skillV=1;vMin=-5;
    Color(5),Setpos(13,1),Slow("B :波函动(化为波,短时获得无限瞬移机会!冷却时间:慢)",10);skillB=1;bMin=-8;
    Setpos(15,1),Slow("一直想编一个攻击全看脸的角色呢hhh~",10);break;}
    }}
    Color(5),Setpos(17,1),Slow("所有技能,击中后会增加 EXP ,EXP 满后可以升级!",10);
    Setpos(19,1),Slow("到达 10 级 即可通关!(好没创意啊,你的 EXP 可以保留至下一局)",10);
    Setpos(21,1),system("pause");
}
int main()
{
    system("mode con cols=82 lines=44");
    CONSOLE_CURSOR_INFO cursor_info={1,0};
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
    srand((unsigned)time(NULL));Color(0); 
Rules();
    sxs: Interface();
	while(1) if(kbhit()){
        char g=_getch();
        if(g=='c') {Rules();Interface();}
        else if(g=='v') {Time_check();Interface();}
        else if(g=='y') {
        Lev=1;Blood=Bloodmax=100;EXPmax=30,EXP=0;Start_level();
        goto sxs;
        }
    }
    return 0;
}

<2020> 忍者必须胎

#include<bits/stdc++.h>
#include<windows.h>
#include<stdio.h>
#include<conio.h>
#include<time.h>
#define Nor if(B[b].x<5) B[b].x=5;
#define Out1 Bx1-Bvx1<=6||Bx1-Bvx1>=28||By1-Bvy1<=7||By1-Bvy1>=27
#define Out2 Bx2-Bvx2<=6||Bx2-Bvx2>=28||By2-Bvy2<=7||By2-Bvy2>=27
#define Chang1 {Bwhat1=0;Bvx1=Bvy1=0;memset(Bgo1,0,sizeof(Bgo1));}
#define Chang2 {Bwhat2=0;Bvx2=Bvy2=0;memset(Bgo2,0,sizeof(Bgo2));}
#define Chang3 {Bwhat3=0;Bvx3=Bvy3=0;memset(Bgo3,0,sizeof(Bgo3));}
using namespace std;
int ti(float a) {return ((int)(a*10+5))/10;}
void Setpos(float x,float y){COORD pos;pos.X=ti(y*4)/2;pos.Y=ti(x);SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}
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|FOREGROUND_BLUE);if(a==8) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);if(a==9) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_GREEN|BACKGROUND_BLUE);if(a==10) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_BLUE);if(a==11) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE);if(a==12) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN);if(a==13) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY);if(a==14) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN|FOREGROUND_BLUE);}
int Blomax,Ren,Exp,Expmax,Lv,Lvl,Ice,Drug,ar1,ar2,Tar1,Tar2,bl,br,Win,T,Tb,Sy,Up,Upt,Down,u1,u2,Kill,Killb,L,Ll[4],Li,D,Gd[10],Biao,Fire,Fir,fir[4],Water,Thun,Wind,Magne,I[20][2],ib,Dis,Disb,Dis1,Disb1,Boss,Bblo,Bblomax,Bwhat1,Bwhat2,Bwhat3,Bgo1[10],Bgo2[10],Bgo3[10],Bbr,Bbl,Bl[4];
float X,Y,Vx,Vy,Ding,Blo,Hui,Bx1,By1,Bx2,By2,Bx3,By3,Bvx1,Bvy1,Bvx2,Bvy2,Bvx3,Bvy3,Bway[1001][2];
struct bullet{float x,y,vx,vy;int what;int a,t,How;int life;bool kill;}B[100001];
void Map(int a,int b);
void Pan(int a,float x,float y,int b){
    float Nox[4],Noy[4];Nox[0]=X,Noy[0]=Y;
    if(Down==1&&X==22) Nox[1]=X+1,Noy[1]=Y-0.5,Nox[2]=X-1,Noy[2]=Y-0.5;else if(Down==2) Nox[1]=X+1,Noy[1]=Y-0.5,Nox[2]=-10,Noy[2]=-10;else if(Down==1||X<18) Nox[1]=X-1,Noy[1]=Y-0.5,Nox[2]=-10,Noy[2]=-10;else Nox[1]=X+1,Noy[1]=Y-0.5,Nox[2]=X-1,Noy[2]=Y-0.5;
    for(int i=0;i<3;i++){
        if(a==-1){if(abs(x-Nox[i])+abs(y-Noy[i])<1.5) {if(B[b].what==-10)Exp+=2;if(B[b].what==-11)Exp+=1;B[b].life=0;if(B[b].life==0&&b==bl) bl++;Map(3,b);break;}}
        if(a==-2){if(abs(x-Nox[i])+abs(y-Noy[i])<2.5) {if(B[b].what==-2)Exp+=5,Biao+=5;if(B[b].what==-3)Fire=300,Ice=0,Fir=3;if(B[b].what==-4)Water=200;if(B[b].what==-5){Wind=70;Ding=28.25;Ice=0;if(Y<Ding-1)Vy=5;else Vy=0;if(Up>=1) Vx=-5;if(Down==2) Vx=5;}if(B[b].what==-6){Thun=200;system("color 1F");Sleep(20);system("color 6F");Sleep(10);system("color 0F");}if(B[b].what==-7)Magne=300;if(B[b].what==-8)Ice=0,Drug=0,Blo=fmin((float)Blomax,Blo+20);if(B[b].what==-9)Exp=fmin((float)Expmax,Exp+20);B[b].life=0;if(B[b].life==0&&b==bl) bl++;Map(3,b);break;}}
    }if(Wind==0&&Thun==0&&(B[b].kill!=0||Killb>=15||Ren==1&&Killb>0)) return;
    for(int i=0;i<3;i++){
        if((Wind>=1||Thun>=1)&&abs(x-Nox[i])+abs(y-Noy[i])<2.5) {if(B[b].what<98)Exp+=2;B[b].life=0;Map(3,b);break;}
        if(a==1) {if(abs(x-Nox[i])<0.5&&abs(y-Noy[i])<1) {if(B[b].what>=99)Blo-=10;if(B[b].what==14)Blo-=15,Ice=100,B[b].life=0;else if(B[b].what==15)Blo-=20,Ice=0,B[b].life=0;else if(B[b].what==17)Blo-=5,Drug=100,B[b].life=0;else if(B[b].what>=13&&B[b].what<=17)Blo-=10,B[b].life=0;else Blo-=15;B[b].kill=1,Killb=20;Kill=1;Map(3,b);break;}}
        if(a==2||a==6||a==8||a==9||a==10||a==11||a==12) {if(abs(x-Nox[i])+abs(y-Noy[i])<1.5) {if(a==2)Blo-=20;else if(a==8)Blo-=10;else Blo-=15;B[b].kill=1,Killb=20;Kill=1;if(a!=2){B[b].life=0;if(B[b].life==0&&b==bl) bl++;Map(3,b);break;}}}
        if(a==4) {if((Wind>=1||Thun>=1)&&abs(x-Nox[i])<1.5&&Noy[i]-y<=0&&Noy[i]-y>=-8) {if(B[b].what<98)Exp+=2;B[b].life=0;Map(3,b);break;}if(abs(x-Nox[i])<1&&Noy[i]-y<=0&&Noy[i]-y>=-8) {Blo-=25,B[b].kill=1,Killb=20;Kill=1;Vy=-1;Y-=0.5;break;}}
    }
}
void Map(int a,int b){
    Color(0);
    if(a==-1){
        if(Boss==1||Boss==6){if(Bwhat1==5){if(ti(Bx1)==20)Setpos(Bx1,By1),cout<<"==";else Setpos(Bx1,By1),cout<<"  ";}else{Setpos(Bx1-1,By1-0.5),cout<<"    ";Setpos(Bx1,By1-1),cout<<"      ";Setpos(Bx1+1,By1-0.5),cout<<"    ";if(abs(ti(Bx1)-20)<=1)Setpos(20,By1-1),cout<<"======";}}
        if(Boss==2||Boss==6){Setpos(Bx2-1,By2-1);cout<<"    ";Setpos(Bx2,By2-1);cout<<"      ";Setpos(Bx2+1,By2-1),cout<<"      ";Color(0);if(abs(ti(Bx2)-20)<=1)Setpos(20,By2-1),cout<<"======";}
        if(Boss==3||Boss==6){Setpos(Bx3-1,By3-0.5);cout<<"     ";Setpos(Bx3,By3);cout<<"  ";Setpos(Bx3+1,By3-1),cout<<"      ";Color(0);if(abs(ti(Bx3)-20)<=1)Setpos(20,By3-1),cout<<"=======";}
        if(X<0)return;if(X>=17&&X<=19){Setpos(X-1,Y);cout<<"  ";Setpos(X,Y-1);cout<<"   ";Setpos(X+1,Y-1),cout<<"   ";}else if(X<=23&&X>=21){Setpos(X+1,Y);cout<<"  ";Setpos(X,Y-1);cout<<"   ";Setpos(X-1,Y-1),cout<<"    ";}else if(X>23){Setpos(X,Y-1);cout<<"    ";Setpos(X-1,Y-0.5),cout<<"   ";}else if(X<17&&Upt!=0){Setpos(X,Y-1);cout<<"    ";Setpos(X+1,Y-1.5),cout<<"    ";}else if(X<17){Setpos(X,Y-1);cout<<"    ";Setpos(X+1,Y-0.5),cout<<"   ";}if(Thun>0){Setpos(X-2,Y-1),cout<<"    ";Setpos(X+2,Y-1),cout<<"    ";Setpos(X,Y+2),cout<<"  ";Setpos(X,Y-2.5),cout<<"  ";Setpos(X-1,Y+1),cout<<"  ";Setpos(X+1,Y+1),cout<<"  ";Setpos(X-1,Y-2),cout<<"  ";Setpos(X+1,Y-2),cout<<"  ";Setpos(20,Y-2.5),cout<<"============";}if(Wind!=0){Setpos(X+1,Y-5);cout<<"        ";Setpos(X,Y-5);cout<<"        ";Setpos(X-1,Y-5);cout<<"        ";Setpos(20,Y-5),cout<<"========";}if(Water!=0){Setpos(X,Y-4);cout<<"       ";Setpos(X+2,Y-3.5);cout<<"     ";Setpos(X-2,Y-3.5);cout<<"     ";Setpos(X+1,Y-3.5);cout<<"     ";Setpos(X-1,Y-3.5);cout<<"     ";Setpos(20,Y-5),cout<<"========";}if(Fire!=0){Setpos(X,Y+1),cout<<"  ";Setpos(X+1,Y),cout<<"  ";Setpos(X-1,Y-1),cout<<"  ";Setpos(20,Y-1);cout<<"======";}
    }
    if(a==0){
        if(Boss==1||Boss==6){if(Bwhat1==5)Color(5),Setpos(Bx1,By1),cout<<"█",Color(0);else if(Bwhat1==4&&Bgo1[1]>6&&Bgo1[1]<11)Color(4),Setpos(Bgo1[5]-1,Bgo1[6]),cout<<"︻",Setpos(Bgo1[5],Bgo1[6]-1),cout<<"【",Setpos(Bgo1[5],Bgo1[6]+1),cout<<"】",Setpos(Bgo1[5]+1,Bgo1[6]),cout<<"︼",Color(0);else{Setpos(Bx1-1,By1-0.5),Color(0),cout<<"●●";Setpos(Bx1,By1-1);if(Bwhat1==2&&Bgo1[1]<=5)Color(1);else if(Bwhat1==3&&Bgo1[1]<=5)Color(5);else if(Bwhat1==6&&Bgo1[1]<=5)Color(8); else Color(4);if(Bwhat1==4) Setpos(Bx1,By1-0.5),cout<<"██(";else cout<<")██(";Setpos(Bx1+1,By1-0.5),cout<<"……";Color(0);}}
        if(Boss==2||Boss==6){Setpos(Bx2-1,By2-1);Color(0),cout<<"\\ ";Color(0);cout<<"●";Setpos(Bx2,By2-1);Color(3);cout<<"◥";Color(5),cout<<"JJJ";Color(0),cout<<">";Color(3);Setpos(Bx2+1,By2-1),cout<<"◢█◣";Color(0);}
        if(Boss==3||Boss==6){Setpos(Bx3-1,By3-0.5);if(Bwhat3==3||Bwhat3==9) Color(1);else if(Bwhat3==4||Bwhat3==10) Color(4);else if(Bwhat3==5||Bwhat3==11) Color(5);if(Bwhat3==11)cout<<' ';else if(Bwhat3==6) Color(3);else Color(2);cout<<"●-";Setpos(Bx3,By3);if(Bwhat3==11)cout<<"/";else cout<<"┃";Color(0);Setpos(Bx3+1,By3-1),cout<<"●●●";}
        if(X<0)return;if(Ren==2) Color(12);if(Ren==3) Color(1);if(Ren==4) Color(3);if(Ren==5) Color(4);if(Ren==6) Color(2);if(Drug!=0&&T%5!=0) Color(11);if(Drug!=0&&T%5==0) Color(11);if(Ice!=0) Color(6);if(b==1) Color(8);if(Li!=0) Color(5);if(Ren==1&&Killb>0&&T%4<2) Color(13);if(Wind>0&&T%4<=1) Color(1);if(Wind>0&&T%4>=2) Color(0);if(Thun>0&&T%4<=1) Color(1);if(Thun>0&&T%4>=2) Color(6);
        if(X>=17&&X<=19){Setpos(X-1,Y);cout<<"●";Setpos(X,Y-1);cout<<"━/";if(T%10<3) Setpos(X+1,Y-1),cout<<"┛╲";else if(T%10<6) Setpos(X+1,Y-1),cout<<"┦ ";else Setpos(X+1,Y-1),cout<<"╯>";if(Wind>0&&T%3==0) Setpos(X+1,Y-1),cout<<"┛╲";else if(Wind>0&&T%3==1) Setpos(X+1,Y-1),cout<<"┦ ";else if(Wind>0&&T%3==2)Setpos(X+1,Y-1),cout<<"╯>";}else if(X<=23&&X>=21){Setpos(X+1,Y);cout<<"●";Setpos(X,Y-1);cout<<"━\\";if(T%10<3) Setpos(X-1,Y-1),cout<<"┓╱";else if(T%10<6) Setpos(X-1,Y-1),cout<<"┪ ";else Setpos(X-1,Y-1),cout<<"╮>";if(Wind>0&&T%3==0) Setpos(X-1,Y-1),cout<<"┓╱";else if(Wind>0&&T%3==1) Setpos(X-1,Y-1),cout<<"┪ ";else if(Wind>0&&T%3==2)Setpos(X-1,Y-1),cout<<"╮>";}else if(X>23){Setpos(X,Y-1);cout<<"━ ●";Setpos(X-1,Y-0.5),cout<<"│>";}else if(X<17&&Upt!=0){Setpos(X,Y-1);cout<<"━ ●";Setpos(X+1,Y-1.5),cout<<"╱ >";}else if(X<17){Setpos(X,Y-1);cout<<"━ ●";Setpos(X+1,Y-0.5),cout<<"│>";}if(Thun>0){Setpos(X-2,Y-1),cout<<"▄▄";Setpos(X+2,Y-1),cout<<"▄▄";Setpos(X,Y+2),cout<<"▌";Setpos(X,Y-2.5),cout<<"▌";Setpos(X-1,Y+1),cout<<"█";Setpos(X+1,Y+1),cout<<"█";Setpos(X-1,Y-2),cout<<"█";Setpos(X+1,Y-2),cout<<"█";}if(Magne>0&&T%7<2)Setpos(X,Y),Color(5),cout<<"★";if(Wind>1){if(T%6<2)Color(1);else Color(0);if(T%8<=1){Setpos(X+1,Y-5);cout<<"----  --";Setpos(X,Y-5);cout<<"-  --- -";Setpos(X-1,Y-5);cout<<"--- - --";}else if(T%8<=3){Setpos(X+1,Y-5);cout<<"------  ";Setpos(X,Y-5);cout<<" --  ---";Setpos(X-1,Y-5);cout<<"----- - ";}else if(T%8<=5){Setpos(X+1,Y-5);cout<<"  ------";Setpos(X,Y-5);cout<<"-- --  -";Setpos(X-1,Y-5);cout<<"- ----- ";}else if(T%8<=7){Setpos(X+1,Y-5);cout<<"--  ----";Setpos(X,Y-5);cout<<" --- -- ";Setpos(X-1,Y-5);cout<<"- - ----";}}if(Water!=0){Color(1);if(T%20<5){Setpos(X+2,Y-3);cout<<"■";Setpos(X+1,Y-3.5);cout<<"■";Setpos(X-1,Y-2.5);cout<<"■";Setpos(X-2,Y-3);cout<<"■";}else if(T%20<10||T%20>=15){Setpos(X+2,Y-3);cout<<"■";Setpos(X,Y-4);cout<<"■■";Setpos(X-2,Y-3);  cout<<"■";}else if(T%20<15){Setpos(X+2,Y-3.5);cout<<"■";Setpos(X+1,Y-3);cout<<"■";Setpos(X-1,Y-3.5);cout<<"■";Setpos(X-2,Y-3);cout<<"■";}}if(Fire!=0){if(T%6<3)Color(4);else Color(5);if(Fir>=1)Setpos(X,Y+1),cout<<"●";if(Fir>=2)Setpos(X+1,Y),cout<<"●";if(Fir>=3)Setpos(X-1,Y-1),cout<<"●";}
    }
    if(a==1||a==3){
        if(B[b].what==1){Nor;Setpos(B[b].x,B[b].y-1);if(ti(B[b].x)==20)cout<<"======";else cout<<"      ";if(B[b].life!=0){B[b].y-=B[b].vy;Setpos(B[b].x,B[b].y);if(B[b].How<=1) Color(13);else Color(4);cout<<"●";if(a==1) Pan(1,B[b].x,B[b].y,b);}}
        if(B[b].what==2){Nor;Setpos(B[b].x-1,B[b].y-1);if(ti(B[b].x-1)==20)cout<<"======";else cout<<"      ";Setpos(B[b].x,B[b].y-1);if(ti(B[b].x)==20)cout<<"======";else cout<<"      ";Setpos(B[b].x+1,B[b].y-1);if(ti(B[b].x+1)==20)cout<<"======";else cout<<"      ";if(B[b].life!=0){B[b].y-=B[b].vy;Setpos(B[b].x,B[b].y);Color(5);if(B[b].How==0){Setpos(B[b].x-1,B[b].y),cout<<"↑";Setpos(B[b].x,B[b].y-1),cout<<"←┼ →";Setpos(B[b].x+1,B[b].y),cout<<"↓";}else if(B[b].How==1){Setpos(B[b].x-1,B[b].y-1),cout<<"↖  ↗";Setpos(B[b].x,B[b].y),cout<<"╳";Setpos(B[b].x+1,B[b].y-1),cout<<"↙  ↘";} if(a==1) Pan(2,B[b].x,B[b].y,b);}}
        if(B[b].what==3||B[b].what==5){Nor;Setpos(B[b].x,B[b].y);if(ti(B[b].x)==20)cout<<"==";else cout<<"  ";if(B[b].life!=0){B[b].y-=B[b].vy;B[b].x-=B[b].vx;Setpos(B[b].x,B[b].y);if(B[b].How==1) Color(5);else Color(4);cout<<"◎";}}
        if(B[b].what==4){Nor;Setpos(B[b].x,fmax((float)0,B[b].y-8));if(ti(B[b].x)==20){for(int i=max(0,(int)B[b].y-8);i<=B[b].y;i++)cout<<"==";}else {for(int i=max(0,(int)B[b].y-8);i<=B[b].y;i++)cout<<"  ";}if(B[b].life!=0){B[b].y-=B[b].vy;Setpos(B[b].x,fmax((float)0,B[b].y-8));Color(6); for(int i=max(0,(int)B[b].y-8);i<=B[b].y;i++)cout<<"═"; if(a==1) Pan(4,B[b].x,B[b].y,b);}}
        if(B[b].what==6||B[b].what==8||B[b].what==9){Nor;Setpos(B[b].x-1,B[b].y);if(ti(B[b].x)-1==20)cout<<"==";else cout<<"  ";Setpos(B[b].x+1,B[b].y);if(ti(B[b].x)+1==20)cout<<"==";else cout<<"  ";Setpos(B[b].x,B[b].y-1);if(ti(B[b].x)==20)cout<<"======";else cout<<"      ";if(B[b].life!=0){B[b].y-=B[b].vy;B[b].x-=B[b].vx;Setpos(B[b].x,B[b].y-1);if(B[b].what==6){if(B[b].How<=1) Color(1); else Color(6);}if(B[b].what==9){if(B[b].How<=1) Color(4); else Color(8);}if(B[b].what==8)Color(5);Setpos(B[b].x-1,B[b].y);cout<<"︹";Setpos(B[b].x+1,B[b].y);cout<<"︺";Setpos(B[b].x,B[b].y-1);if(B[b].How%2==1) cout<<"〔●〕"; else cout<<"﹝○﹞"; if(a==1) Pan(6,B[b].x,B[b].y,b);}}
        if(B[b].what==7){Nor;Setpos(B[b].x,B[b].y);if(B[b].How<0) for(int i=19;i>=20+B[b].How;i--) {Setpos(i,B[b].y);cout<<"  ";}if(B[b].How>0) for(int i=21;i<=20+B[b].How;i++) {Setpos(i,B[b].y);cout<<"  ";}if(B[b].life!=0){B[b].y-=B[b].vy;if(B[b].How<0) for(int i=19;i>=20+B[b].How;i--) {Setpos(i,B[b].y);cout<<"║"; if(a==1) Pan(7,i,B[b].y,b);}if(B[b].How>0) for(int i=21;i<=20+B[b].How;i++) {Setpos(i,B[b].y);cout<<"║"; if(a==1) Pan(7,i,B[b].y,b);}}}
        if(B[b].what==10||B[b].what==11||B[b].what==12){Nor;Setpos(B[b].x,B[b].y);if(ti(B[b].x)==20)cout<<"==";else cout<<"  ";if(B[b].life!=0){B[b].x-=B[b].vx;B[b].y-=B[b].vy;if(B[b].How==1){B[b].vy-=0.2;}else B[b].vx-=0.35;if(B[b].x>=25) B[b].x=25,B[b].vx*=-0.8;if(B[b].what==11&&B[b].y<=1) B[b].y=1,B[b].vy*=-1;if(B[b].what==12&&B[b].y<=1) B[b].y=1,B[b].vx=0,B[b].vy=-0.5,B[b].How=1;Setpos(B[b].x,B[b].y);if(B[b].what==11)Color(1);else if(B[b].what==12)Color(5);else Color(0);if(B[b].t%4<2)cout<<"▃";else cout<<"▍";if(a==1) Pan(B[b].what,B[b].x,B[b].y,b);}}
        if(B[b].what>=13&&B[b].what<=17){Nor;Setpos(B[b].x,B[b].y);if(ti(B[b].x)==20)cout<<"====";else cout<<"    ";if(B[b].life!=0){B[b].x-=B[b].vx;B[b].y-=B[b].vy;Setpos(B[b].x,B[b].y);if(B[b].what==14) Color(1);else if(B[b].what==15) Color(4);else if(B[b].what==16) Color(5);else if(B[b].what==17) Color(3);else Color(2);cout<<"●";if(B[b].what==14)cout<<"*";if(B[b].what==15)cout<<"";if(B[b].what==16)cout<<"<";if(B[b].what==17)cout<<"X";} if(a==1) Pan(1,B[b].x,B[b].y,b);}
        if(B[b].what==98&&B[b].life!=0){B[b].y-=B[b].vy;Setpos(B[b].x,B[b].y);if(ti(B[b].x==20))cout<<"==";else cout<<"  ";if(B[b].y<=3)B[b].life=0;} 
        if(B[b].what>=99){if(B[b].y<=3)B[b].life=0;if(B[b].life!=0){B[b].y-=B[b].vy;Setpos(B[b].x,B[b].y);Color(5);if(B[b].what==99)cout<<"█";if(B[b].what>=100&&B[b].what<200){if(B[b].what%5==0)cout<<"胎";if(B[b].what%5==1)cout<<"神";if(B[b].what%5==2)cout<<"太";if(B[b].what%5==3)cout<<"帅";if(B[b].what%5==4)cout<<"了";}if(B[b].what>=200&&B[b].what<300){if(B[b].what%6==0)cout<<"神";if(B[b].what%6==1)cout<<"级";if(B[b].what%6==2)cout<<"胎";if(B[b].what%6==3)cout<<"神";if(B[b].what%6==4)cout<<"之";if(B[b].what%6==5)cout<<"光";}if(B[b].what>=300&&B[b].what<400){if(B[b].what%8==0)cout<<"颤";if(B[b].what%8==1)cout<<"抖";if(B[b].what%8==2)cout<<"吧";if(B[b].what%8==3)cout<<"无";if(B[b].what%8==4)cout<<"能";if(B[b].what%8==5)cout<<"的";if(B[b].what%8==6)cout<<"人";if(B[b].what%8==7)cout<<"类";}if(B[b].what>=400&&B[b].what<500){if(B[b].what%8==0)cout<<"还";if(B[b].what%8==1)cout<<"不";if(B[b].what%8==2)cout<<"快";if(B[b].what%8==3)cout<<"跪";if(B[b].what%8==4)cout<<"倒";if(B[b].what%8==5)cout<<"在";if(B[b].what%8==6)cout<<"朕";if(B[b].what%8==7)cout<<"前";}if(B[b].what>=500&&B[b].what<600){if(B[b].what%8==0)cout<<"看";if(B[b].what%8==1)cout<<"懂";if(B[b].what%8==2)cout<<"这";if(B[b].what%8==3)cout<<"句";if(B[b].what%8==4)cout<<"话";if(B[b].what%8==5)cout<<"的";if(B[b].what%8==6)cout<<"是";if(B[b].what%8==7)cout<<"猪";} if(a==1) Pan(1,B[b].x,B[b].y,b);}}
        if(B[b].what==-1){Nor;Setpos(B[b].x,B[b].y);if(ti(B[b].x)==20)cout<<"==";else cout<<"  ";if(Boss==0) B[b].life=0;else if(((Boss==1&&abs(B[b].x-Bx1)+abs(B[b].y-By1)<1.5)||(Boss==2&&abs(B[b].x-Bx2)+abs(B[b].y-By2)<1.5)||(Boss==3&&abs(B[b].x-Bx3)+abs(B[b].y-By3)<1.5)||(B[b].t==10))&&B[b].life==1) Bblo-=8+Lv*2,B[b].life=0;if(B[b].life!=0){if(Boss==1)B[b].x=B[b].x+(Bx1-B[b].x)/(10-B[b].t)*1.0,B[b].y=B[b].y+(By1-B[b].y)/(10-B[b].t)*1.0;if(Boss==2)B[b].x=B[b].x+(Bx2-B[b].x)/(10-B[b].t)*1.0,B[b].y=B[b].y+(By2-B[b].y)/(10-B[b].t)*1.0;if(Boss==3)B[b].x=B[b].x+(Bx3-B[b].x)/(10-B[b].t)*1.0,B[b].y=B[b].y+(By3-B[b].y)/(10-B[b].t)*1.0;Setpos(B[b].x,B[b].y);Color(7);if(B[b].t%2==0) cout<<"+";else cout<<"×";}}
        if(B[b].what<=-2&&B[b].what>=-9){Nor;Setpos(B[b].x-1,B[b].y);if(ti(B[b].x)-1==20)cout<<"==";else cout<<"  ";Setpos(B[b].x+1,B[b].y);if(ti(B[b].x)+1==20)cout<<"==";else cout<<"  ";Setpos(B[b].x,B[b].y-1);if(ti(B[b].x)==20)cout<<"======";else cout<<"      ";if(B[b].life!=0){B[b].y-=B[b].vy;B[b].x-=B[b].vx;if(B[b].what<=-3&&B[b].what>=-7){if(B[b].x<=7)B[b].x=7;if(B[b].x>=28)B[b].x=28;else if(B[b].x>=B[b].a+1&&B[b].How==1)B[b].How=0;else if(B[b].x<=B[b].a-1&&B[b].How==0)B[b].How=1;if(B[b].How==1&&B[b].vx>=-1)B[b].vx-=0.2;if(B[b].How==0&&B[b].vx<=1)B[b].vx+=0.2;}if(B[b].what==-2) Color(3);if(B[b].what==-3) Color(4);if(B[b].what==-4) Color(1);if(B[b].what==-5) Color(0);if(B[b].what==-6) Color(6);if(B[b].what==-7) Color(5);if(B[b].what==-8) Color(2);if(B[b].what==-9) Color(14);if(T%7<=1&&B[b].what==-5)Color(1);else if(T%7<=1)Color(0);Setpos(B[b].x-1,B[b].y);cout<<"︹";Setpos(B[b].x+1,B[b].y);cout<<"︺";Setpos(B[b].x,B[b].y-1);if(B[b].what==-2) cout<<"﹝镖﹞";if(B[b].what==-3) cout<<"﹝火﹞";if(B[b].what==-4) cout<<"﹝水﹞";if(B[b].what==-5) cout<<"﹝风﹞";if(B[b].what==-6) cout<<"﹝雷﹞";if(B[b].what==-7) cout<<"﹝磁﹞";if(B[b].what==-8) cout<<"﹝血﹞";if(B[b].what==-9) cout<<"﹝忍﹞"; if(a==1) Pan(-2,B[b].x,B[b].y,b);}}
        if(B[b].what==-11||B[b].what==-12){Nor;Setpos(B[b].x,B[b].y);if(ti(B[b].x)==20)cout<<"==";else cout<<"  ";if(B[b].life!=0){if(Magne>0)B[b].How++,B[b].x=B[b].x+(X-B[b].x)/(10-B[b].How)*1.0,B[b].y=B[b].y+(Y-B[b].y)/(10-B[b].How)*1.0;B[b].y-=B[b].vy;Setpos(B[b].x,B[b].y);if(B[b].what==-10) Color(5);if(B[b].what==-11) Color(7);if(T%7<=1)Color(0);cout<<"◆"; if(a==1) Pan(-1,B[b].x,B[b].y,b);}}
        if(B[b].what==-13){Nor;Setpos(B[b].x,B[b].y-0.5);if(ti(B[b].x)==20)cout<<"===";else cout<<"   ";if(B[b].life!=0){if(B[b].a==13880086){if(Boss==0) B[b].life=0;else if(((Boss==1&&abs(B[b].x-Bx1)+abs(B[b].y-By1)<1.5)||(Boss==2&&abs(B[b].x-Bx2)+abs(B[b].y-By2)<1.5)||(Boss==3&&abs(B[b].x-Bx3)+abs(B[b].y-By3)<1.5)||(B[b].t==5))&&B[b].life==1) Bblo-=8+Lv*2,B[b].life=0;if(B[b].life!=0){if(Boss==1)B[b].x=B[b].x+(Bx1-B[b].x)/(5-B[b].t)*1.0,B[b].y=B[b].y+(By1-B[b].y)/(5-B[b].t)*1.0;if(Boss==2)B[b].x=B[b].x+(Bx2-B[b].x)/(5-B[b].t)*1.0,B[b].y=B[b].y+(By2-B[b].y)/(5-B[b].t)*1.0;if(Boss==3)B[b].x=B[b].x+(Bx3-B[b].x)/(5-B[b].t)*1.0,B[b].y=B[b].y+(By3-B[b].y)/(5-B[b].t)*1.0;}}else{if(B[B[b].a].life==0) B[b].life=0;else if((abs(B[b].x-B[B[b].a].x)+abs(B[b].y-B[B[b].a].y)<1.5||(B[b].t==5))&&B[b].life==1) Exp+=2,B[B[b].a].life=B[b].life=0;if(B[b].life!=0){B[b].x=B[b].x+(B[B[b].a].x-B[b].x)/(5-B[b].t)*1.0,B[b].y=B[b].y+(B[B[b].a].y-B[b].y)/(5-B[b].t)*1.0;}}Setpos(B[b].x,B[b].y-0.5);if(T%6<3)Color(5);else Color(4);cout<<"●";}}
    }if(br<bl) {br=-1,bl=0;memset(B,0,sizeof(B));}Color(0);
}
void Move(){
    if(X<3) X=3;if(Y<1) Y=1,Vy=0;if(Y>29) Y=29,Vy=0;
    if(Ice!=0){X-=Vx/2.0;Y+=Vy/2.0;Vy=fmax(Vy-0.025,(float)0);if(T%6==0&&Up==0&&Y<Ding) Y+=0.25;if(T%6==3&&Up==0&&Y>=Ding) Y-=0.25;if(Up==0&&Y<=Ding-1.25) Vy=0.25;if(Up==0&&Y>=Ding+1.25&&Wind==0) Vy=-0.25;if(Up==0&&Down==0&&Vx>0&&X<=18) Up=0,Down=0,Vx=0,Vy=0,X=18,Setpos(20,Y-2.5),cout<<"==========";else if(Down==2&&X<=22) Up=0,Down=1,Vx=0,Vy=0,X=22,Setpos(20,Y-2.5),cout<<"==========";else if(Up==0&&Down==1&&Vx<0&&X>=22) Up=0,Down=1,Vx=0,Vy=0,X=22,Setpos(20,Y-2.5),cout<<"==========";else if(Up>0&&Down==0&&X>18) Up=0,Vx=0,Vy=0,X=18,Setpos(20,Y-2.5),cout<<"==========";else if(Down==2) Vx+=0.175;else if(Up>0&&Upt==0) Vx-=0.175;else if(Up>0&&Upt>0) {Vx=fmax(Vx-0.125,(float)0);if(Upt==1&&T%2==0)Map(-1,0);if(T%2==0)Upt--;}}
    else{X-=Vx;Y+=Vy;Vy=fmax(Vy-0.05,(float)0);if(Wind==0){if(T%6==0&&Up==0&&Y<Ding) Y+=0.5;if(T%6==3&&Up==0&&Y>=Ding) Y-=0.5;}else{if(T%2==0&&Up==0&&Y<Ding) Y+=0.5;if(T%2==1&&Up==0&&Y>=Ding) Y-=0.5;}if(Up==0&&Y<=Ding-1.25) Vy=0.5;if(Up==0&&Y>=Ding+1.25&&Wind==0) Vy=-0.5;if(Up==0&&Down==0&&Vx>0&&X<=18) Up=0,Down=0,Vx=0,Vy=0,X=18,Setpos(20,Y-2.5),cout<<"==========";else if(Down==2&&X<=22) Up=0,Down=1,Vx=0,Vy=0,X=22,Setpos(20,Y-2.5),cout<<"==========";else if(Up==0&&Down==1&&Vx<0&&X>=22) Up=0,Down=1,Vx=0,Vy=0,X=22,Setpos(20,Y-2.5),cout<<"==========";else if(Up>0&&Down==0&&X>18) Up=0,Vx=0,Vy=0,X=18,Setpos(20,Y-2.5),cout<<"==========";else if(Down==2) Vx+=0.35;else if(Up>0&&Upt==0) Vx-=0.35;else if(Up>0&&Upt>0) {Vx=fmax(Vx-0.25,(float)0);if(Upt==1)Map(-1,0); Upt--;}}
    for(int i=bl;i<=br;i++){
        if(B[i].what<98)if(B[i].x-B[i].vx<=5||B[i].x-B[i].vx>=30||B[i].y-B[i].vy<=0||B[i].y-B[i].vy>=30){B[i].life=0;Map(1,i);}
        for(int j=0;j<20;j++)if(B[i].what>0&&B[i].life!=0&&abs(B[i].x-I[j][0])<2&&B[i].y-I[j][1]<=2){Setpos(I[j][0],I[j][1]);if(I[j][0]==20) cout<<"===";else cout<<"   ";I[j][0]=I[j][1]=-1;B[i].life=0;Exp+=2;}
        if(B[i].t>=100)B[i].life=0;if(B[i].life==0&&i==bl) bl++;
        Map(1,i);if(B[i].life==0) continue;
        else{B[i].t++;
            if(B[i].what==1){if(B[i].y<=25&&B[i].How==0) B[i].vy=0,B[i].How=1;if(B[i].t==30) B[i].y+=1.5,B[i].How=2;if(B[i].t==35) B[i].vy=1.5,B[i].How=3;}
            if(B[i].what==2){if(B[i].t%3==0) B[i].How=!B[i].How;} 
            if(B[i].what==3||B[i].what==5){if(B[i].what==3&&B[i].y<=20) B[i].vy=0;if(B[i].what==5&&B[i].y<=21) B[i].vy=0;if(B[i].t>30&&B[i].t%2==0) B[i].How=!B[i].How;if(B[i].what==5&&B[i].t<=30&&B[i].x<X) B[i].vx=-0.2;else if(B[i].what==5&&B[i].t<=70&&B[i].x>X) B[i].vx=0.2;else B[i].vx=0;if(B[i].t==45){B[i].life=0;br++;B[br].what=4;B[br].x=B[i].x;B[br].y=32;B[br].vy=3;B[br].life=1;}}
            if(B[i].what==6||B[i].what==8||B[i].what==9){if(B[i].vx<0.25&&B[i].vy<0.25&&B[i].t>=50){B[i].life=0;if(B[i].life==0&&i==bl) bl++;Map(1,i);break;}if(B[i].t%5==0) B[i].How=rand()%4;if(B[i].what==9){if(B[i].t==7){X9:float xx=(rand()%41)/40.0,yy=(rand()%41)/40.0;if(xx<=0.5&&yy<=0.5) goto X9;for(int j=1;j<=4;j++){br++,B[br].what=9;B[br].t=11;B[br].x=B[i].x,B[br].y=B[i].y,B[br].vx=xx,B[br].vy=yy;if(j%2==0)swap(B[br].vx,B[br].vy),B[br].vy*=-1;if(j<=2)B[br].vx*=-1,B[br].vy*=-1;B[br].life=1;}B[i].life=0;}}if(B[i].what==8){if(B[i].x>X&&B[i].vx<1.2) B[i].vx+=fmax((float)0,0.2-B[i].t/25);if(B[i].x<X&&B[i].vx>-1.2) B[i].vx-=fmax((float)0,0.2-B[i].t/25);if(B[i].y>Y&&B[i].vy<1.2) B[i].vy+=fmax((float)0,0.2-B[i].t/25);if(B[i].y<Y&&B[i].vy>-1.2) B[i].vy-=fmax((float)0,0.2-B[i].t/25);}}
            if(B[i].what>=13&&B[i].what<=15&&B[i].How!=0){if(B[i].x==B[i].How)B[i].vx=0,B[i].How=0;}
            if(B[i].what==16){if(B[i].x<X&&B[i].vx>=-1) B[i].vx-=0.2;else if(B[i].x>X&&B[i].vx<=1) B[i].vx+=0.2;}
        }
        if(B[i].life==1&&B[i].a==0&&B[i].what>0){if(B[i].y>Y&&abs(B[i].x-X)<=3&&((B[i].x-X)*(B[i].x-X)+(B[i].y-Y)*(B[i].y-Y))<Dis) Dis=(B[i].x-X)*(B[i].x-X)+(B[i].y-Y)*(B[i].y-Y),Disb=i;else if(((B[i].x-X)*(B[i].x-X)+(B[i].y-Y)*(B[i].y-Y))<Dis1) Dis1=(B[i].x-X)*(B[i].x-X)+(B[i].y-Y)*(B[i].y-Y),Disb1=i;}
    }
}
void Guai(int R,int r){
    if(R==-1){br++;B[br].what=-1;B[br].x=X+rand()%3-1;B[br].y=Y+rand()%3-1;B[br].life=1;}
    if(R<=-2&&R>=-11){br++;B[br].what=R;B[br].x=B[br].a=r;B[br].y=29;if(R<=-3&&R>=-7)B[br].vx=-1;B[br].vy=1;B[br].life=1;}
    if(R==0){br++;B[br].what=1;B[br].x=r;B[br].y=29;B[br].vy=1;B[br].life=1;}
    if(R==1){br++;B[br].what=2;B[br].x=r;B[br].y=29;B[br].vy=1;B[br].life=1;}
    if(R==2||R==3){br++;B[br].what=2*R-1;B[br].x=r;B[br].y=29;B[br].vy=1;B[br].life=1;}
    if(R==4){br++;B[br].what=6;if(r<5)r=5;if(r>30)r=30;B[br].x=r;if(r==11||r==25) B[br].y=29-(rand()%20);else B[br].y=29;X4:B[br].vx=(rand()%21-10)/30.0;B[br].vy=(rand()%25)/30.0;if(B[br].vx<=0.8&&B[br].vy<=0.8)goto X4;int rx=rand()%50;if(rx==0) B[br].vx=0;B[br].life=1;}
    if(R==5){br++;B[br].How=r;B[br].what=7;if(B[br].How<0) B[br].x=19;if(B[br].How>0) B[br].x=21;B[br].y=29;B[br].vy=1;B[br].life=1;}
}
void CpGuai(int R,float x,float y,float xx,float yy){
    if(R==4){br++;B[br].what=6;B[br].x=x;B[br].y=y;B[br].vx=xx;B[br].vy=yy;B[br].life=1;}
    if(R==6||R==7||R==8){br++;B[br].what=4+R;B[br].x=x;B[br].y=y;B[br].vx=xx;B[br].vy=yy;B[br].life=1;}
}
void MesGuai(int a,int rr){
    int R=rand()%rr,r=-10086;
    if(R==0){if(a==1) r=(5+rand()%8)*2;if(a<=3&&a!=1) r=10+rand()%16;if(a==4) r=rand()%75-20;if(a==5) r=2+rand()%4;if(r!=-10086) Guai(a,r);}
}
void NorGuai(int a,int b){
    if(a==1) {if(b==1||b==41) Guai(0,15),Guai(0,17),Guai(0,19);if(b==21||b==61) Guai(0,21),Guai(0,23),Guai(0,25);if(b==81) Guai(0,11),Guai(0,13),Guai(0,15),Guai(0,17),Guai(0,19);if(b==101||b==141) Guai(0,17),Guai(0,19),Guai(0,21),Guai(0,23),Guai(0,25);if(b==121) Guai(0,15),Guai(0,17),Guai(0,19),Guai(0,21),Guai(0,23);if(b>=160&&b<=260&&b%10==0) Guai(0,b/10-1);if(b>=270&&b<=370&&b%10==0) Guai(0,52-b/10);if(b>=460&&b<=560&&b%10==0) Guai(0,b/10-37),Guai(0,b/10-36),Guai(0,b/10-35);if(b>=570&&b<=670&&b%10==0) Guai(0,78-b/10),Guai(0,77-b/10),Guai(0,76-b/10);if(b>=760&&b<=960&&b%10==0) Guai(0,b/10-66),Guai(0,b/10-65),Guai(0,103-b/10),Guai(0,104-b/10);if(b>=1000&&b<=1300) MesGuai(0,30-b/50);}
    if(a==2) {if(b<=200&&b%30==1) {int r=rand()%4;if(r==1) r=0;for(int i=0;i<4;i++) if(i!=r) Guai(1,i*4+9);}if(b>200&&b<=220&&b%5==1) Guai(1,18);if(b>220&&b<=300&&b%7==1) Guai(1,b/5-26);if(b>350&&b<=370&&b%5==1) Guai(1,22);if(b>370&&b<=450&&b%7==1) Guai(1,96-b/5);if(b==461||b==501||b==541) Guai(1,13),Guai(1,17),Guai(1,21);if(b==481||b==521||b==561) Guai(1,17),Guai(1,21),Guai(1,25);if(b>=561&&b<=861&&b%20==1) Guai(1,b/40+5);if(b>=561&&b<=861&&b%20==11) Guai(1,35-b/40);if(b>=801&&b<=961&&b%15==1) Guai(1,20);if(b>=1000&&b<=1300) MesGuai(1,30-b/50);}
    if(a==3) {if(b==1||b==61) Guai(3,15),Guai(2,17),Guai(2,19);if(b==31||b==91) Guai(2,21),Guai(2,23),Guai(3,25);if(b>=120&&b<=220&&b%10==0) Guai(2,b/10+3);if(b>=240&&b<=340&&b%10==0) Guai(2,49-b/10);if(b>=360&&b<=460&&b%20==0) Guai(2,b/10-21),Guai(2,61-b/10);if(b>=480&&b<=580&&b%20==0) Guai(3,b/10-33),Guai(3,73-b/10);if(b>=600&&b<750&&b%30==0) {for(int i=0;i<5;i++) Guai(3,i*3+10);}if(b>=750&&b<830&&b%10==0) if(b<=200&&b%40==1) Guai(2,X);if(b>=830&&b<910&&b%20==0) Guai(2,X);if(b>=910&&b<980&&b%10==0) Guai(2,X);if(b>=1000&&b<=1300) MesGuai(rand()%2+2,40-b/50);}
    if(a==4) {if(b==1) CpGuai(4,10,29,-0.4,0.7),CpGuai(4,14,29,-0.2,0.7),CpGuai(4,21,29,0,0.65);if(b==41) CpGuai(4,10,29,-0.2,0.7),CpGuai(4,14,29,-0.1,0.7),CpGuai(4,18,29,0,0.65);if(b==81) CpGuai(4,5,20,-0.4,0.35),CpGuai(4,10,29,-0.4,0.7),CpGuai(4,14,29,-0.2,0.7),CpGuai(4,30,20,0.25,0.4),CpGuai(4,21,29,0,0.65);if(b==121) CpGuai(4,5,20,-0.2,0.35),CpGuai(4,10,29,-0.2,0.7),CpGuai(4,14,29,-0.1,0.7),CpGuai(4,30,20,0.4,0.4),CpGuai(4,18,29,0,0.65);if(b==161) CpGuai(4,10,29,-0.4,0.7),CpGuai(4,14,29,-0.2,0.7),CpGuai(4,21,29,0,0.6),CpGuai(4,10,29,-0.2,0.7),CpGuai(4,14,29,-0.1,0.7),CpGuai(4,18,29,0,0.65);if(b>=200&&b<=500&&b%40==1) {float r=0,rr;for(int i=1;i<=5;i++){X5:rr=0.7+(rand()%5)/10.0;if(rr==r)goto X5;r=rr;CpGuai(4,i*3+7,29,0,0.5+(rand()%50)/80.0);}}if(b>540&&b<=565&&b%5==1) CpGuai(4,5,8,-2,0.2);if(b>590&&b<=615&&b%5==1) CpGuai(4,30,8,1.5,0.2);if(b>640&&b<=665&&b%5==1) CpGuai(4,5,8,-1.5,0.3);if(b>690&&b<=715&&b%5==1) CpGuai(4,30,8,2,0.3);if(b>=750&&b<=950&&b%20==1) {float r=0,rr;for(int i=1;i<=3;i++){X6:rr=0.7+(rand()%5)/10.0;if(rr==r)goto X6;r=rr;CpGuai(4,i*5+7+(rand()%3),29,0,0.5+(rand()%50)/200.0);}}if(b>=1000&&b<=1300) MesGuai(4,5);}
}
void RandGood(){
    if(Biao>0){Biao--;Guai(-1,0);}
    if(Gd[1]==0){Gd[1]=rand()%1000+1;if(Win==7)Gd[1]=10086;Gd[3]=rand()%16+8;}
    else if(Gd[1]<=5){Guai(-2-Gd[1],Gd[3]);memset(Gd,0,sizeof(Gd));}
    else if(Gd[1]>=20&&Gd[1]<27){Guai(-8,Gd[3]);memset(Gd,0,sizeof(Gd));}
    else if(Gd[1]>=30&&Gd[1]<37){Guai(-9,Gd[3]);memset(Gd,0,sizeof(Gd));}
    else if(Gd[1]>=40&&Gd[1]<70){Gd[2]++;if(Gd[2]%2==1)Guai(-10,Gd[3]);if(Gd[2]>=9)memset(Gd,0,sizeof(Gd));}
    else if(Gd[1]>=70&&Gd[1]<100){Gd[2]++;if(Gd[2]%2==1)Guai(-11,Gd[3]);if(Gd[2]>=9)memset(Gd,0,sizeof(Gd));}
    else if(Boss!=0&&Gd[1]>=450&&Gd[1]<=500){Guai(-2,Gd[3]);memset(Gd,0,sizeof(Gd));}
    else Gd[1]=0;
    for(int i=0;i<20;i++){if(I[i][0]==-1) continue;Setpos(I[i][0],I[i][1]);Color(0);if(I[i][0]==20) cout<<"===";else cout<<"   ";I[i][1]++;if(I[i][0]>=28||I[i][0]<=0||I[i][1]>=29) I[i][0]=I[i][1]=-1;else Color(1),Setpos(I[i][0],I[i][1]),cout<<"■";Color(0);}
}
void Panboss(int bx,int by){
    float Nox[4],Noy[4];Nox[0]=X,Noy[0]=Y;
    if(Down==1&&X==22) Nox[1]=X+1,Noy[1]=Y-0.5,Nox[2]=X-1,Noy[2]=Y-0.5;
    else if(Down==2) Nox[1]=X+1,Noy[1]=Y-0.5,Nox[2]=-10,Noy[2]=-10;
    else if(Down==1||X<18) Nox[1]=X-1,Noy[1]=Y-0.5,Nox[2]=-10,Noy[2]=-10;
    else Nox[1]=X+1,Noy[1]=Y-0.5,Nox[2]=X-1,Noy[2]=Y-0.5;
    for(int i=0;i<3;i++){if((Boss==1||Boss==6)&&Wind==0&&Thun==0&&abs(Nox[i]-bx)<1&&abs(Noy[i]-by)<1&&Bgo1[4]==0) Blo-=20,Bgo1[4]=1,Killb=20,Kill=1;if((Boss==2||Boss==6)&&Wind==0&&Thun==0&&abs(Nox[i]-bx)<1&&abs(Noy[i]-by)<1&&Bgo2[8]==0) Blo-=20,Bgo2[8]=1,Killb=20,Kill=1;}
}
void Boss1(){
    for(int j=0;j<20;j++)if(abs(Bx1-I[j][0])<2&&By1-I[j][1]<=2){Setpos(I[j][0],I[j][1]);if(I[j][0]==20) cout<<"===";else cout<<"   ";I[j][0]=I[j][1]=-1;Bblo-=8+Lv*2;Exp+=2;}
    if(Bbr==Bbl&&Bbr!=0) Bbr=Bbl=0;
    for(int i=1;i<=3+(Bbl-Bbr)/5;i++)if(Bbr<Bbl){Setpos(Bway[Bbr][0],Bway[Bbr][1]);if(Bway[Bbr][0]==20) cout<<"==";else cout<<"  ";Bbr++;}
    if(Bwhat1==5){int bx,by;Color(5);for(int i=0;i<10;i++){bx=Bx1-i*Bvx1/10.0;by=By1-i*Bvy1/10.0;Setpos(bx,by),cout<<"█";Bbl++;Bway[Bbl][0]=bx;Bway[Bbl][1]=by;}Color(0);}
    Bx1-=Bvx1;By1-=Bvy1;
    if(Bwhat1==0){X2:Bwhat1=rand()%7;if(Bwhat1==2||Bwhat1==3){if(By1<=10||By1>25) goto X2;}if(Bwhat1==4){if(By1<=15||Bx1<20) goto X2;Bgo1[2]=Bx1;Bgo1[3]=By1-1;}if(Bwhat1==5) {X0:Bgo1[3]=rand()%4+1;Bvx1=(rand()%101)/20.0;Bvy1=(rand()%101)/20.0;if(Bgo1[3]<=2) Bvx1*=-1;if(Bgo1[3]%2==1) Bvy1*=-1;if(abs(Bvx1)+abs(Bvy1)<=3||Out1)goto X0;}if(Bwhat1==6){if(By1<=17||By1>25) goto X2;}}
    if(Bwhat1==1){Bgo1[1]++,Bgo1[2]++;int R=rand()%(5-Bgo1[1]),r=rand()%(10-Bgo1[2]);if(Out1) R=0;if(R==0) {int vx=Bvx1,vy=Bvy1;Bgo1[1]=0;Bvx1=(rand()%101-20)/50.0;Bvy1=(rand()%101-20)/50.0;if(Bgo1[3]<=2) Bvx1*=-1;if(Bgo1[3]%2==1) Bvy1*=-1;if(Out1) r=0;} if(r==0) Chang1 }
    if(Bwhat1==2){Bgo1[1]++;if(Bgo1[1]>6){Bvy1=-0.3;br++;B[br].x=Bx1,B[br].y=By1-1;B[br].what=6;X3:B[br].vx=(rand()%21-10)/40.0;B[br].vy=(rand()%25)/30.0;if(B[br].vx<=0.8&&B[br].vy<=0.8)goto X3;int rx=rand()%50;if(rx==0) B[br].vx=0;B[br].life=1;}if(Bgo1[1]>8) Chang1}
    if(Bwhat1==3){Bgo1[1]++;if(Bgo1[1]>6&&Bgo1[1]%3==0){Bvy1=-0.3;br++;B[br].x=Bx1,B[br].y=By1-1;B[br].what=8;B[br].life=1;}if(Bgo1[1]>15) Chang1}
    if(Bwhat1==4){Bgo1[1]++;if(Bgo1[1]<=8){Setpos(Bgo1[2],Bgo1[3]);if(Bgo1[1]==1)cout<<" ";else if(Bgo1[1]>1&&Bgo1[2]==20) cout<<"==";else cout<<"  ";Bgo1[2]--;Setpos(Bgo1[2],Bgo1[3]);int r=rand()%4;if(r%2==0) Color(6);else Color(9);if(r<2) cout<<") ";else cout<<"】";Color(0);}if(Bgo1[1]==6) Bgo1[5]=X,Bgo1[6]=Y;if(Bgo1[1]==11){Map(0,(bool)Kill);Setpos(Bgo1[5],Bgo1[6]+1),cout<<"  ";Setpos(Bgo1[5],Bgo1[6]-1),cout<<"  ";Setpos(Bgo1[5]+1,Bgo1[6]),cout<<"  ";Setpos(Bgo1[5]-1,Bgo1[6]),cout<<"  ";int bx,by,bvx=Bgo1[2]-Bgo1[5],bvy=Bgo1[3]-Bgo1[6];Color(6);int i=0;while(1){bx=Bgo1[2]-i*bvx/30.0;by=Bgo1[3]-i*bvy/30.0;if(bx<=5||bx>=30||by<0||by>=29) break;Panboss(bx,by);Setpos(bx,by),cout<<"█";Bbl++;Bway[Bbl][0]=bx;Bway[Bbl][1]=by;i++;}Color(0);Map(-1,0);Chang1}}
    if(Bwhat1==5){Bgo1[1]++,Bgo1[2]++;int R=rand()%(5-Bgo1[1]),r=rand()%(10-Bgo1[2]);if(Out1) R=0;if(R==0) {int vx=Bvx1,vy=Bvy1;Bgo1[1]=0;X1:Bvx1=(rand()%101-20)/20.0;Bvy1=(rand()%101-20)/20.0;if(Bgo1[3]<=2) Bvx1*=-1;if(Bgo1[3]%2==1) Bvy1*=-1;if(abs(Bvx1)+abs(Bvy1)<=3||abs(Bvx1-vx)<=1||abs(Bvy1-vy)<=1)goto X1;if(Out1) r=0;} if(r==0) Chang1 }
    if(Bwhat1==6){Bgo1[1]++;if(Bgo1[1]>6&&Bgo1[1]%10==0){By1-=1;br++;B[br].x=Bx1,B[br].y=By1-1;B[br].what=9;X30:B[br].vy=1;B[br].life=1;}if(Bgo1[1]>31) Chang1}
}
void Boss2(){
    for(int j=0;j<20;j++)if(abs(Bx2-I[j][0])<2&&By2-I[j][1]<=2){Setpos(I[j][0],I[j][1]);if(I[j][0]==20) cout<<"===";else cout<<"   ";I[j][0]=I[j][1]=-1;Bblo-=8+Lv*2;Exp+=2;}
    if(Bbr==Bbl&&Bbr!=0) Bbr=Bbl=0;
    for(int i=1;i<=3+(Bbl-Bbr)/5;i++)if(Bbr<Bbl){Setpos(Bway[Bbr][0],Bway[Bbr][1]);if(Bway[Bbr][0]==20) cout<<"==";else cout<<"  ";Bbr++;}
    Bx2-=Bvx2;By2-=Bvy2;
    if(Bwhat2==0){X21:Bwhat2=rand()%7;if(Bwhat2==2){X31:for(int i=1;i<=3;i++){Bgo2[i*2+1]=rand()%28+1,Bgo2[i*2]=rand()%25+5;if((abs(Bgo2[i*2]-Bx2)<=2&&abs(Bgo2[i*2+1]-By2)<=2)||(abs(Bgo2[i*2]-X)<=2&&abs(Bgo2[i*2+1]-Y)<=2))goto X31;}if(Bgo2[2]==Bgo2[4]||Bgo2[2]==Bgo2[6]||Bgo2[6]==Bgo2[4]||Bgo2[5]==Bgo2[3]||Bgo2[3]==Bgo2[7]||Bgo2[5]==Bgo2[7]) goto X31;}if(Bwhat2==3){Bgo2[2]=rand()%2;}if(Bwhat2==4||Bwhat2==5||Bwhat2==6){Bvy2=-1.5;Bvx2=-0.5;}}
    if(Bwhat2==1){Bgo2[1]++,Bgo2[2]++;int R=rand()%(5-Bgo2[1]),r=rand()%(30-Bgo2[2]);if(Out2) R=0;if(R==0) {int vx=Bvx2,vy=Bvy2;Bgo2[1]=0;Bvx2=(rand()%101-20)/50.0;Bvy2=(rand()%101-20)/50.0;if(Bgo2[3]<=2) Bvx2*=-1;if(Bgo2[3]%2==1) Bvy2*=-1;if(Out2) r=0;} if(r==0) Chang2 }
    if(Bwhat2==2){Bgo2[1]++;float bx,by,bvx,bvy;if(Bgo2[1]<21){for(int i=1;i<=3;i++){bvx=Bgo2[i*2]-Bx2,bvy=Bgo2[i*2+1]-By2;if(Bgo2[1]<=10){Setpos(Bx2+(Bgo2[1]-1)*bvx/10.0,By2+(Bgo2[1]-1)*bvy/10.0);if(abs(Bx2+(Bgo2[1]-1)*bvx/10.0-20)<0.5)cout<<"==";else cout<<"  ";bx=Bx2+Bgo2[1]*bvx/10.0;by=By2+Bgo2[1]*bvy/10.0;Setpos(bx,by);}else Setpos(Bgo2[i*2],Bgo2[i*2+1]);int r=rand()%4;if(r%2==0) Color(3);else Color(10);if(r<=1) cout<<"×";else cout<<"+";Color(0);}}if(Bgo2[1]==21){Map(0,(bool)Kill);Color(3);int j=0;for(int j=0;j<=30;j++)for(int i=1;i<=3;i++)for(int k=1;k<=4;k++){if(k==1) bvx=j,bvy=0;if(k==2) bvx=-j,bvy=0;if(k==3) bvx=0,bvy=j;if(k==4) bvx=0,bvy=-j;bx=Bgo2[i*2]+bvx,by=Bgo2[i*2+1]+bvy;if(bx<=5||bx>=30||by<0||by>=30) {continue;}Panboss(bx,by);Setpos(bx,by),cout<<"█";Bbl++;Bway[Bbl][0]=bx;Bway[Bbl][1]=by;}Color(0);Map(-1,0);Chang2}}
    if(Bwhat2==3){Bgo2[1]++;if(Bgo2[1]<=18){if(Bgo2[3]==0) Setpos(Bgo2[4]-3,Bgo2[5]),cout<<"  ",Setpos(Bgo2[4]+3,Bgo2[5]),cout<<"  ",Color(0),Setpos(20,Bgo2[5]),cout<<"==";if(Bgo2[3]==1) Setpos(Bgo2[4],Bgo2[5]-3.5),cout<<"    ",Setpos(Bgo2[4],Bgo2[5]+2.5),cout<<"    ",Color(0),Setpos(20,Bgo2[5]+2.5),cout<<"====",Setpos(20,Bgo2[5]-3.5),cout<<"====";if(Bgo2[1]%4==0)Bgo2[3]=!Bgo2[3];if(Bgo2[1]%6<3)Color(3);else Color(5);if(Bgo2[3]==0) Setpos(X-3,Y),cout<<"▼",Setpos(X+3,Y),cout<<"▲",Bgo2[4]=(int)(X+0.5),Bgo2[5]=(int)(Y+0.5);if(Bgo2[3]==1) Setpos(X,Y-3),cout<<" ",Setpos(X,Y+3),cout<<" ",Bgo2[4]=(int)(X+0.5),Bgo2[5]=(int)(Y+0.5);Color(0);}if(Bgo2[1]==18){if(Bgo2[3]==0) Setpos(Bgo2[4]-3,Bgo2[5]),cout<<"  ",Setpos(Bgo2[4]+3,Bgo2[5]),cout<<"  ",Color(0),Setpos(20,Bgo2[5]),cout<<"==";if(Bgo2[3]==1) Setpos(Bgo2[4],Bgo2[5]-3.5),cout<<"    ",Setpos(Bgo2[4],Bgo2[5]+2.5),cout<<"    ",Color(0),Setpos(20,Bgo2[5]+2.5),cout<<"====",Setpos(20,Bgo2[5]-3.5),cout<<"====";}if(Bgo2[1]>18&&Bgo2[1]<=25){Bgo2[3]=Bgo2[2];if(Bgo2[3]==0) Setpos(Bgo2[4]-3,Bgo2[5]),cout<<"  ",Setpos(Bgo2[4]+3,Bgo2[5]),cout<<"  ",Color(0),Setpos(20,Bgo2[5]),cout<<"==";if(Bgo2[3]==1) Setpos(Bgo2[4],Bgo2[5]-3.5),cout<<"    ",Setpos(Bgo2[4],Bgo2[5]+2.5),cout<<"    ",Color(0),Setpos(20,Bgo2[5]+2.5),cout<<"====",Setpos(20,Bgo2[5]-3.5),cout<<"====";if(Bgo2[1]%4<2)Color(3);else Color(5);if(Bgo2[3]==0) Setpos(Bgo2[4]-3,Bgo2[5]),cout<<"▼",Setpos(Bgo2[4]+3,Bgo2[5]),cout<<"▲";if(Bgo2[3]==1) Setpos(Bgo2[4],Bgo2[5]-3),cout<<" ",Setpos(Bgo2[4],Bgo2[5]+3),cout<<" ";Color(0);}if(Bgo2[1]==25){if(Bgo2[2]==0){Color(3);for(int i=4;i<=29;i++){Setpos(i,Bgo2[5]),cout<<"█";Bbl++;Panboss(i,Bgo2[5]);Bway[Bbl][0]=i;Bway[Bbl][1]=Bgo2[5];}}if(Bgo2[2]==1){Color(3);for(int i=0;i<=28;i++){Setpos(Bgo2[4],i),cout<<"█";Bbl++;Panboss(Bgo2[4],i);Bway[Bbl][0]=Bgo2[4];Bway[Bbl][1]=i;}}Chang2}}
    if(Bwhat2==4||Bwhat2==5||Bwhat2==6){Bgo2[1]++;if(By2>27)Bvy2=0;if(Bx2>23)Bvx2=0;if(Bgo2[1]>13&&Bgo2[1]%3==0){float t=By2-Y,g=0.35;if(Boss==6) t/=2.0;CpGuai(Bwhat2+2,Bx2,By2,(Bx2-X)/t*1.0+(t-1)*g/2.0,1);}if(Bgo2[1]>20) Chang2}
}
void Boss3(){
    #define Bean br++;B[br].what=13;B[br].x=Bx3-1,B[br].y=By3-1;B[br].vy=1;B[br].life=1;
    for(int j=0;j<20;j++)if(abs(Bx3-I[j][0])<2&&By3-I[j][1]<=2){Setpos(I[j][0],I[j][1]);if(I[j][0]==20) cout<<"===";else cout<<"   ";I[j][0]=I[j][1]=-1;Bblo-=8+Lv*2;Exp+=2;}
    Bx3-=Bvx3;By3-=Bvy3;
    if(Bwhat3<=8){if(Bx3>X&&Bvx3<1.5) Bvx3+=0.3;if(Bx3<X&&Bvx3>-1.5) Bvx3-=0.3;}
    if(Bwhat3==0){X22:Bwhat3=rand()%12;if(Bwhat3==11&&abs(Bx3-20)<=1)goto X22;if(Bwhat3==11)Bgo3[2]=rand()%5;}
    if(Bwhat3==1){Bgo3[1]++;if(Bgo3[1]==6){br++;B[br].what=13;B[br].x=(int)Bx3-1,B[br].y=By3-1;B[br].vy=1;B[br].vx=1;B[br].How=(int)Bx3-4;B[br].life=1;br++;B[br].what=13;B[br].x=(int)Bx3-1,B[br].y=By3-1;B[br].vy=1;B[br].vx=-1;B[br].How=(int)Bx3+2;B[br].life=1;br++;B[br].what=13;B[br].x=(int)Bx3-1,B[br].y=By3-1;B[br].vy=1;B[br].life=1;Chang3}}
    if(Bwhat3>=2&&Bwhat3<=6){Bgo3[1]++;if(Bgo3[1]==6){br++;B[br].x=(int)Bx3-1,B[br].y=By3-1;B[br].what=11+Bwhat3;B[br].vy=0.5+(rand()%100)/80.0;if(Bwhat3==5)B[br].vy=B[br].vy*3/4.0;B[br].life=1;Chang3}}
    if(Bwhat3==7){Bgo3[1]++;if(Bgo3[1]==6){br++;B[br].what=14;B[br].x=(int)Bx3-1,B[br].y=By3-1;B[br].vy=1;B[br].vx=1;B[br].How=(int)Bx3-4;B[br].life=1;br++;B[br].what=14;B[br].x=(int)Bx3-1,B[br].y=By3-1;B[br].vy=1;B[br].vx=-1;B[br].How=(int)Bx3+2;B[br].life=1;br++;B[br].what=14;B[br].x=(int)Bx3-1,B[br].y=By3-1;B[br].vy=1;B[br].life=1;Chang3}}
    if(Bwhat3==8){Bgo3[1]++;if(Bgo3[1]==6){br++;B[br].what=15;B[br].x=(int)Bx3-1,B[br].y=By3-1;B[br].vy=1;B[br].vx=1;B[br].How=(int)Bx3-4;B[br].life=1;br++;B[br].what=15;B[br].x=(int)Bx3-1,B[br].y=By3-1;B[br].vy=1;B[br].vx=-1;B[br].How=(int)Bx3+2;B[br].life=1;br++;B[br].what=15;B[br].x=(int)Bx3-1,B[br].y=By3-1;B[br].vy=1;B[br].life=1;Chang3}}
    if(Bwhat3==9){Bvx3=0;Bgo3[1]++;if(Bgo3[1]==6||Bgo3[1]==8){Bean}if(Bgo3[1]>=8)Chang3}
    if(Bwhat3==10){Bvx3=0;Bgo3[1]++;if(Bgo3[1]==6||Bgo3[1]==8||Bgo3[1]==10||Bgo3[1]==12){Bean}if(Bgo3[1]>=12)Chang3}
    if(Bwhat3==11){Bvx3=0;Bgo3[1]++;if(Bgo3[1]>=8)for(int i=1;i<=4;i++){br++;B[br].what=80+100*Bgo3[2]+Bgo3[1]*4+i;B[br].x=Bx3-1,B[br].y=By3-1+i;B[br].vy=4;B[br].life=1;br++;B[br].what=99;B[br].x=Bx3,B[br].y=By3-1+i;B[br].vy=4;B[br].life=1;br++;B[br].what=99;B[br].x=Bx3-2,B[br].y=By3-1+i;B[br].vy=4;B[br].life=1;}if(Bgo3[1]>=20){for(int i=1;i<=4;i++){br++;B[br].what=98;B[br].x=Bx3-1,B[br].y=By3-1+i;B[br].vy=4;B[br].life=1;br++;B[br].what=98;B[br].x=Bx3,B[br].y=By3-1+i;B[br].vy=4;B[br].life=1;br++;B[br].what=98;B[br].x=Bx3-2,B[br].y=By3-1+i;B[br].vy=4;B[br].life=1;}Chang3}}
}
void Ball(int ball){
    if(ball==1){int f=0;for(int i=1;i<=3;i++) {if(fir[i]==1) fir[i]--,Fir++;else if(fir[i]>1) fir[i]--;else f=i;}if(Fir>0&&f!=0){br++;B[br].what=-13;B[br].x=X;B[br].y=Y+rand()%3-1;B[br].life=1;if(Dis<=30) B[br].a=Disb,B[Disb].a=1,fir[f]=20,Fir--;else if(Boss!=0) B[br].a=13880086,fir[f]=20,Fir--;else if(Dis!=13880087) B[br].a=Disb,B[Disb].a=1,fir[f]=20,Fir--;else if(Dis1!=13880087) B[br].a=Disb1,B[Disb1].a=1,fir[f]=20,Fir--;else B[br].life=0;Dis=Dis1=13880087;}}
    if(ball==2){if(T%4==0)ib=(ib+1)%20,I[ib][1]=Y-2;if(T%16==0)I[ib][0]=X;if(T%16==4)I[ib][0]=X-1;if(T%16==8)I[ib][0]=X+1;if(T%16==12)I[ib][0]=X-2;if(T%12==9)I[ib][0]=X+2;if(Water==1){for(int i=X-6;i<=X+6;i++)ib=(ib+1)%20,I[ib][0]=i,I[ib][1]=Y-2-0.5*abs(i-X);}}
    if(ball==3){if(Wind>5){if(Y<Ding-1)Vy=5;else Vy=0;if(Up>=1) Vx=-5;if(Down==2) Vx=5;}if(Wind<5){if(Y>Ding-1)Vy=-5;else Vy=0;if(Up>=1) Vx=-5;if(Down==2) Vx=5;}if(Wind==5){if(Boss==2) Ding=12.25;else Ding=6.25;if(Boss!=0) Bblo-=16+Lv*4;if(Boss==1) Chang1 if(Boss==2) Chang2 if(Boss==3) Chang3 system("color 3F");Sleep(20);system("color 6F");Sleep(10);system("color 0F");system("cls");for(int i=bl;i<=br;i++)if(B[i].what>0)B[i].life=0;Setpos(20,0);for(int i=1;i<=60;i++) printf("=");}}
    if(ball==4){if(Thun==1){if(Boss!=0) Bblo-=16+Lv*4;if(Boss==1) Chang1 if(Boss==2) Chang2 if(Boss==3) Chang3 system("color 9F");Sleep(20);system("color 6F");Sleep(10);system("color 0F");system("cls");for(int i=bl;i<=br;i++)if(B[i].what>0)B[i].life=0;Setpos(20,0);for(int i=1;i<=60;i++) printf("=");}}
    if(ball==5){system("cls"); Color(5);Setpos(10,10);cout<<"新天赋!";Y:int rr=rand()%4+2;Setpos(12,10);if(rr==Ren) goto Y;if(rr==2)cout<<"瞬跳";if(rr==3)cout<<"空之舞";if(rr==4)cout<<"三段跳";if(rr==5)cout<<"反重力跳跃";Setpos(14,10);cout<<"当前天赋:";if(Ren==1)cout<<"小无敌";if(Ren==2)cout<<"瞬跳";if(Ren==3)cout<<"空之舞";if(Ren==4)cout<<"三段跳";if(Ren==5)cout<<"反重力跳跃";Setpos(16,10);cout<<"换否?(y/n)";G:char g=_getch();if(g=='y')Ren=rr;else if(g!='n')goto G;system("cls");Setpos(20,0);Color(0);for(int i=1;i<=60;i++) printf("=");}
    if(ball==6){Color(4);for(float i=1;i<=Bblo;i+=Bblomax/20.0)cout<<"▄";Color(0);cout<<' '<<Bblo<<"                              ";Color(0);}
    if(ball==7){Color(1);if(Win==7&&T%6<3)Color(3);for(float i=1;i<=Blo;i+=Blomax/20.0)cout<<"▄";Color(0);if(Win==7&&T%6<3)Color(3);printf(" %0.1f                              ",Blo);}
}
int main(){
    system("mode con cols=60 lines=37");CONSOLE_CURSOR_INFO cursor_info={1,0};SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);srand((unsigned)time(NULL));
    Win=0;Ren=1;Lv=1;Blo=Blomax=100;Expmax=300;Hui=15;X=18,Y=6;
    ReStart:system("cls");memset(B,0,sizeof(B));memset(I,-1,sizeof(I));T=0;bl=0;br=-1;Upt=0;
    Start:Blo=Blomax;Ding=6.25;
    memset(Bgo1,0,sizeof(Bgo1));memset(Bgo2,0,sizeof(Bgo2));memset(Bgo3,0,sizeof(Bgo3));
    if(Win%2==0) T=0;if(Win%2==0&&D==0){if(Win>0)Ball(5);Boss=0;lL:L=rand()%4+1;for(int i=0;i<=Win/2-1;i++)if(L==Ll[i]) goto lL;Ll[Win/2]=L;}if(Win%2==1&&D==0){if(Win==7)Boss=6,T=0,Blomax+=100;else{bl:Boss=rand()%3+1;for(int i=0;i<=3;i++)if(Boss==Bl[i]) goto bl;}Bl[Win/2]=Boss;Bwhat1=Bwhat2=Bwhat3=0,Bx1=10,By1=20,Bx2=15,By2=20,Bx3=21,By3=20;system("color 4C");Sleep(20);system("color 0F");Map(0,1);Sleep(1000);}if(Win%2==1){Bblomax=500+(Win/2)*500;Bblo=Bblomax;if(Boss==2) Ding=12.25;}
	while(1){
        T++;
        if(Wind==0){if(GetAsyncKeyState(VK_LEFT)&0x8000) Vy=-(10-abs(Ding-Y)*1.5)/20.0;if(GetAsyncKeyState(VK_RIGHT)&0x8000) Vy=(10-abs(Ding-Y)*1.5)/20.0;}if(GetAsyncKeyState(VK_UP)&0x8000&&u1==0) {u1++;if(Down==1){Down=0;Up=0;if(Ren==2)Map(-1,0),Vx=0,X=18,Li=5;else Vx=7,Vy=0.3;}else if(Up==0&&Wind==0) {Down=0;Up=1;if(Ren==2)Map(-1,0),Vx=1,X=10,Map(0,3),Li=5;else Vx=2,Vy=0.1;}else if(Up==1&&Wind==0) {Down=0;Up=2;if(Ren==2)Map(-1,0),Vx=1,X-=6,Map(0,3),Li=5;else Vx=1.5,Vy=0.1;}else if(Ren==3&&Up==2&&Wind==0) {Down=0;Up=3;Vx=1;Vy=0.5;Upt=30;}else if(Ren==4&&Up==2&&Wind==0) {Down=0;Up=3;Vx=1.8;Vy=0.1;}}if(GetAsyncKeyState(VK_DOWN)&0x8000&&u2==0) {u2++;if(Down==1&&Ren==5){Down=2;Up=0;Vx=-1.7;}else {Down=1;Up=0;if(Ren==2)Map(-1,0),Vx=0,X=22,Map(0,3),Li=5;else {if(Upt!=0) Map(-1,0),Upt=0;Vx=-7;}}}if((GetAsyncKeyState(VK_UP)&0x8000) ?0:1) u1=0;if((GetAsyncKeyState(VK_DOWN)&0x8000) ?0:1) u2=0;if(kbhit()){char g=_getch();if(g==' ') Sleep(100),Setpos(4,1),Sy++,system("pause");}if(Sy==1) Setpos(4,1),printf("                           "),Sy--;
        if(Drug==0) Blo=fmin((float)Blomax,Blo+Hui/100.0);else if(T%10==0)Blo--;if(T%20==0) {if(Kill!=0) Kill=0;if(Lvl!=0) Lvl=0;}if(Killb>0) Killb--;if(Li>0) Li--;if(Ice>0) Ice--;if(Drug>0) Drug--;if(Magne>0) Magne--;
        if(Fire>0) Ball(1),Fire--;if(Water>0) Ball(2),Water--;if(Wind>0) Ball(3),Wind--;if(Thun>0) Ball(4),Thun--;
        if(Boss==0) NorGuai(L,T%1500);RandGood();if(T%20==1)Exp++;
        if(T%50==1){Exp++;system("cls");Setpos(20,0);Color(0);for(int i=1;i<=60;i++) printf("=");if(Win==0&&T<300){Setpos(4,6);cout<<"上下 跳跃/下翻,左右 些微移动(松手即返回)"; Setpos(6,6);cout<<"球可以开启特殊效果,Exp积满(300)可提升 Lv。";Setpos(8,6);cout<<"打败 7 波即胜利,打败 BOSS 有新天赋。";Setpos(10,15);cout<<"空格可以暂停。";}}
        Map(-1,0);
        if(Boss==1) Boss1();if(Boss==2) Boss2();if(Boss==3) Boss3();if(Boss==6) Boss1(),Boss2(),Boss3();
        Move();Map(0,(bool)Kill);Color(0);
        Setpos(1,1);Blo=fmin(Blo,(float)Blomax);if(Boss==0)cout<<"Blood: "<<(int)Blo<<"  ";Color(0);Setpos(1,9),cout<<"Death: "<<D<<"  ";Setpos(2,1);Exp=min(Exp,Expmax);if(Exp>=Expmax)Exp=0,Lv++,Lvl++,Hui++,Blomax+=5;if(Lvl>0)Color(5);cout<<"Lv: "<<Lv;Color(0);Setpos(2,9);cout<<"Exp: "<<Exp<<"  ";if(Boss>0) Setpos(3,1),cout<<"Blood     : ",Ball(7);if(Boss>0&&Boss!=6) Setpos(4,1),cout<<"Boss Blood: ",Ball(6);if(Boss==6) Setpos(1,9),printf("Time: %0.1f s  ",T/15.0);
		int speed=0;
		if(Win==0) speed=55;if(Win==1) speed=50;if(Win==2) speed=35;if(Win==3) speed=40;if(Win==4) speed=25;if(Win==5) speed=30;if(Win==6) speed=20;if(Win>=7) speed=17;
		if(Wind) speed/=2;Sleep(speed);
        if(Boss==3&&Bblo<=0){for(int i=1;i<=4;i++){br++;B[br].what=98;B[br].x=Bx3-1,B[br].y=By3-1+i;B[br].vy=4;B[br].life=1;br++;B[br].what=98;B[br].x=Bx3,B[br].y=By3-1+i;B[br].vy=4;B[br].life=1;br++;B[br].what=98;B[br].x=Bx3-2,B[br].y=By3-1+i;B[br].vy=4;B[br].life=1;}}
        if((Win%2==0&&T>=1400)||(Win%2==1&&Bblo<=0)||(Win==7&&T>=450)||Blo<=0) {Map(-1,0);break;}
    }if(Blo<=0){Sleep(1000);D++;system("color 7F");Setpos(15,11);Color(4);cout<<"GAME OVER...";Sleep(2000);goto ReStart;}else if(Win==6){system("color 7F");Setpos(15,11);Color(4);cout<<"坚持30秒 !";Sleep(2000);Setpos(30,0);Win++;D=0;}else if(Win==7){Sleep(1000);system("color 6E");Setpos(15,11);Color(5);cout<<"YOU WIN !";Sleep(2000);Setpos(30,0);return 0;}else Sleep(1000),Win++,D=0;goto Start;
}

<2019> 双人贪吃蛇

#include<iostream>
#include<cmath>
#include<cstdlib>
#include<cstdio>
#include<ctime>
#include<ctime>
#include<conio.h>
#include<windows.h>
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
using namespace std;
HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);
COORD coord;
void locate(int x, int y)
{
    coord.X=y*2;
    coord.Y=x;
    SetConsoleCursorPosition(hout,coord);
};
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);
}
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,hard;
char g;
bool b11,b21,b12,b22,b13,b23,b14,b24;
const int Ti=1e4;
struct node {int x, y;}snake1[1000],snake2[1000];
node food[2];
int snake_length1,snake_length2,dir1,dir2;
int direct[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
void print_wall()
{
    cout<<"■";for(int i=1;i<=n+1;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+1;i++) cout<<"■";
}
void print_snake()
{
    locate(snake1[0].x,snake1[0].y);
    Color(3),cout<< "●",Color(0);
    for(int i=1;i<snake_length1-1;i++) {locate(snake1[i].x,snake1[i].y);Color(5),cout<<"●",Color(0);}
    locate(snake2[0].x,snake2[0].y);
    Color(3),cout<<"●",Color(0);
    for (int i=1;i<snake_length2-1;i++) {locate(snake2[i].x,snake2[i].y);Color(1),cout<<"●",Color(0);}
}
bool is_correct1()
{
    if(g!='3'&&(snake1[0].x== 0||snake1[0].y==0 || snake1[0].x == m + 1 || snake1[0].y == n + 1)) return false;
    if(g=='3')
    {
    	if(snake1[0].x == 0) snake1[0].x =m;
    	if(snake1[0].x == m+1) snake1[0].x =1;
    	if(snake1[0].y == 0) snake1[0].y =n;
    	if(snake1[0].y == n+1) snake1[0].y =1;
	}
	for(int i=1;i<=snake_length1-1;i++)if(snake1[0].x==snake1[i].x&&snake1[0].y==snake1[i].y) return false;
    for(int i=0;i<=snake_length2-1;i++)if(snake1[0].x==snake2[i].x&&snake1[0].y==snake2[i].y) return false; 
    return true;
}
bool is_correct2()
{
    if(g!='3'&&(snake2[0].x == 0 || snake2[0].y == 0 || snake2[0].x == m + 1 || snake2[0].y == n + 1))return false;
    if(g=='3')
    {
    	if(snake2[0].x == 0) snake2[0].x =m;
    	if(snake2[0].x == m+1) snake2[0].x =1;
    	if(snake2[0].y == 0) snake2[0].y =n;
    	if(snake2[0].y == n+1) snake2[0].y =1;
	}
    for (int i = 1; i <= snake_length2 - 1; i++)if(snake2[0].x == snake2[i].x  &&  snake2[0].y == snake2[i].y)return false; 
    for (int i = 0; i <= snake_length1 - 1; i++)if(snake2[0].x == snake1[i].x  &&  snake2[0].y == snake1[i].y)return false; 
    return true;
}
bool print_food(bool a)
{
    bool e;
    while (1)
    {
        e=true;
        int i=(int)random(0,m)+1;
        int j=(int)random(0,n)+1;
        food[a].x = i; food[a].y = j;
        for (int k = 0; k <= snake_length1 - 1; k++)
        if (snake1[k].x == food[a].x  &&  snake1[k].y == food[a].y){e= false; break; }
        for (int k = 0; k <= snake_length2 - 1; k++)
        if (snake2[k].x == food[a].x  &&  snake2[k].y == food[a].y){e= false;break; }
        if (food[0].x == food[1].x  &&  food[0].y == food[1].y) e= false;
        if (e)break;
    }
    locate(food[a].x,food[a].y);
    Color(2),cout << "◆",Color(0);
    return true;
}
bool go_ahead1()
{
    node tmp;
    bool e = false;
    tmp = snake1[snake_length1-1];
    for (int i = snake_length1 - 1; i >= 1;i--) snake1[i] = snake1[i - 1];
    snake1[0].x += direct[dir1][0];
    snake1[0].y += direct[dir1][1];
    locate(snake1[1].x, snake1[1].y);
    Color(5),cout << "●",Color(0);
    if(snake1[0].x==food[0].x&&snake1[0].y==food[0].y){snake_length1++;e=true;snake1[snake_length1-1]=tmp;print_food(0);}
    if(snake1[0].x==food[1].x&&snake1[0].y==food[1].y)
    {
        snake_length1++;e=true;
        snake1[snake_length1-1]=tmp;
        print_food(1);
    }
    if (!e)
    {
        locate(tmp.x, tmp.y);
        cout<<"  ";
    }
    locate(snake1[0].x, snake1[0].y);
    Color(3),cout << "●",Color(0);
    if (!is_correct1())
    {
        system("color 7F");Color(5);
        if(g=='1') locate(10,8),cout << "You lose!";
        if(g=='2'||g=='3') {locate(9,8);cout << "1p lose!";locate(11,8);cout<<"Length: "<<snake_length1;}
        Color(0);
        return false;
    }
    return true;
}
bool go_ahead2()
{
    node tmp;
    bool e=false;
    tmp=snake2[snake_length2-1];
    for (int i=snake_length2-1;i>=1;i--) snake2[i]=snake2[i - 1];
    snake2[0].x+=direct[dir2][0];
    snake2[0].y+=direct[dir2][1];
    locate(snake2[1].x, snake2[1].y);Color(1),cout << "●",Color(0);
    if(snake2[0].x==food[0].x&&snake2[0].y==food[0].y) {snake_length2++;e=true;snake2[snake_length2-1]=tmp;print_food(0);}
    if(snake2[0].x==food[1].x&&snake2[0].y==food[1].y) {snake_length2++;e=true;snake2[snake_length2-1]=tmp;print_food(1);}
    if(!e) {locate(tmp.x, tmp.y);cout<<"  ";}
    locate(snake2[0].x, snake2[0].y);Color(3),cout << "●",Color(0);
    if(!is_correct2())
	{
		system("color 7F");Color(1);
        if(g=='1') locate(10,8),cout << "You lose!";
        if(g=='2'||g=='3') {locate(9,8);cout<<"2p lose!";locate(11,8);cout<<"Length: "<<snake_length2;Color(0);return false;}
	}
    return true;
}
int Start()
{
    print_wall();
    print_snake();Color(2);
	locate(8,5);cout<<"◆";Color(4),cout<<" 双 人 贪 吃 蛇";Color(2),cout<<" ◆"; Color(5);
	locate(10,1);cout<<" 1.单人模式(A W S D↑←↓→八键位系统)"; Color(1);
	locate(12,1);cout<<" 2.双人模式(双人 2*4 键位系统)";Color(3);
	locate(14,1);cout<<" 3.双人·“无限宇宙”模式";Color(0);
	A:if(kbhit()) g=_getch();
    if(g!='1'&&g!='2'&&g!='3') goto A;
}
int main()
{
    system("mode con cols=45 lines=26");
    CONSOLE_CURSOR_INFO cursor_info={1,0};
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
    srand((unsigned)time(NULL));
    m=20,n=20,hard=10*Ti;ST:
    snake_length1=snake_length2 = 5;
    double hard_len;
    dir1=3;dir2=2;
    for(int i=0;i<=4;i++) {snake1[i].x=6;snake1[i].y=6-i;}
    for(int i=0;i<=4;i++) {snake2[i].x=15;snake2[i].y=15+i;}
    Start();
    system("cls");
    hide();
    print_wall();
    print_food(0);
    if(g=='2'||g=='3') print_food(1);
    print_snake();
    locate(m+2,0);cout<<"Now Length 1:";
    locate(m+3,0);cout<<"Now Length 2:";
    locate(m+4,0);cout<<"按 k/l 加/减 速   速度:";locate(m+4,13),cout<<hard/100;
    locate(10,4);Color(4);cout<<"Please point 'y' to Start";Color(0);
    SS: char ee=_getch(); if(ee!='y') goto SS;
    locate(10,4);cout<<"                           ";
    while (1)
    {
        b11=b21=b12=b22=b13=b23=b14=b24=0;
        for(int i=1;i<=hard;i++)
        {
        	if(g=='1')
        	{
            	if(KEY_DOWN(87)||KEY_DOWN(40)) {if (dir1 == 2 || dir1 == 3){dir1 = 0;if(b11==0) b11=1,go_ahead1();}}
            	else if(KEY_DOWN(83)||KEY_DOWN(38)) {if (dir1 == 2 || dir1 == 3){dir1 = 1;if(b12==0) b12=1,go_ahead1();}}
            	else if(KEY_DOWN(65)||KEY_DOWN(39)) {if (dir1 == 0 || dir1 == 1){dir1 = 2;if(b13==0) b13=1,go_ahead1();}}
            	else if(KEY_DOWN(68)||KEY_DOWN(37)) {if (dir1 == 0 || dir1 == 1){dir1 = 3;if(b14==0) b14=1,go_ahead1();}}
            	if(KEY_DOWN(38)||KEY_DOWN(83)) {if (dir2 == 2 || dir2 == 3){dir2 = 0;if(b21==0) b21=1,go_ahead2();}}
            	else if(KEY_DOWN(40)||KEY_DOWN(87)) {if (dir2 == 2 || dir2 == 3){dir2 = 1;if(b22==0) b22=1,go_ahead2();}}
            	else if(KEY_DOWN(37)||KEY_DOWN(68)) {if (dir2 == 0 || dir2 == 1){dir2 = 2;if(b23==0) b23=1,go_ahead2();}}
            	else if(KEY_DOWN(39)||KEY_DOWN(65)) {if (dir2 == 0 || dir2 == 1){dir2 = 3;if(b24==0) b24=1,go_ahead2();}}
			}
        	if(g=='2'||g=='3')
        	{
            	if(KEY_DOWN(87)) {if (dir1 == 2 || dir1 == 3){dir1 = 0;if(b11==0) b11=1,go_ahead1();}}
            	else if(KEY_DOWN(83)) {if (dir1 == 2 || dir1 == 3){dir1 = 1;if(b12==0) b12=1,go_ahead1();}}
            	else if(KEY_DOWN(65)) {if (dir1 == 0 || dir1 == 1){dir1 = 2;if(b13==0) b13=1,go_ahead1();}}
            	else if(KEY_DOWN(68)) {if (dir1 == 0 || dir1 == 1){dir1 = 3;if(b14==0) b14=1,go_ahead1();}}
            	if(KEY_DOWN(38)) {if (dir2 == 2 || dir2 == 3){dir2 = 0;if(b21==0) b21=1,go_ahead2();}}
            	else if(KEY_DOWN(40)) {if (dir2 == 2 || dir2 == 3){dir2 = 1;if(b22==0) b22=1,go_ahead2();}}
            	else if(KEY_DOWN(37)) {if (dir2 == 0 || dir2 == 1){dir2 = 2;if(b23==0) b23=1,go_ahead2();}}
            	else if(KEY_DOWN(39)) {if (dir2 == 0 || dir2 == 1){dir2 = 3;if(b24==0) b24=1,go_ahead2();}}
			}
            if(KEY_DOWN(76)) hard=min(hard+10,20*Ti),locate(m+4,13),cout<<2000-hard/100<<"   ";
            if(KEY_DOWN(75)) hard=max(hard-10,2*Ti),locate(m+4,13),cout<<2000-hard/100<<"   ";
        }
        if(snake_length1>snake_length2) {if(!go_ahead2()) break;if(!go_ahead1()) break;}
        if(snake_length1<snake_length2) {if(!go_ahead1()) break;if(!go_ahead2()) break;}
        if(snake_length1==snake_length2) {int r=rand()%2;if(r==0&&!go_ahead1()) break;if(r==0&&!go_ahead2()) break;if(r==1&&!go_ahead2()) break;if(r==1&&!go_ahead1()) break;}
        locate(m+2,12);cout<<snake_length1;
        locate(m+3,12);cout<<snake_length2;
    }
    char e;
    locate(13,4);cout<<"Please point 'y' to Play AGain.";
    A:e=_getch(); if(e=='y') goto ST; else goto A;
    return 0;
}

<2019> 愤怒的小胎

#include<bits/stdc++.h>
#include<windows.h>
#include<stdio.h>
#include<conio.h>
#include<time.h>
using namespace std;
const double pi=3.1415926536;
int toint(float a){return ((int)(a*10+5))/10;}
void Color(int a)
{
    if(a==0||a==14||a==20) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
    if(a==1||a==12) 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||a==11) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);
    if(a==5||a==13) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
    if(a==7) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN|FOREGROUND_BLUE);
    if(a==15) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY);
    if(a==16) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN);
    if(a==17) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);
    if(a==8) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
    if(a==6) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);
    if(a==9) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|BACKGROUND_RED|BACKGROUND_GREEN);
}
void SetPos(float x,float y)
{
    int xx=toint(x),yy=toint(y);
    COORD pos;pos.X=yy*2,pos.Y=xx;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
struct node
{
    int W,W2,S,mS;
    float X,Y;
    float vx,vy;
    float ax,ay;
    bool go,boom;
}blt[100001],pig[100001],boo[100001];
int T,yX,yY,Xy,put,K,K2,Sle,What;
int Bot,Pit,Blt,Pig,Sco,pigk,scok;
int m[41][41];
void Cout(int a,int x,int y)
{
    if(a==1) SetPos(x,y),Color(5),cout<<put<<' ';
    if(y==202)
    {
        SetPos(pig[a].X,pig[a].Y);cout<<"  ";
        if((pig[a].W==2||pig[a].W==3)&&pig[a].X>=2) SetPos(pig[a].X-2,pig[a].Y);cout<<"  ",SetPos(pig[a].X-1,pig[a].Y);cout<<"  ";
        if(pig[a].W==4) SetPos(pig[a].X,pig[a].Y-1),cout<<"  "; 
        if(pig[a].W==5) SetPos(pig[a].X-1,pig[a].Y),cout<<"  ",SetPos(pig[a].X-1,pig[a].Y-1),cout<<"  ";
    }
    if(a==2)
    for(int i=0;i<=40;i++)
    for(int j=0;j<=40;j++)
    {
        if(i<=18&&m[i][j]==1) SetPos(i,j),Color(7),cout<<"■";
        if(m[i][j]>=2&&m[i][j]<=19) SetPos(i,j),Color(5),cout<<"█",m[i][j]++;
        if(m[i][j]>19&&m[i][j]<=29) SetPos(i,j),Color(0),cout<<"█",m[i][j]++;
        if(m[i][j]==30) SetPos(i,j),Color(0),cout<<"  ",m[i][j]=0;
        if(m[i][j]>=31&&m[i][j]<=49) SetPos(i,j),Color(0),cout<<"■",m[i][j]++;
        if(m[i][j]==50) SetPos(i,j),Color(7),cout<<"■",m[i][j]=1;
    }
    if(y==666)
    {
        SetPos(blt[a].X,blt[a].Y);
        Color(10+blt[a].W),cout<<"●";
    }Color(0);
}
void Go(int a)
{
    SetPos(blt[a].X,blt[a].Y);cout<<"  ";
    blt[a].X+=blt[a].vx/2;blt[a].Y+=blt[a].vy/2;blt[a].vx+=blt[a].ax/2;blt[a].vy+=blt[a].ay/2;
    if(blt[a].X>=20) blt[a].X=19;
    if(blt[a].X>20||blt[a].Y>38||blt[a].X<0||blt[a].Y<=0) blt[a].go=1;
    if(blt[a].W2==1&&blt[a].Y>=Xy) blt[a].go=1,Sle=0;//地跑鸟
    if(blt[a].W2==0)
    {
        for(int i=0;i<=blt[a].vx/2+1;i++)
        {
            if(blt[a].vx>0&&m[toint(blt[a].X)+i][toint(blt[a].Y)]==1) //上反弹 
            {
                if(blt[a].W!=5) blt[a].boom=1;
                blt[a].X=toint(blt[a].X)+i-1,blt[a].Y+=blt[a].vy/2,blt[a].vx=-blt[a].vx*0.4,blt[a].vy=blt[a].vy*0.8;
                if(blt[a].W==3) blt[a].ax=0.5;if(blt[a].W==7) blt[a].vx*=2;
                if(blt[a].W==10) blt[a].go=1,Bot++,boo[Bot].X=blt[a].X,boo[Bot].Y=blt[a].Y,boo[Bot].S=1,boo[Bot].mS=4;
            }
            if(blt[a].vx<0&&m[toint(blt[a].X)-i][toint(blt[a].Y)]==1) //下反弹 
            {
                if(blt[a].W!=5) blt[a].boom=1;
                blt[a].X=toint(blt[a].X)+i+1,blt[a].Y+=blt[a].vy/2,blt[a].vx=-blt[a].vx,blt[a].vy=blt[a].vy*0.8;
                if(blt[a].W==3) blt[a].ax=0.5;if(blt[a].W==7) blt[a].vx*=2;
                if(blt[a].W==10) blt[a].go=1,Bot++,boo[Bot].X=blt[a].X,boo[Bot].Y=blt[a].Y,boo[Bot].S=1,boo[Bot].mS=4;
            }
        }
        if(abs(blt[a].vx)<=0.1&&abs(blt[a].vy)<=0.1&&abs(blt[a].ay)<=0.1)
        {
            blt[a].go=1;
            if(blt[a].W==5) Bot++,boo[Bot].X=blt[a].X,boo[Bot].Y=blt[a].Y,boo[Bot].S=1,boo[Bot].mS=4,blt[a].go=1;
        }
    }
    if(blt[a].go==0) Cout(a,0,666);
}
void Kill(int a)
{
    if(pig[a].go==0&&pig[a].W!=2&&pig[a].W!=3&&pig[a].Y<16) Cout(a,202,202),pig[a].Y=16;
    if(pig[a].go==0&&pig[a].W==4&&pig[a].Y<20) pig[a].W=1;
    int R=rand()%50;Cout(a,202,202);
    /清除猪猪 
    pig[a].X+=pig[a].vx/2;pig[a].Y+=pig[a].vy/2;pig[a].vx+=pig[a].ax/2;pig[a].vy+=pig[a].ay/2;
    for(int i=-2;i<=pig[a].vx/2+1;i++)
    {
        if(m[toint(pig[a].X)+i][toint(pig[a].Y)]==1) //上反弹 
        pig[a].X=toint(pig[a].X)+i-1,pig[a].Y+=pig[a].vy/2,pig[a].vx=-pig[a].vx*0.5,pig[a].vy=pig[a].vy*0.8;
    }
    for(int i=Blt-10;i<=Blt;i++)
    {
        if(pig[a].W==5&&blt[i].go==0&&abs(pig[a].X-blt[i].X)<=1&&abs(pig[a].Y-blt[i].Y)<=1) {m[toint(pig[a].X)-1][toint(pig[a].Y)]=2,pig[a].W2++;Sco+=2;break;}
        if(pig[a].W==5&&m[toint(pig[a].X)][toint(pig[a].Y)]>=2&&m[toint(pig[a].X)][toint(pig[a].Y)]<30) {m[toint(pig[a].X)-1][toint(pig[a].Y)]=2,pig[a].W2++;Sco+=2;break;}
        if(blt[i].go==0&&abs(pig[a].X-blt[i].X)<=1&&abs(pig[a].Y-blt[i].Y)<=1)
        {
            if(pig[a].W==6) Bot++,boo[Bot].X=pig[a].X,boo[Bot].Y=pig[a].Y,boo[Bot].S=1,boo[Bot].mS=4,blt[i].go=1;
            m[toint(pig[a].X)][toint(pig[a].Y)]=2,pig[a].go=1,Pig--,Sco+=10;break;
        }
        if(m[toint(pig[a].X)][toint(pig[a].Y)]>=2&&m[toint(pig[a].X)][toint(pig[a].Y)]<30)
        {
            if(pig[a].W==6) Bot++,boo[Bot].X=pig[a].X,boo[Bot].Y=pig[a].Y,boo[Bot].S=1,boo[Bot].mS=4;
            pig[a].go=1,Pig--,Sco+=10;break;
        }
        if((pig[a].W==2||pig[a].W==3)&&blt[i].go==0&&abs(pig[a].X-2-blt[i].X)<=1&&abs(pig[a].Y-blt[i].Y)<=1) {m[toint(pig[a].X)][toint(pig[a].Y)]=2,pig[a].go=1,Pig--,Sco+=10;break;}
        if((pig[a].W==2||pig[a].W==3)&&m[toint(pig[a].X-2)][toint(pig[a].Y)]>=2&&m[toint(pig[a].X-2)][toint(pig[a].Y)]<30) {pig[a].go=1,Pig--,Sco+=10;break;}
    }
    /弄死猪猪 
    if(pig[a].go==0)
    {
        if(pig[a].go==0&&pig[a].W!=2&&pig[a].W!=3&&pig[a].Y<16) Cout(a,202,202),pig[a].Y=16;
        if(pig[a].go==0&&pig[a].W==4&&pig[a].Y<20) pig[a].W=1;
        int Xx=toint(pig[a].X),Xy=toint(pig[a].Y);
        if(pig[a].W==6) SetPos(pig[a].X,pig[a].Y),Color(9),cout<<"TN",Color(0);
        else{
        SetPos(pig[a].X,pig[a].Y),Color(2),cout<<"●";
        if((pig[a].W==2||pig[a].W==3)&&pig[a].X>=2) SetPos(pig[a].X-2,pig[a].Y),Color(0),cout<<"○",SetPos(pig[a].X-1,pig[a].Y),cout<<"|";
        if(pig[a].W==4) SetPos(pig[a].X,pig[a].Y-1),Color(2),cout<<"﹃";
        if(pig[a].W==5)
        {
            SetPos(pig[a].X-1,pig[a].Y),Color(8);SetPos(pig[a].X-1,pig[a].Y-1),cout<<"▁";
            if(pig[a].W2==0)cout<<"▅";if(pig[a].W2==1)cout<<"▃";if(pig[a].W2==2)cout<<"▂";if(pig[a].W2==3) pig[a].W=1,pig[a].W2=0,SetPos(pig[a].X-1,pig[a].Y-1),cout<<"  ";
        }
        }
        /输出猪猪 
        if(pig[a].W==2&&pig[a].X>pig[a].S) pig[a].W=3,pig[a].ax=-0.4,pig[a].vx=1.5;
        else if(pig[a].W==3&&pig[a].X<=pig[a].S) pig[a].W=2,pig[a].ax=0.4,pig[a].vx=-1.5;
        if((pig[a].W==2||pig[a].W==3)&&(pig[a].Y<=10||pig[a].Y>=38)) pig[a].vy*=-1;
        if(pig[a].W==4&&R==0&&pig[a].X==20) pig[a].vx=-((rand()%40)/10);
        if(pig[a].W==4)
        {
            int r=rand()%20;
            for(int i=Blt-10;i<=Blt;i++) if(r<=5&&blt[i].go==0&&pig[a].Y-blt[i].Y<=5&&abs(blt[i].X-pig[a].X)<=1.5&&r<5) r=0;
            if(r==0)
            {
                m[toint(pig[a].X)][toint(pig[a].Y)-2]=10;m[toint(pig[a].X)][toint(pig[a].Y)-3]=2;
                for(int j=toint(pig[a].Y)-1;j>=toint(pig[a].Y)-5;j--)
                {
                    for(int i=Blt-10;i<=Blt;i++) if(blt[i].go==0&&!(blt[i].W==3&&blt[i].boom==1)&&blt[i].W2==0&&toint(blt[i].Y)==j&&abs(blt[i].X-pig[a].X)<=2) blt[i].vy=-2;
                    for(int i=Pit-50;i<=Pit;i++) if(pig[i].go==0&&toint(pig[i].Y)==j&&abs(pig[i].X-pig[a].X)<=2) pig[i].vy=-1;
                }
            }
        }
        /移动猪猪 
        if(pig[a].go==0&&pig[a].W!=2&&pig[a].W!=3&&pig[a].Y<16) Cout(a,202,202),pig[a].Y=16;
        if(pig[a].go==0&&pig[a].W==4&&pig[a].Y<20) pig[a].W=1;
        if(pig[a].X>20||pig[a].Y>38||pig[a].X<0||pig[a].Y<=0) pig[a].go=1,Pig--,Cout(a,202,202);
        /清除猪猪 
    }
}
void Creat(int a,int p)
{
    if(a==-1&&p==-1)
    {
        Blt++;blt[Blt].W=What;blt[Blt].W2=1;
        blt[Blt].vy=1;blt[Blt].X=19;blt[Blt].Y=0;blt[Blt].boom=1;
    }
    else if(a==0&&p==-1)
    {
        int u=rand()%7+1,U=rand()%30;
        if(u>=5) Pit++,pig[Pit].Y=rand()%15+20,pig[Pit].X=2,pig[Pit].ax=0.5,pig[Pit].W=1;
        if(u==1) Pit++,pig[Pit].Y=rand()%15+20,pig[Pit].X=2,pig[Pit].vy=0.5,pig[Pit].ax=0.5,pig[Pit].S=rand()%5+7,pig[Pit].W=2;
        if(u==2) Pit++,pig[Pit].Y=rand()%15+20,pig[Pit].X=2,pig[Pit].ax=0.5,pig[Pit].W=4;
        if(u==3) Pit++,pig[Pit].Y=rand()%15+20,pig[Pit].X=2,pig[Pit].ax=0.5,pig[Pit].W=5;
        if(u==4) Pit++,pig[Pit].Y=rand()%15+20,pig[Pit].X=2,pig[Pit].ax=0.5,pig[Pit].W=6;
        if(U==1) Bot++,boo[Bot].Y=rand()%13+15,boo[Bot].X=(rand()%4)*3+8,boo[Bot].S=0,boo[Bot].mS=rand()%2+2,boo[Bot].W2=1;
    }
    else
    {
        Blt++;blt[Blt].W=What;
        if(a==1) blt[Blt].X=yX;blt[Blt].Y=yY;blt[Blt].ax=0.5; //抛物线
        blt[Blt].vx=-3.5*sin(p*pi/180);
        blt[Blt].vy=3*cos(p*pi/180);
        if(p<=45) blt[Blt].vy*=1+(0.33-0.01*(45-p));
        if(p>=45) blt[Blt].vy*=1+(0.33-0.01*(p-45));
        if(blt[Blt].W==6) blt[Blt].vy*=1.2,blt[Blt].ax=0.4;
    }
}
void Boom(int a)
{
    if(boo[a].W2==0)
    {
        int ms=boo[a].mS,s=boo[a].S,x=boo[a].X,y=boo[a].Y;
        if(s==ms) return;
        for(int i=x-s;i<=x+s;i++)
        for(int j=y-s;j<=y+s;j++)
        {
            float k=(i-x)*(i-x)+(j-y)*(j-y)-s*s;
            if(k<=s&&k>=-s&&i<=20&&j<=38&&i>=0&&j>0&&m[i][j]!=1) m[i][j]=2;
        }boo[a].S++;
    }
    if(boo[a].W2==1)
    {
        int ms=boo[a].mS,s=boo[a].S,x=boo[a].X,y=boo[a].Y;
        if(s==ms) return;
        if(y-s>10) m[x][y-s]=31-31*(boo[a].W2-1);
        if(y+s<40) m[x][y+s]=31-31*(boo[a].W2-1);
        boo[a].S++;
    }
}
void Move(int a)
{
    Color(5);
    if(a==-2) SetPos(17,Xy),cout<<"        ",SetPos(18,Xy),cout<<"        ",SetPos(19,Xy),cout<<"        ",SetPos(20,Xy),cout<<"       ";
    if(a==-1) SetPos(17,Xy),cout<<"        ",SetPos(18,Xy),cout<<"  ┃  ┃",SetPos(19,Xy),cout<<"  ╰┳╯",SetPos(20,Xy),cout<<"     ▏";
    if(a==0) SetPos(18,Xy),cout<<"  ┃",Color(What+10),cout<<"●",Color(5),cout<<"┃",SetPos(19,Xy),cout<<"  ╰┳╯",SetPos(20,Xy),cout<<"     ▏";
    if(a==1) SetPos(18,Xy),cout<<"  ",Color(What+10),cout<<"●",Color(5),cout<<"  ┃",SetPos(19,Xy),cout<<"  ╰┳╯",SetPos(20,Xy),cout<<"     ▏";
    if(a==2) SetPos(18,Xy),Color(What+10),cout<<"●",Color(5),cout<<"┃  ┃",SetPos(19,Xy),cout<<"  ╰┳╯",SetPos(20,Xy),cout<<"     ▏";
    if(a==3) SetPos(18,Xy),cout<<"  ┃  ┃",SetPos(19,Xy),Color(What+10),cout<<"●",Color(5),cout<<"╰┳╯",SetPos(20,Xy),cout<<"     ▏";
    if(a==4) SetPos(18,Xy),cout<<"  ┃  ┃",SetPos(19,Xy),cout<<"  ╰┳╯",SetPos(20,Xy),Color(What+10),cout<<"●",Color(5),cout<<"   ▏";
    if(a==5) SetPos(18,Xy),cout<<"  ┃  ┃",SetPos(19,Xy),cout<<"  ╰┳╯",SetPos(20,Xy),cout<<"  ",Color(What+10),cout<<"●",Color(5),cout<<" ▏";
    if(a==6) SetPos(18,Xy),cout<<"  ┃  ┃",SetPos(19,Xy),cout<<"  ╰┳╯",SetPos(20,Xy),cout<<"    ",Color(What+10),cout<<"●",Color(5),cout<<" ";
    Color(0);
}
void Start()
{
    char g;Color(5);system("cls");
    SetPos(1,1);cout<<"------- 愤 怒 的 小 胎 -------";Color(0);
    SetPos(3,1);cout<<"空格瞄准,按X触发小胎技能,←→移动弹弓";
    SetPos(5,1);cout<<"猪猪技能自动触发,空中会有墙出现。";
    SetPos(7,1);cout<<"危险值由命中率,猪的存活时间计算!";
    SetPos(9,1);cout<<"危险值点满后失败!1500分通关!";
    SetPos(1,20);cout<<"-------- 小 胎 技 能 --------";
    SetPos(3,20);Color(11),cout<<"●",Color(0),cout<<":无技能";
    SetPos(5,20);Color(12),cout<<"●",Color(0),cout<<":分身!不同分身初速度大小相同,";
    SetPos(6,20);cout<<"        方向不同。";
    SetPos(7,20);Color(13),cout<<"●",Color(0),cout<<":加速!以当前速度做匀速直线运动,";
    SetPos(8,20);cout<<"          且免疫狙击猪的冲击。";
    SetPos(9,20);Color(14),cout<<"●",Color(0),cout<<":投蛋!并获得向上速度做匀速直线";
    SetPos(10,20);cout<<"          运动,快达可以穿墙。";
    SetPos(11,20);Color(15),cout<<"●",Color(0),cout<<":爆炸!";
    SetPos(13,20);Color(16),cout<<"●",Color(0),cout<<":回旋!开始做向左加速运动!发射";
    SetPos(14,20);cout<<"          时获得双倍水平速度。";
    SetPos(15,20);Color(17),cout<<"●",Color(0),cout<<":[被动] 弹跳力为普通鸟三倍。发射";
    SetPos(16,20);cout<<"          时获得1.5倍水平、竖直速度。";
    SetPos(11,1);cout<<"-------- 猪 猪 技 能 --------";
    SetPos(13,2);Color(2),cout<<"●",Color(0),cout<<":无技能";
    SetPos(14,1);Color(8),cout<<"▁▅";
    SetPos(15,2);Color(2),cout<<"●",Color(0),cout<<":防御力为普通猪三倍";
    SetPos(16,2);cout<<"○";
    SetPos(17,2);cout<<"│:做空中简谐运动,受死范围";
    SetPos(18,2);Color(2),cout<<"●",Color(0),cout<<"  为普通猪两倍。";
    SetPos(19,2);cout<<"    有几率跳起或发射冲击波,冲";
    SetPos(20,1);Color(2),cout<<"﹃●",Color(0),cout<<":开小胎与同类,可以引爆TNT!";
    SetPos(18,20);Color(5),cout<<"按 y 开始游戏!";
    A:if(kbhit()) g=_getch();
    if(g!='y') goto A;
}
int main()
{
    system("mode con cols=79 lines=22");
    CONSOLE_CURSOR_INFO cursor_info={1,0};
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
    srand((unsigned)time(NULL));St:Start();system("cls");
    memset(blt,0,sizeof(blt));memset(pig,0,sizeof(pig));
    memset(boo,0,sizeof(boo));memset(m,0,sizeof(m));
    T=put=K=K2=Sle=What=Pig=Sco=0;pigk=scok=-1;
    Xy=4,yX=18,yY=6;Blt=20,Bot=20,Pit=60;Color(7);
    SetPos(19,14);cout<<"■";
    SetPos(20,13);cout<<" █▍";m[19][14]=m[20][13]=m[20][14]=1;
    SetPos(21,0);for(int i=0;i<39;i++) cout<<"■",m[21][i]=1;
    Color(0);What=rand()%5+1;
    while(1)
    {
        if(Sco>=1500) break;
        T++;K=0;Color(0);
        if(Sco!=scok) SetPos(1,1),cout<<"分数:"<<Sco<<' ';
        if(Pig!=pigk){SetPos(3,1);cout<<"危险值:";int aa=min(Sco/100,10);Pig+=aa;
        SetPos(3,5);if(Pig<=2) Color(2);else if(Pig<=4) Color(16);else if(Pig<=6) Color(7);else if(Pig<=9) Color(6);
        else if(Pig<=12) Color(3);else if(Pig<=15) Color(17);else Color(11);
        for(int i=1;i<=Pig;i++) cout<<"■";Color(0);cout<<' '<<Pig;for(int i=1;i<=5;i++) cout<<"  ";
        if(Pig>18) break;Pig-=aa;}
        scok=Sco;pigk=Pig;
        if(GetAsyncKeyState(VK_LEFT)&0x8000&&Xy>0) Move(-2),Xy--,K=1;
        if(GetAsyncKeyState(VK_RIGHT)&0x8000&&Xy<10) Move(-2),Xy++,K=1;
        if(K==1)
        {
            if(put==0&&Sle==0) Move(0);
            else Move(-1);
        }
        if(kbhit())
        {
            char g=_getch();
            if(g=='x'||g=='X')
            {
                for(int i=Blt-10;i<=Blt;i++)
                if(blt[i].go==0&&blt[i].boom==0&&blt[i].W!=1&&blt[i].W!=7)
                {
                    blt[i].boom=1;
                    if(blt[i].W==2)
                    {
                        Blt++;blt[Blt].W=2;blt[Blt].vy=blt[i].vy*1.2;blt[Blt].vx=blt[i].vx+1;
                        blt[Blt].ax=blt[i].ax;blt[Blt].X=blt[i].X;blt[Blt].Y=blt[i].Y;blt[Blt].boom=1;
                        Blt++;blt[Blt].W=2;blt[Blt].vy=blt[i].vy*0.7;blt[Blt].vx=blt[i].vx-1;
                        blt[Blt].ax=blt[i].ax;blt[Blt].X=blt[i].X;blt[Blt].Y=blt[i].Y;blt[Blt].boom=1;
                    }
                    if(blt[i].W==3) blt[i].vy=fmax(blt[i].vy*1.5,2.5),blt[Blt].vx+=1,blt[i].ax=0;
                    if(blt[i].W==4)
                    {
                        blt[i].vx=-3;blt[i].ax=0.1;Blt++;blt[Blt].boom=1;blt[Blt].W=10;
                        blt[Blt].X=blt[i].X;blt[Blt].Y=blt[i].Y;blt[Blt].ax=blt[i].ax,blt[Blt].vx=1;
                    }
                    if(blt[i].W==5) Bot++,boo[Bot].X=blt[i].X,boo[Bot].Y=blt[i].Y,boo[Bot].S=1,boo[Bot].mS=5,blt[i].go=1;
                    if(blt[i].W==6) blt[i].ay=-1,blt[i].ax=0.3,blt[i].vx=min(blt[i].vx/2,(float)0);
                    break;
                }
            }
        }
        if(GetAsyncKeyState(' ')&0x8000&&K==0&&Sle==0)
        {
            if(put<=5) Move(1),yX=18,yY=Xy+1;
            else if(put<=20) Move(2),yX=18,yY=Xy;
            else if(put<=40) Move(3),yX=19,yY=Xy;
            else if(put<=60) Move(4),yX=20,yY=Xy;
            else if(put<=80) Move(5),yX=20,yY=Xy+1;
            else Move(6),yX=20,yY=Xy+2;
            if(put==0) K2=1;if(put==90) K2=-1;
            if(K2==1) put+=min(rand()%7+1,90-put);
            if(K2==-1) put-=min(rand()%7+1,put);
            Cout(1,17,Xy+2);
        }
        if((!(GetAsyncKeyState(' ')&0x8000)&&(put!=0))||(put!=0&&K==1))
        Move(-1),Creat(1,put),put=0,yX=18,yY=5,Sle=1,What=rand()%7+1,Creat(-1,-1),Sco=max(Sco-5,0);
        for(int i=Blt-10;i<=Blt;i++) if(blt[i].go==0) Go(i);
        for(int i=Bot-10;i<=Bot;i++) if(boo[i].go==0) Boom(i),Cout(2,0,0);
        for(int i=Pit-50;i<=Pit;i++) if(pig[i].go==0) Kill(i);
        if(Sle!=0) Move(-1);
        else if(put==0) Move(0);
        if(T%300==0) system("cls"),pigk=scok=-1;
        if(T%100==0)
        {
            Color(7);
            for(int i=0;i<=18;i++)
            for(int j=0;j<=40;j++) if(m[i][j]==1&&T%100==0) SetPos(i,j),cout<<"■";
            SetPos(19,14),cout<<"■",SetPos(20,13),cout<<" █▍";
            SetPos(21,0);for(int i=0;i<39;i++) cout<<"■";Color(0);
        }
        if(T%min(50,(2000-Sco)/30)==0) Pig++,Creat(0,-1);
        Sleep(30);
    }
    if(Sco<1500) {SetPos(9,17);system("color 7F");Color(11);cout<<"YOU DIE !";}
    else {SetPos(9,17);system("color 6E");Color(5);cout<<"YOU WIN !";}
    SetPos(11,16);Sleep(1000);cout<<"play again? (y/n)";Sleep(1000);char g;
    A:if(kbhit()) g=_getch();SetPos(18,0);
    if(g=='n') return 0;
    else if(g!='y') goto A;
    else if(g=='y') goto St;
}

<2019> 小胎大乱斗

#include<bits/stdc++.h>
#include<windows.h>
#include<stdio.h>
#include<conio.h>
#include<time.h>
using namespace std;
bool Black;
void Color(int a){
	if(Black==1) {SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0);return;}
    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_GREEN|FOREGROUND_BLUE);
    if(a==8) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN);
    if(a==9) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE);
    if(a==10) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);
    if(a==11) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN);
    if(a==12) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
}
void SetPos(int x,int y) {COORD pos;pos.X=y*2,pos.Y=x;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}
void Slow(int a,char *p) {while(1){if(*p!=0)printf("%c",*p++);else break;Sleep(a);}}
struct node{
    char Name[201];
    int Blood,Bloodmax,Bloodjia;
    int Skilnum,Skilmax,Money,EXP,Shan;
    int Skil[1001],Skilstr[1001]; //触发率 
    int Blp,Blpt,Duk,Dut,Ice,Yun,Wudi,Wudit,Qipt;
    float Qi,Qip,Qijia;
}You[1001],Guai[1001];
struct node2{
    char Name[201];
    float Qi;
    int Kill,What,color; //物法
    int Any,Anykill[1001],Anywhat[1001],Time[1001];  //额外种类
    float Anyqi[1001];
}Skill[1001];
int Skkk[1001],Skll,skk,Tong,Tongmax,Ju,Juk,Jiao,Shen,Ji,Yuan,Shan,Fu;
int dy,dd,Dy,Dd,sa,sb,sc,ss,k1=-1,k2,k3,k4;
bool Y[10001],D[10001];
void CheckMe(){
    int aa=0;
    system("cls");Color(0);
    SetPos(1,1),printf("--------查看本体技能--------");
    SetPos(3,1),printf("技能数量上限:%d",You[0].Skilmax);
    for(int i=1;i<=You[0].Skilmax;i++)
    {
        if(You[0].Skilnum<i) {SetPos(5,i*11-10),cout<<"技能"<<i<<":空技能槽";continue;}
        SetPos(5,i*11-10),cout<<"技能"<<i<<":";
        Color(Skill[You[0].Skil[i]].color);printf("%s",Skill[You[0].Skil[i]].Name);Color(0);
        SetPos(7,i*11-10),cout<<"耗气量:";printf("%0.1f",Skill[You[0].Skil[i]].Qi);
        SetPos(9,i*11-10),cout<<"技能类型:";
        if(Skill[You[0].Skil[i]].What==1) cout<<"单体伤害";
        if(Skill[You[0].Skil[i]].What==2) cout<<"群体伤害";
        if(Skill[You[0].Skil[i]].What==3) cout<<"防御与辅助";
        if(Skill[You[0].Skil[i]].What<=2) SetPos(11,i*11-10),cout<<"攻击力:"<<Skill[You[0].Skil[i]].Kill;
        else SetPos(11,i*11-10),cout<<"无攻击力......";
        SetPos(13,i*11-10); if(Skill[You[0].Skil[i]].What%10!=4) cout<<"额外";cout<<"效果:";
        if(Skill[You[0].Skil[i]].Any==0) cout<<"无";
        else
        {
            for(int j=1;j<=Skill[You[0].Skil[i]].Any;j++)
            {
                aa=max(aa,j);
                int Sk=Skill[You[0].Skil[i]].Anywhat[j];
                SetPos(14+j*3-2,i*11-10);printf("%d. ",j);
                if(Skill[You[0].Skil[i]].What<=2)
                {
                if(Sk==1) printf("冰冻"),SetPos(14+j*3-1,i*11-9),printf(" 持续时间:%d",Skill[You[0].Skil[i]].Time[j]);
                if(Sk==2) printf("毒伤"),SetPos(14+j*3-1,i*11-9),printf(" 攻击力:%d",Skill[You[0].Skil[i]].Anykill[j]),SetPos(14+j*3,i*11-9),printf(" 持续时间:%d",Skill[You[0].Skil[i]].Time[j]);
                if(Sk==3) printf("暴击率"),SetPos(14+j*3-1,i*11-9),printf(" 触发百分比:%d",Skill[You[0].Skil[i]].Anykill[j]),cout<<'%';
                if(Sk==4) printf("连击率"),SetPos(14+j*3-1,i*11-9),printf(" 触发百分比:%d",Skill[You[0].Skil[i]].Anykill[j]),cout<<'%';
                if(Sk==5) printf("眩晕率"),SetPos(14+j*3-1,i*11-9),printf(" 触发百分比:%d",Skill[You[0].Skil[i]].Anykill[j]),cout<<'%';
                if(Sk==6) printf("百分比伤害"),SetPos(14+j*3-1,i*11-9),printf(" 伤害百分比:%d",Skill[You[0].Skil[i]].Anykill[j]),cout<<'%';
                if(Sk==7) printf("吸血"),SetPos(14+j*3-1,i*11-9),printf(" 加血量:%d",Skill[You[0].Skil[i]].Kill);
                }
                else
                {
                if(Sk==1) printf("加血"),SetPos(14+j*3-1,i*11-9),printf(" 增幅量:%d",Skill[You[0].Skil[i]].Anykill[j]);
                if(Sk==2) printf("无敌"),SetPos(14+j*3-1,i*11-9),printf(" 持续时间:%d",Skill[You[0].Skil[i]].Time[j]);
                if(Sk==3) printf("持续加血"),SetPos(14+j*3-1,i*11-9),printf(" 增幅量:%d",Skill[You[0].Skil[i]].Anykill[j]),SetPos(14+j*3,i*11-9),printf(" 持续时间:%d",Skill[You[0].Skil[i]].Time[j]);
                if(Sk==4) printf("持续加气"),SetPos(14+j*3-1,i*11-9),printf(" 增幅量:%0.1f",Skill[You[0].Skil[i]].Anyqi[j]),SetPos(14+j*3,i*11-9),printf(" 持续时间:%d",Skill[You[0].Skil[i]].Time[j]);
                }
            }
        }
    }
    SetPos(16+aa*3,1),cout<<"按任意键退出。";
    char a;a=_getch();
}
void ChangeSkill(){
    system("cls");Color(0);
    if(Jiao==4) {SetPos(22,1),Color(5),printf("教程提示 4 :你现在最多可以装备2个技能,\n             技能均需要“气”来使用,你可以“蓄气”来增加你的气数。\n             按 2 1 装备,否则退出教程。"),Color(0);SetPos(0,0);}
    if(Jiao==8) {SetPos(22,1),Color(5),printf("教程提示 8 :群攻技能无需瞄准,\n             其会在发出时攻击所有人。\n             按 1 1 装备,否则退出教程。"),Color(0);SetPos(0,0);}
    SetPos(1,1),printf("--------修改本体技能--------");
    SetPos(3,1),printf("本体技能:\n");int i;
    for(i=1;i<=You[0].Skilnum;i++) Color(0),printf("\n  %d: ",i),Color(Skill[You[0].Skil[i]].color),printf("%s",Skill[You[0].Skil[i]].Name);
    if(You[0].Skilnum<You[0].Skilmax) Color(0),printf("\n  %d: 放入空技能槽",You[0].Skilnum+1),i++;
    Color(0),printf("\n\n  闲置技能:\n");
    if(skk==0) printf("\n  无");
    else for(int i=1;i<=skk;i++) Color(0),SetPos(9+i,1),printf("\n  %d: ",i),Color(Skill[Skkk[i]].color),printf("%s",Skill[Skkk[i]].Name);
    Color(0),printf("\n\n  请输入你想交换的两个技能的编号(回车确定,输 0 0 退出)----- ");int a,b;cin>>a>>b;
    if(a==2&&b==1&&Jiao==4) Jiao++;if((a!=2||b!=1)&&Jiao==4) Jiao=-1;
    if(a==1&&b==1&&Jiao==8) Jiao++;if((a!=1||b!=1)&&Jiao==8) Jiao=-1;
    if(a==You[0].Skilnum+1)
    {
        You[0].Skilnum++,You[0].Skil[You[0].Skilnum]=Skkk[b];
        for(int i=b;i<skk;i++) swap(Skkk[i],Skkk[i+1]);Skkk[skk]=0;skk--;ChangeSkill();
    }
    else if(a!=0) swap(You[0].Skil[a],Skkk[b]),ChangeSkill();
}
void CheckUs(){
    system("cls");Color(0);
    SetPos(1,1),printf("--------查看同伴技能--------");
    SetPos(3,1),printf("同伴数量:%d    同伴上限:%d",Tong,Tongmax);
    for(int i=1;i<=Tong;i++)
    {
        SetPos(5,i*11-10),cout<<"同伴"<<i<<":";
        SetPos(7,i*11-10),cout<<"技能数量上限:"<<You[i].Skilmax;
        SetPos(9,i*11-10),cout<<"技能数量:"<<You[i].Skilnum;
        for(int j=1;j<=You[i].Skilnum;j++)
        SetPos(9+2*j,i*11-10),printf("第%d技能:",j),Color(Skill[You[i].Skil[j]].color),cout<<Skill[You[i].Skil[j]].Name,Color(0);
    }
    SetPos(22,1),cout<<"按任意键退出。";
    char a;a=_getch();
}
void StartSkill(){
    system("cls");Color(0);
    SetPos(1,1),printf("Hi,请输入你的新技能的名字......");
    int x=100+Skll;Skll++;float X=1,Sha=0;skk++,Skkk[skk]=x;
    scanf("%s",&Skill[x].Name);
    printf("\n  请输入技能种类......\n\n");
    printf("  1.单体伤害  2.群体伤害  3.防御与辅助 ..... ");
    cin>>Skill[x].What;if(Skill[x].What==2) X*=3;
    if(Skill[x].What<=2)
    {
        printf("\n  请输入技能攻击力(建议<100,不然耗气量会巨多)......");cin>>Skill[x].Kill;Sha+=Skill[x].Kill;
        printf("\n  请输入技能额外效果数(建议<3,不然耗气量会巨多)......");cin>>Skill[x].Any;
        for(int i=1;i<=Skill[x].Any;i++)
        {
            printf("\n  请输入技能 额外效果 %d:",i);
            printf("\n\n  1.冰冻  2.毒伤  3.暴击率  4.连击率");
            printf("\n  5.眩晕率  6.百分比伤害  7.吸血 ..... ");//10为 偷钱 
            cin>>Skill[x].Anywhat[i];int a=Skill[x].Anywhat[i];
            if(a>=3&&a<=6) printf("\n  请输入其的百分比(必须<80!建议<30,不然耗气量会巨多)......"),cin>>Skill[x].Anykill[i];
            if(a==2) printf("\n  请输入其的攻击力(建议<30,不然耗气量会巨多)......"),cin>>Skill[x].Anykill[i];
            if(a<=2) printf("\n  请输入其的持续时间(建议<4,不然耗气量会巨多)......"),cin>>Skill[x].Time[i];
            int w=Skill[x].Kill,z=Skill[x].Anykill[i],t=Skill[x].Time[i];
            if(a==1) Sha+=50*t;if(a==2) Sha+=0.5*z*t;
            if(a==3) {if(z<20) X*=1+z/100;else if(z<50) X*=1+z/50;else X*=z/20;}
            if(a==4) {if(z<30) X*=1+z/80;else if(z<60) X*=0.8+z/30;else X*=z/5-3;}
            if(a==5) {if(z<30) X*=1+z/100;else if(z<50) X*=0.8+z/40;else X*=z/10-3;}
            if(a==6) Sha+=3*z;if(a==7) Sha+=1.3*w;
        }
    }
    else
    {
        printf("\n  请输入技能效果数(建议<3,不然耗气量会巨多)......");cin>>Skill[x].Any;
        for(int i=1;i<=Skill[x].Any;i++)
        {
            printf("\n  请输入技能 额外效果 %d ......",i);
            printf("\n\n  1.加血  2.无敌  3.持续加血  4.持续加气"); //5为 召唤 
            cin>>Skill[x].Anywhat[i];int a=Skill[x].Anywhat[i];
            if(a==1||a==3) printf("\n  请输入其的增幅量(建议<30,不然耗气量会巨多)......"),cin>>Skill[x].Anykill[i];
            if(a==4) printf("\n  请输入其的增幅量(可输入一位小数,建议<3,不然耗气量会巨多)......"),cin>>Skill[x].Anyqi[i];
            if(a>=2) printf("\n  请输入其的持续时间(建议<4,不然耗气量会巨多)......"),cin>>Skill[x].Time[i];
            int w=Skill[x].Kill,z=Skill[x].Anykill[i],t=Skill[x].Time[i];float v=Skill[x].Anyqi[i];
            if(a==1) Sha+=z;if(a==2) Sha+=20*t;if(a==3) Sha+=t*z;if(a==4) Sha+=20*t*v;if(a==4&&t==1) Sha*=500;if(a==4&&t==2) Sha*=100;
        }
    }
    printf("\n  请输入其的颜色......");
    Color(1),cout<<"\n  1.蓝  ";Color(2),cout<<"2.绿  ";Color(3),cout<<"3.紫  ";Color(4),cout<<"4.红  ";Color(5),cout<<"5.黄  ";Color(6),cout<<"6.深蓝  ";
    Color(7),cout<<"\n  7.青  ";Color(8),cout<<"8.深绿  ";Color(9),cout<<"9.深紫  ";Color(10),cout<<"10.深红  ";Color(11),cout<<"11.木色  ";Color(12),cout<<"12.灰  ";
    Color(0),cin>>Skill[x].color;
    if(Sha<20) Sha=Sha/30;else if(Sha<50) Sha=Sha/40+0.5;else if(Sha<200) Sha=Sha/150+1.5;else Sha=Sha/70;
    Skill[x].Qi=Sha*X*10/(0.8+0.1*Ju);int skillqi=Skill[x].Qi;Skill[x].Qi=(float)skillqi/10;
    printf("\n  计算已完成,这个技能的耗气量为------- %0.1f\n",Skill[x].Qi);
    cout<<"\n  按 y 更改技能,按 0 退出。";
    char a;cin>>a;if(a=='y') ChangeSkill();
}
void Main();
void Killk(int c,int a,int b){//单体 
    int RR=0,bxb=0;if(Guai[b].Blood<=0) return;int RRR=rand()%100;
    if(Skill[a].Kill>5) RR=rand()%(Skill[a].Kill/5)-Skill[a].Kill/10;
    printf("\n  %s攻击了%s!\n",You[c].Name,Guai[b].Name);Sleep(200);
    if(Guai[b].Wudi>0) {printf("\n  但是!%s是无敌的!\n",Guai[b].Name);Sleep(200);return;}
    if(Guai[b].Shan>RRR) {printf("\n  但是!%s闪避开了!\n",Guai[b].Name);Sleep(200);return;}
    int ki=Skill[a].Kill+RR;Guai[b].Blood-=ki;
    if(Skill[a].Kill>0) {printf("\n  %s受到%d点伤害,血量还剩%d。\n",Guai[b].Name,ki,Guai[b].Blood);Sleep(200);}
    for(int i=1;i<=Skill[a].Any;i++)
    {
        int j=Skill[a].Anywhat[i],k=Skill[a].Time[i],l=Skill[a].Anykill[i],m=Skill[a].Kill,mmm;
        int r1=rand()%100+1,r2=rand()%50+51,r3=rand()%100+1;
        if(j==1) Guai[b].Ice+=k,printf("\n  %s被冰冻!冰冻时间还剩%d。\n",Guai[b].Name,Guai[b].Ice);
        if(j==2) Guai[b].Dut+=k,Guai[sb].Duk=l,printf("\n  %s中毒!中毒时间还剩%d。\n",Guai[b].Name,Guai[b].Dut);
        if(j==3&&r1<=l) mmm=m*r2/100,Guai[b].Blood-=mmm,printf("\n  %s被暴击!多受到%d点伤害,血量还剩%d。\n",Guai[b].Name,mmm,Guai[b].Blood);
        if(j==4&&r1<=l&&Guai[b].Blood>0) Guai[b].Blood-=m,printf("\n  %s被连击!再次受到%d点伤害,血量还剩%d。\n",Guai[b].Name,m,Guai[b].Blood),i--;
        if(j==5&&r1<=l) Guai[b].Yun++,printf("\n  %s被击晕!击晕时间还剩%d。\n",Guai[b].Name,Guai[b].Yun);
        if(j==6) mmm=Guai[b].Blood*l/100,Guai[b].Blood-=mmm,printf("\n  %s遭受百分比伤害!受到%d点伤害,血量还剩%d。\n",Guai[b].Name,mmm,Guai[b].Blood);
        if(j==7) You[c].Blood=min(You[c].Bloodmax,You[c].Blood+Skill[a].Kill+RR),printf("\n  %s被吸血! %s的血量增加%d,还剩%d。\n",Guai[b].Name,You[c].Name,Skill[a].Kill+RR,You[c].Blood);
        Sleep(200);
    }if(Guai[b].Blood<=0) Color(4),printf("\n  %s阵亡!",Guai[b].Name),dy--,Color(0),printf("你的金币+%d!\n",Guai[b].Money),You[0].Money+=Guai[b].Money;
}
void Killkk(int c,int a){//辅助 
    for(int i=1;i<=Skill[a].Any;i++)
    {
        int j=Skill[a].Anywhat[i],k=Skill[a].Time[i],l=Skill[a].Anykill[i];float m=Skill[a].Anyqi[i];
        int r1=rand()%100+1,r2=rand()%100+1,r3=rand()%100+1;
        if(j==1) You[c].Blood+=l,You[c].Blood=min(You[c].Bloodmax,You[c].Blood),printf("\n  %s加血%d!血量还剩%d。\n",You[c].Name,l,You[c].Blood);
        if(j==2) You[c].Wudi+=k,printf("\n  %s开启无敌!无敌时间还剩%d。\n",You[c].Name,You[c].Wudi);
        if(j==3) You[c].Blpt+=k,You[c].Blp=l,printf("\n  %s开启持续加血!持续时间还剩%d。\n",You[c].Name,You[c].Blpt);
        if(j==4) You[c].Qipt+=k,You[c].Qip=m,printf("\n  %s开启持续加气!持续时间还剩%d。\n",You[c].Name,You[c].Qipt);
        Sleep(200);
    }
}
void Killkkk(int c,int a){//群攻 
    bool k[1001];memset(k,0,sizeof(k));
    int R=min(rand()%3+4,dy),ll=0;
    for(int i=1;i<=R;i++)
    {
        int j=rand()%Dy+1;
        if(Guai[j].Blood>0&&k[j]==0) Killk(c,a,j),k[j]=1,ll=0;
        else i--,ll++;
        if(ll>=5) break;
    }
}
void Killk2(int b,int a,int c){//怪单体
    int RR=0;if(Skill[a].Kill>5) RR=rand()%(Skill[a].Kill/5)-Skill[a].Kill/10;
    int RRR=rand()%100;
    printf("\n  %s攻击了%s!\n",Guai[b].Name,You[c].Name);Sleep(200);
    if(You[c].Wudi>0) {printf("\n  但是!%s是无敌的!\n",You[c].Name);Sleep(200);return;}
    if(You[c].Shan>RRR) {printf("\n  但是!%s闪避开了!\n",You[c].Name);Sleep(200);return;}
    int ki=Skill[a].Kill+RR;You[c].Blood-=ki;
    if(Skill[a].Kill>0) {printf("\n  %s受到%d点伤害,血量还剩%d。\n",You[c].Name,ki,You[c].Blood);Sleep(200);}
    for(int i=1;i<=Skill[a].Any;i++)
    {
        int j=Skill[a].Anywhat[i],k=Skill[a].Time[i],l=Skill[a].Anykill[i],m=Skill[a].Kill,mmm;
        int r1=rand()%100+1,r2=rand()%50+51,r3=rand()%100+1;
        if(j==1) You[c].Ice+=k,printf("\n  %s被冰冻!冰冻时间还剩%d。\n",You[c].Name,You[c].Ice);
        if(j==2) You[c].Dut+=k,You[c].Duk=l,printf("\n  %s中毒!中毒时间还剩%d。\n",You[c].Name,You[c].Dut);
        if(j==3&&r1<=l) mmm=m*r2/100,You[c].Blood-=mmm,printf("\n  %s被暴击!多受到%d点伤害,血量还剩%d。\n",You[c].Name,mmm,You[c].Blood);
        if(j==4&&r1<=l&&You[c].Blood>0) You[c].Blood-=m,printf("\n  %s被连击!再次受到%d点伤害,血量还剩%d。\n",You[c].Name,m,You[c].Blood),i--;
        if(j==5&&r1<=l) You[c].Yun++,printf("\n  %s被击晕!击晕时间还剩%d。\n",You[c].Name,You[c].Yun);
        if(j==6) mmm=You[c].Blood*l/100,You[c].Blood-=mmm,printf("\n  %s遭受百分比伤害!受到%d点伤害,血量还剩%d。\n",You[c].Name,mmm,You[c].Blood);
        if(j==7) Guai[b].Blood=min(Guai[b].Bloodmax,Guai[b].Blood+Skill[a].Kill+RR),printf("\n  %s被吸血! %s的血量增加%d,还剩%d。\n",You[c].Name,Guai[b].Name,Skill[a].Kill+RR,Guai[b].Blood);
        if(j==10) l=min(You[0].Money,l),You[0].Money-=l,Guai[b].Money+=l,printf("\n  你队被偷钱!金币数量减少%d,还剩%d,%s金币加为%d。\n",l,You[0].Money,Guai[b].Name,Guai[b].Money);
        Sleep(200);                                  
    }int as=rand()%5;if(You[c].Skilnum==0) as=0;
    if(Skill[a].What==1&&Skill[a].Anywhat[1]==10) as=1; //偷钱 
    if(c!=0&&You[c].Skilmax!=You[c].Skilnum&&as==0) Color(5),printf("\n  但是!%s学会了此技能!\n",You[c].Name),You[c].Skilnum++,You[c].Skil[You[c].Skilnum]=a,Color(0),Sleep(200);
    if(You[c].Blood<=0)
	{
		Color(4),printf("\n  %s阵亡!\n",You[c].Name),dd--;int rrR=rand()%30;
		if(rrR==0&&c!=0)
		{
			Tong=max(0,Tong-1);Slow(70,"\n  你的同伴对你们黑暗的前途叹了口气...\n  毅然决然地拖着已失去知觉的身体,走出了战场...\n  消失在地平线上!\n");
			for(int i=c;i<=Tong;i++) swap(You[i],You[i+1]);
		}Color(0);
	}
    if(You[0].Blood<=0&&Fu!=0) Color(5),printf("\n  但是!%s复活!\n",You[c].Name),You[0].Blood=20,dd++,Fu--,Color(0);
}
void Startguai(int a);
void Killkk2(int a,int b){//怪辅助 
    for(int i=1;i<=Skill[a].Any;i++)
    {
        int j=Skill[a].Anywhat[i],k=Skill[a].Time[i],l=Skill[a].Anykill[i];
        int r1=rand()%100+1,r2=rand()%100+1,r3=rand()%100+1;
        if(j==1) Guai[b].Blood+=l,Guai[b].Blood=min(Guai[b].Bloodmax,Guai[b].Blood),printf("\n  %s加血%d!血量还剩%d。\n",Guai[b].Name,l,Guai[b].Blood);
        if(j==2) Guai[b].Wudi+=k,printf("\n  %s开启无敌!无敌时间还剩%d。\n",Guai[b].Name,Guai[b].Wudi);
        if(j==3) Guai[b].Blpt+=k,Guai[b].Blp=l,printf("\n  %s开启持续加血!持续时间还剩%d。\n",Guai[b].Name,Guai[b].Blpt);
        if(j==5) Startguai(Skill[a].Anykill[i]),printf("\n  %s召唤了%s!%s加入战场。\n",Guai[b].Name,Guai[Dy].Name,Guai[Dy].Name);
        Sleep(200);
    }
}
void Killkkk2(int a,int b){//怪群攻
    bool k[1001];memset(k,0,sizeof(k));
    int R=min(rand()%3+3+Ju,dd),ll=0;
    for(int i=1;i<=R;i++)
    {
        int j=rand()%Dd;
        if(You[j].Blood>0&&k[j]==0) Killk2(b,a,j),k[j]=1,ll=0;
        else i--,ll++;
        if(ll>=5) break;
    }
}
void Killguai(int aa){//你队 
    int kk=0;Color(5);
    printf("\n  %s的回合!\n\n",You[aa].Name),Sleep(500);Color(0);
    if(You[aa].Wudi>0) You[aa].Wudi--,printf("  %s还在无敌!持续时间还剩%d。\n\n",You[aa].Name,You[aa].Wudi),Sleep(200);
    if(You[aa].Qipt>0) You[aa].Qipt--,You[aa].Qi+=You[aa].Qip,printf("  %s的气增加%0.1f,还剩%0.1f,持续时间还剩%d。\n\n",You[aa].Name,You[aa].Qip,You[aa].Qi,You[aa].Qipt),Sleep(200);
    if(You[aa].Blpt>0) You[aa].Blpt--,You[aa].Blood+=You[aa].Blp,You[aa].Blood=min(You[aa].Bloodmax,You[aa].Blood),printf("  %s的血量增加%d,还剩%d,持续时间还剩%d。\n\n",You[aa].Name,You[aa].Blp,You[aa].Blood,You[aa].Blpt),Sleep(200);
    if(You[aa].Dut>0) You[aa].Dut--,You[aa].Blood-=You[aa].Duk,printf("  %s毒发!其的血量减少%d,还剩%d,持续时间还剩%d。\n\n",You[aa].Name,You[aa].Duk,You[aa].Blood,You[aa].Dut),Sleep(200);
    if(You[aa].Ice>0) kk=1,You[aa].Ice--,printf("  %s被冰冻了......,冰冻时间还剩%d。\n\n",You[aa].Name,You[aa].Ice),Sleep(200);
    if(You[aa].Yun>0) {You[aa].Yun--;if(kk==1) cout<<endl<<"  同时,";else cout<<endl<<"  ";printf("%s被击晕了......,击晕时间还剩%d\n\n",You[aa].Name,You[aa].Yun),Sleep(200);return;}
    if(You[aa].Blood<=0) Color(4),printf("\n  %s阵亡!\n",You[aa].Name),dd--,kk=1,Color(0);
    if(kk==1) return;
    if(aa==0)
    {
        You[aa].Qi+=You[aa].Qijia;You[aa].Blood+=You[aa].Bloodjia;You[aa].Blood=min(You[aa].Blood,You[aa].Bloodmax);
        Color(0),printf("  你的气数+%0.1f: %0.1f\n",You[aa].Qijia,You[aa].Qi);
        Color(0),printf("\n  你的血量+%d: %d\n",You[aa].Bloodjia,You[aa].Blood);printf("\n  你的技能:\n");Sleep(200);
        Color(0),printf("\n  0: 蓄气");
        for(int i=1;i<=You[aa].Skilnum;i++) {Color(0),printf("\n  %d: ",i),Color(Skill[You[aa].Skil[i]].color),printf("%s",Skill[You[aa].Skil[i]].Name);Color(0);if(Skill[You[aa].Skil[i]].Qi>You[aa].Qi) cout<<"(不可用)";}
        printf("\n\n  请输入你想使用技能的编号----- ");
        int a,b;cin>>a;
        if(a==0) You[aa].Qi+=1,printf("\n  %s蓄气!你的气数 +1,还剩%0.1f。\n",You[aa].Name,You[aa].Qi);
        else
        {
            int c=You[aa].Skil[a];
            if(You[aa].Qi-Skill[c].Qi<0) return;
            You[aa].Qi-=Skill[c].Qi;
            if(Skill[c].What==1)
            {
                Color(0),printf("\n  当前敌人:\n");
                for(int i=1;i<=Dy;i++) if(Guai[i].Blood>0) {printf("\n  %d: %s (血量:%d)",i,Guai[i].Name,Guai[i].Blood);}
                printf("\n\n  请输入你想攻击敌人的编号----- ");cin>>b;
            }printf("\n\n  你使用技能:");Color(Skill[c].color);printf("%s",Skill[c].Name);Color(0),cout<<" !"<<endl;
            if(Skill[c].What==1) Killk(0,c,b);
            if(Skill[c].What==2) Killkkk(0,c);
            if(Skill[c].What==3) Killkk(0,c);
        }
    }
    else
    {
        int R=rand()%100+1,l=0,kk=0,o=rand()%5;
        if(You[aa].Skilnum!=0) l=rand()%You[aa].Skilnum+1;if(o==0) l=0;
        printf("  %s使用技能:",You[aa].Name);Color(Skill[You[aa].Skil[l]].color);Sleep(200);
        if(l==0) {cout<<"蓄气 !"<<endl;return;}
        printf("%s",Skill[You[aa].Skil[l]].Name);Color(0),cout<<" !"<<endl;
        KR:
        int sc=rand()%Dy+1;Sleep(200);
        if(Skill[You[aa].Skil[l]].What==1) if(Guai[sc].Blood>0) Killk(aa,You[aa].Skil[l],sc); else goto KR;
        if(Skill[You[aa].Skil[l]].What==2) Killkkk(aa,You[aa].Skil[l]);
        if(Skill[You[aa].Skil[l]].What==3) Killkk(aa,You[aa].Skil[l]);
    }
}
void Killyou(int sb){//怪
    sa=rand()%dd;
    int R=rand()%(100-min(10,Ju*3))+1,l=0,kk=0;Color(5);
    printf("\n  %s的回合!\n",Guai[sb].Name),Sleep(500);Color(0);
    if(Guai[sb].Wudi>0) Guai[sb].Wudi--,printf("  %s还在无敌!持续时间还剩%d。\n\n",Guai[sb].Name,Guai[sb].Wudi),Sleep(200);
    if(Guai[sb].Blpt>0) Guai[sb].Blpt--,Guai[sb].Blood+=Guai[sb].Blp,Guai[sb].Blood=min(Guai[sb].Bloodmax,Guai[sb].Blood),printf("  %s的血量增加%d,还剩%d,持续时间还剩%d。\n\n",Guai[sb].Name,Guai[sb].Blp,Guai[sb].Blood,Guai[sb].Blpt),Sleep(200);
    if(Guai[sb].Dut>0) Guai[sb].Dut--,Guai[sb].Blood-=Guai[sb].Duk,printf("  %s毒发!它的血量减少%d,还剩%d,持续时间还剩%d。\n\n",Guai[sb].Name,Guai[sb].Duk,Guai[sb].Blood,Guai[sb].Dut),Sleep(200);
    if(Guai[sb].Ice>0) kk=1,Guai[sb].Ice--,printf("  %s被冰冻了......,冰冻时间还剩%d。\n\n",Guai[sb].Name,Guai[sb].Ice),Sleep(200);
    if(Guai[sb].Yun>0) {Guai[sb].Yun--;if(kk==1) cout<<endl<<"  同时,";else cout<<endl<<"  ";printf("%s被击晕了......,击晕时间还剩%d\n\n",Guai[sb].Name,Guai[sb].Yun),Sleep(200);return;}
    if(Guai[sb].Blood<=0) Color(4),printf("\n  %s阵亡!\n",Guai[sb].Name),dy--,kk=1,Color(0);
    if(kk==1) return;
    for(int i=1;i<=Guai[sb].Skilnum;i++) {if(R>Guai[sb].Skilstr[i]) continue;else {l=Guai[sb].Skil[i];break;}}
    printf("\n  %s使用技能:",Guai[sb].Name);Color(Skill[l].color);Sleep(200);
    if(l==0) {cout<<"蓄气 !"<<endl;return;}
    printf("%s",Skill[l].Name);Color(0),cout<<" !"<<endl;
    KR:
    int sc=rand()%Dd;Sleep(200);
    if(Skill[l].What==1) if(You[sc].Blood>0) Killk2(sb,l,sc); else goto KR;
    if(Skill[l].What==3) Killkk2(l,sb);
    if(Skill[l].What==2) Killkkk2(l,sb);
}
void Juing(){
    system("cls");Color(5);
    if(Ju==1) Slow(50,"\n  -----------第一章-----------\n\n  这个世界是由SLFDC政府掌管的。\n\n  近几年,由于太上皇的暴政,有10%的诸侯国脱离了此政府。\n\n  为此,SLFDC创立了强大的军事力量,\n\n  由三大教,七武科代表统管。\n\n  而你方则立下了四皇来与之抗衡。\n\n  现在,世界混乱,而你,必定是可以称霸世界,重拾和平的人!\n\n  于是,你走上了与天下人抗争的道路,\n\n  辉煌的前途正向你驶来!");
    if(Ju==2) Slow(50,"\n  -----------第二章-----------\n\n  在这一年中,四皇小P,老狗,梢公与小梁终于在思想上达成了一致\n\n  一个名为信奥班的群体终于崛起!\n\n  与此同时,因为救下了一位小P的手下,\n\n  你也光荣地入队!\n\n  现在,你开始承受SLFDC更为激烈的打击,\n\n  你一定要创造计策与机会,存活下去!");
    if(Ju==3) Slow(50,"\n  -----------第三章-----------\n\n  前线传来坏消息,\n\n  太上皇用自己无敌的能力击溃了大部分军队,\n\n  而继续反扑向信奥班本部!\n\n  于是,四皇们决定进军SLFDC本部!\n\n  政府在这时风雨飘摇,欲摧不倒!\n\n  江山即将易主,已经可以看到黎明的曙光!");
    if(Ju==4) Slow(50,"\n  -----------第四章-----------\n\n  震撼人心的“SLFDC顶上战争”终于爆发了!\n\n  前线军队战斗的轰轰烈烈,尸横遍地!\n\n  在弹尽粮绝之时,你忽然发现,自己已变得超乎想象的强大!\n\n  你从尸山血海中站起,\n\n  经历的所有战争均是超乎想象的宏大!\n\n  你始终相信,终有一天,希望将照在这辽阔的大地上!");
    if(Ju==5) Slow(50,"\n  -----------第五章-----------\n\n  战争结束了!\n\n  你的目标终于达成了!\n\n  接下来,你就可以肆无忌惮的在你的国度除恶扬善了!\n  .\n  .\n  .\n  .\n  .\n  .\n\n  剧情走完,游戏继续!");
    Sleep(3000),system("cls");if(Ju<=1) return;
    printf("\n  升级了!\n\n");Sleep(1000);
    printf("  闪避率+2%\n\n");Sleep(500);
    printf("  同伴现有技能攻击力+20%\n\n");Sleep(500);
    printf("  新创自定义技能气量*90%\n\n");Sleep(500);
    printf("  战斗金币量+10%\n\n");Sleep(500);
    printf("  胜利EXP量+10%\n\n");Sleep(500);
    printf("  游戏难度加大!\n\n");Sleep(500);You[0].Shan+=2;
    for(int i=1;i<100;i++) {Skill[i].Kill*1.2;for(int j=1;j<=Skill[i].Any;j++) Skill[i].Anykill[j]*1.2;}
    Sleep(3000),system("cls");Color(0);
}
void LaoHu(){
    system("cls");Color(0);
    printf("\n  -----------老虎机-----------\n");
    for(int i=1;i<=50;i++)
    {
        SetPos(5,5);cout<<"            ";
        Color(rand()%13);
        SetPos(5,5);cout<<"出奖中。。。"; Sleep(30);
    }Color(5);
    SetPos(5,2);cout<<"恭喜获得";Re:
    int ssa=rand()%6,sr;
    if(ssa==0) {sr=rand()%400+100;cout<<"金币"<<sr<<"个!";You[0].Money+=sr;} 
    if(ssa==1) {sr=rand()%50+30;cout<<"经验"<<sr<<"点!";You[0].EXP+=sr;} 
    if(ssa==2)
    {
        KKP:sr=rand()%24+4;
        for(int i=1;i<=You[0].Skilnum;i++) if(You[0].Skil[i]==sr) goto KKP;
        for(int i=1;i<=skk;i++) if(Skkk[i]==sr) goto KKP;
        if(Skill[sr].What==3&&Skill[sr].Anywhat[1]==5) goto KKP;   //召唤 
        if(Skill[sr].What==1&&Skill[sr].Anywhat[1]==10) goto KKP;  //偷钱 
        skk++,Skkk[skk]=sr;cout<<"系统特惠技能:";Color(Skill[Skkk[skk]].color);cout<<Skill[Skkk[skk]].Name;Color(5),cout<<"!";
    }
    if(ssa==3)
    {
        if(Tong==Tongmax) goto Re;Tong++;int i=Tong;You[i].Skilnum=0;
        You[i].Bloodmax=You[0].Bloodmax-10+rand()%21;You[i].Skilmax=3+rand()%3;
        printf("新同伴(血量%d,技能上限%d,会学习)!",You[i].Bloodmax,You[i].Skilmax);
    }
    if(ssa==4) {cout<<"新技能槽!";You[0].Skilmax++;}
    if(ssa==5) {cout<<"血量上限+20%!";You[0].Bloodmax*=1.2;}
    Sleep(1000);
}
void Store(){
    St:system("cls");Color(0);
    if(Jiao==12) {SetPos(22,1),Color(5),printf("教程提示 12 :但是,此游戏的成功方式只有一个:\n             将游戏的剧情完结!\n             按 0 退出,否则退出教程。"),Color(0);SetPos(0,0);}
    printf("\n  ------------商店------------\n");
    printf("\n  Money:%d\n",You[0].Money);
    printf("\n  1.同伴招募                    --- $300\n");
    printf("\n  2.药水商店\n");
    printf("\n  3.经验升级区\n");
    printf("\n  4.老虎机 (会抽出什么呢?...)  --- $300\n");
    printf("\n  输入 0 退出。----- ");int a;cin>>a;if(a==0&&Jiao==12) Jiao++,You[0].EXP=100;else if(Jiao!=14) Jiao=-1;
    if(a==1&&You[0].Money>=300&&Tong<Tongmax)
    {
        Tong++;int i=Tong;You[i].Skilnum=0;You[0].Money-=300;
        You[i].Bloodmax=You[0].Bloodmax-10+rand()%21;You[i].Skilmax=3+rand()%3;
        Color(5),printf("\n  恭喜获得新同伴(血量%d,技能上限%d,会学习)!",You[i].Bloodmax,You[i].Skilmax);Color(0),Sleep(3000);
    }
    if(a==2)
    {
        Sto:system("cls");Color(0);
        printf("\n  ----------药水商店----------\n");
        printf("\n  注意:所有药水均为自动使用一次性。\n");
        printf("\n  Money:%d\n",You[0].Money);
        printf("\n  1.生命药水 (初始血量+10%) [已有%d个]  --- $30\n",Shen);
        printf("\n  2.复活药水 (且回血20)     [已有%d个]  --- $50\n",Fu);
        printf("\n  3.敏捷药水 (闪避率+20%)   [已有%d个]  --- $50\n",Shan);
        printf("\n  4.狂暴药水 (回合率+20%)   [已有%d个]  --- $50\n",Ji);
        printf("\n  5.元气药水 (开局1口气)    [已有%d个]  --- $30\n",Yuan);
        printf("\n  6.经验药水 (+10 EXP)                  --- $100\n");
        printf("\n  输入 0 退出。----- ");int aa;cin>>aa;
        if(aa==1&&You[0].Money>=30) Shen++,You[0].Money-=30;if(aa==2&&You[0].Money>=50) Fu++,You[0].Money-=50;if(aa==3&&You[0].Money>=50) Shan++,You[0].Money-=50;
        if(aa==4&&You[0].Money>=50) Ji++,You[0].Money-=50;if(aa==5&&You[0].Money>=30) Yuan++,You[0].Money-=30;if(aa==6&&You[0].Money>=100) You[0].EXP+=20,You[0].Money-=100;
        if(aa!=0) goto Sto;
    }
    if(a==3)
    {
        Stoo:system("cls");Color(0);
        printf("\n  ---------经验升级区---------\n");
        printf("\n  EXP:%d\n",You[0].EXP);
        printf("\n  1.血量上限+10% [已为%d点]  --- 50 EXP\n",You[0].Bloodmax);
        printf("\n  2.回合加气+0.2 [已为%0.1f口]  --- 50 EXP\n",You[0].Qijia);
        printf("\n  3.回合加血+5  [已为%d点]  --- 70 EXP\n",You[0].Bloodjia);
        printf("\n  4.闪避率+5%   [已为%d%]  --- 70 EXP\n",You[0].Shan);
        printf("\n  5.技能槽+1     [已为%d个]  --- 100 EXP\n",You[0].Skilmax);
        printf("\n  6.同伴上限+1   [已为%d个]  --- 100 EXP\n",Tongmax);
        printf("\n  7.同伴升级区\n");
        printf("\n  输入 0 退出。----- ");int aaa;cin>>aaa;if(aaa==7&&Jiao==13) Jiao++;else if(Jiao!=14) Jiao=-1;
        if(aaa==1&&You[0].EXP>=50) You[0].Bloodmax*=1.1,You[0].EXP-=50;
        if(aaa==2&&You[0].EXP>=50) You[0].Qijia+=0.2,You[0].EXP-=50;
        if(aaa==3&&You[0].EXP>=70) You[0].Bloodjia+=5,You[0].EXP-=70;
        if(aaa==4&&You[0].EXP>=70) You[0].Shan+=5,You[0].EXP-=70;
        if(aaa==5&&You[0].EXP>=100) You[0].Skilmax++,You[0].EXP-=100;
        if(aaa==6&&You[0].EXP>=100) Tongmax++,You[0].EXP-=100;
        if(aaa==7)
        {
            So:system("cls");Color(0);
            printf("\n  ---------同伴升级区---------\n");
            printf("\n  EXP:%d     同伴数量:%d\n",You[0].EXP,Tong);
            printf("\n  你要升级同伴几?(输入 0 退出)----- ");
            int i;cin>>i;if(i==0) goto Stoo;Soo:SetPos(5,1);printf("同伴%d:                                \n",i);
            printf("\n  血量上限:%d     (+10%按1 --- 50EXP)\n",You[i].Bloodmax);
            printf("\n  回合加血:%d     (+5按2   --- 70EXP)\n",You[i].Bloodjia);
            printf("\n  闪避率:%d%      (+5%按3   --- 70EXP)\n",You[i].Shan);
            printf("\n  技能数量上限:%d (+1按4   --- 100EXP)\n",You[i].Skilmax,You[i].Skilnum);
            for(int j=1;j<=You[i].Skilnum;j++)printf("\n  ----第%d技能:",j),Color(Skill[You[i].Skil[j]].color),cout<<Skill[You[i].Skil[j]].Name,Color(0),printf("    (删除按%d)\n",4+j);
            printf("\n  输入 0 重选。----- ");int ab;cin>>ab;
            if(ab==1&&You[0].EXP>=50) You[i].Bloodmax*=1.1,You[0].EXP-=50;
            if(ab==2&&You[0].EXP>=70) You[i].Bloodjia+=5,You[0].EXP-=70;
            if(ab==3&&You[0].EXP>=70) You[i].Shan+=5,You[0].EXP-=70;
            if(ab==4&&You[0].EXP>=100) You[i].Skilmax++,You[0].EXP-=100;
            if(ab>4) {ab-=4;You[i].Skilnum--;for(int j=ab;j<You[i].Skilnum;j++) swap(You[i].Skil[j],You[i].Skil[j+1]);You[i].Skil[You[i].Skilnum+1]=0;}
            if(ab!=0) {system("cls");Color(0);printf("\n  ---------同伴升级区---------\n");printf("\n  EXP:%d     同伴数量:%d\n",You[0].EXP,Tong);goto Soo;}if(ab==0) goto So;
        }
        if(aaa!=0) goto Stoo;
    }
    if(a==4&&You[0].Money>=300) LaoHu(),You[0].Money-=300;
    if(a!=0) goto St;
}
void Startguai(int a){
    char *str;
    dy++;Dy++;
    if(a==1) {str="剑客";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=80;Guai[dy].Money=10;Guai[dy].Skilnum=2,Guai[dy].Skil[1]=1,Guai[dy].Skilstr[1]=40,Guai[dy].Skil[2]=4,Guai[dy].Skilstr[2]=90;}
    if(a==2) {str="守卫兵";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=100;Guai[dy].Money=20;Guai[dy].Skilnum=2,Guai[dy].Skil[1]=5,Guai[dy].Skilstr[1]=30,Guai[dy].Skil[2]=6,Guai[dy].Skilstr[2]=90;}
    if(a==3) {str="史莱姆";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=50;Guai[dy].Money=10;Guai[dy].Skilnum=2,Guai[dy].Skil[1]=7,Guai[dy].Skilstr[1]=50,Guai[dy].Skil[2]=8,Guai[dy].Skilstr[2]=90;}
    if(a==4) {str="模仿者";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=You[0].Blood;Guai[dy].Money=20;Guai[dy].Skilnum=3,Guai[dy].Skil[1]=You[0].Skil[1],Guai[dy].Skilstr[1]=30,Guai[dy].Skil[2]=You[0].Skil[2],Guai[dy].Skilstr[2]=60,Guai[dy].Skil[3]=You[0].Skil[3],Guai[dy].Skilstr[3]=90;}
    if(a==5) {str="魔术师";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=80;Guai[dy].Money=25;Guai[dy].Skilnum=3,Guai[dy].Skil[1]=9,Guai[dy].Skilstr[1]=20,Guai[dy].Skil[2]=5,Guai[dy].Skilstr[2]=40,Guai[dy].Skil[3]=6,Guai[dy].Skilstr[3]=90;}
    if(a==6) {str="巫医";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=70;Guai[dy].Money=20;Guai[dy].Skilnum=3;Guai[dy].Skil[1]=15,Guai[dy].Skilstr[1]=40;Guai[dy].Skil[2]=16,Guai[dy].Skilstr[2]=60;Guai[dy].Skil[3]=17,Guai[dy].Skilstr[3]=90;}
    if(a==7) {str="法师";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=80;Guai[dy].Money=30;Guai[dy].Skilnum=3,Guai[dy].Skil[1]=2,Guai[dy].Skilstr[1]=20,Guai[dy].Skil[2]=10,Guai[dy].Skilstr[2]=50,Guai[dy].Skil[3]=11,Guai[dy].Skilstr[3]=90;}
    if(a==8) {str="雪怪";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=150;Guai[dy].Money=50;Guai[dy].Skilnum=3;Guai[dy].Skil[1]=12,Guai[dy].Skilstr[1]=50;Guai[dy].Skil[2]=13,Guai[dy].Skilstr[2]=60;Guai[dy].Skil[3]=14,Guai[dy].Skilstr[3]=90;}
    if(a==9) {str="巨人";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=200;Guai[dy].Money=50;Guai[dy].Skilnum=2;Guai[dy].Skil[1]=18,Guai[dy].Skilstr[1]=40;Guai[dy].Skil[2]=19,Guai[dy].Skilstr[2]=90;}
    if(a==10) {str="蝙蝠";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=20;Guai[dy].Money=3;Guai[dy].Skilnum=2,Guai[dy].Skil[1]=20,Guai[dy].Skilstr[1]=60,Guai[dy].Skil[2]=21,Guai[dy].Skilstr[2]=90;}
    if(a==11) {str="乞丐";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=100;Guai[dy].Money=30;Guai[dy].Skilnum=3,Guai[dy].Skil[1]=22,Guai[dy].Skilstr[1]=40,Guai[dy].Skil[2]=23,Guai[dy].Skilstr[2]=80,Guai[dy].Skil[3]=24,Guai[dy].Skilstr[3]=90;}
    if(a==12) {str="弓箭手";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=80;Guai[dy].Money=10;Guai[dy].Skilnum=2,Guai[dy].Skil[1]=26,Guai[dy].Skilstr[1]=40,Guai[dy].Skil[2]=25,Guai[dy].Skilstr[2]=90;}
    if(a==13) {str="哥布林";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=50;Guai[dy].Money=15;Guai[dy].Skilnum=2,Guai[dy].Skil[1]=5,Guai[dy].Skilstr[1]=20,Guai[dy].Skil[2]=27,Guai[dy].Skilstr[2]=90,Guai[dy].Skil[2]=27,Guai[dy].Skilstr[3]=90;}
    if(a==14) {str="酒鬼";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=100;Guai[dy].Money=30;Guai[dy].Skilnum=3,Guai[dy].Skil[1]=28,Guai[dy].Skilstr[1]=30,Guai[dy].Skil[2]=29,Guai[dy].Skilstr[2]=60,Guai[dy].Skil[3]=22,Guai[dy].Skilstr[3]=90;}
    if(a==15) {str="战争机器";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=200;Guai[dy].Money=70;Guai[dy].Skilnum=3;Guai[dy].Skil[1]=30,Guai[dy].Skilstr[1]=40;Guai[dy].Skil[2]=31,Guai[dy].Skilstr[2]=70;Guai[dy].Skil[3]=32,Guai[dy].Skilstr[3]=90;}
    Guai[dy].Blood*=(0.5*Ju);Guai[dy].Blood+=rand()%11-5;Guai[dy].Bloodmax=Guai[dy].Blood;Guai[dy].Money*=(0.8+0.1*Ju);Guai[dy].Shan=(Ju-2)*5;
}
void Startwar(){
    char *str;
    dy=Dy=0;dd=Dd=Tong+1;memset(Guai,0,sizeof(Guai));// dd=你方
    You[0].Blp=You[0].Blpt=You[0].Duk=You[0].Dut=You[0].Ice=You[0].Yun=You[0].Wudi=You[0].Wudit=You[0].Qipt=You[0].Qi=You[0].Qip=0;
    for(int i=1;i<=Tong;i++)
    {
        str="同伴";You[i].Name[4]=i+'0';
        for(int j=0;j<strlen(str);j++)You[i].Name[j]=str[j];You[i].Blood=You[i].Bloodmax;
        You[i].Blp=You[i].Blpt=You[i].Duk=You[i].Dut=You[i].Ice=You[i].Yun=You[i].Wudi=You[i].Wudit=You[i].Qipt=You[i].Qi=You[i].Qip=0;
    }int r=max(Dd+rand()%3-1,1);int t=rand()%6;if(t<Ju) r++;
    for(int i=1;i<=r;i++) Startguai(rand()%15+1); 
}
void War(){
    As:system("cls");Color(0);
    if(Jiao==2) {SetPos(22,1),Color(5),printf("教程提示 2 :杀死所有敌人即可获胜。\n             反之,你队全亡就会失败。\n             按 y 开始,否则退出教程。"),Color(0);SetPos(0,0);}
    if(Jiao==6) {SetPos(22,1),Color(5),printf("教程提示 6 :你的气数会每回合增长。\n             但敌人与同伴使用技能没有气数限制。\n             按 y 开始,否则退出教程。"),Color(0);SetPos(0,0);}
    if(Jiao==10) {SetPos(22,1),Color(5),printf("教程提示 10 :同伴是没有初始技能的。\n             他会在战斗中自我学习,你们的血量在对战后均会回满。\n             按 y 开始,否则退出教程。"),Color(0);SetPos(0,0);}
    SetPos(1,1),printf("----------战斗界面----------\n\n");
    memset(Y,0,sizeof(Y));memset(D,0,sizeof(D));Startwar();if(Juk==10) {Juk=0,Juing(),Ju++;goto As;}
    printf("  你将面临的敌人是:\n");
    for(int i=1;i<=dy;i++) {printf("\n  %d: %s   血量: %d   掉落金币: %d",i,Guai[i].Name,Guai[i].Blood,Guai[i].Money);}
    cout<<"\n\n  按 y 开始战斗,按其余键退出 (损失 30"<<'%'<<" EXP)。----- ";
    char q;cin>>q;if(q!='y'&&(Jiao==2||Jiao==6||Jiao==10)) Jiao=-1;if(q=='y'&&(Jiao==2||Jiao==6||Jiao==10)) Jiao++;
    if(q!='y') {You[0].EXP*=0.7;return;}system("cls");
    SetPos(1,1),printf("\n---------开始战斗!---------\n\n");
    if(Yuan>=1) You[0].Qi=1;
    if(Shen>=1) You[0].Blood*=1.1;
    int sh,pan;if(Shan>=1) You[0].Shan+=20,sh=1;
    while(dy!=0&&dd!=0)
    {
        pan=0;KK:pan++;
        if(pan>=10) break;
        sa=rand()%(dd+dy);sc=0;
        if(Ji>0&&You[0].Blood>0) sc=rand()%5;
        if(sa<dd) sa=0;else sa=1;
        if(k3>=2) sa=1;if(k4>=2) sa=0;
        if(sa==0) sb=rand()%Dd;  //你攻
        if(sa==1) sb=rand()%Dy+1;//怪攻
        if(sc==4) sa=0,sb=0;
        if(sa==0&&You[sb].Blood<=0) goto KK;
        if(sa==1&&Guai[sb].Blood<=0) goto KK;
        if((sa==0&&sb==k1)||(sa==1&&sb==k2)) goto KK;
        if(sa==0) {k1=sb,k2=0,k3++,k4=0;if(dy<=0||dd<=0) break;Killguai(sb);}
        if(sa==1) {k1=-1,k2=sb,k3=0,k4++;if(dy<=0||dd<=0) break;Killyou(sb);}
        if(dy<=0||dd<=0) break;Sleep(500);
    }Shen=max(Shen-1,0);Ji=max(Ji-1,0);Shan=max(Shan-1,0);Yuan=max(Yuan-1,0);if(sh==1) You[0].Shan-=20;
    int ai=(10+Dy*2)*(0.8+0.1*Ju);int bi=(10+Dd*5)*(0.8+0.1*Ju);
    if(dy==0) Color(5),printf("\n  你胜利了!!获得%dEXP!\n",ai),You[0].EXP+=ai,Juk+=rand()%2;
    else Color(4),printf("\n  你失败了!!减少%d金币!\n",bi),You[0].Money=max(0,You[0].Money-bi);Sleep(3000);
}
bool Read(){
    ifstream in("这是你的存档.in");
	unsigned long long ioi=0,ioix;
	long long Moo=1e9+7;
    in>>You[0].Name;
    for(int i=0;i<strlen(You[0].Name);i++) ioi=(ioi+(int)You[0].Name[i])*101%Moo;
    in>>Skll>>skk>>Tong>>Tongmax>>Ju>>Juk>>Jiao>>Shen>>Ji>>Yuan>>Shan>>Fu;
    ioi=(ioi+Skll*103+skk*107+Tong*109+Tongmax*113+Ju*127+Juk*131+Jiao*137+Shen*139+Ji*149+Yuan*151+Shan*157+Fu*163)%Moo;
	for(int i=0;i<=Tong;i++)
    {
        in>>You[i].Blood>>You[i].Bloodmax>>You[i].Bloodjia>>You[i].Skilnum>>You[i].Skilmax>>You[i].Money>>You[i].EXP>>You[i].Shan;in>>You[i].Qijia;
        ioi+=(2*ioi+You[i].Blood*167+You[i].Bloodmax*173+You[i].Bloodjia*179+You[i].Skilnum*181+You[i].Skilmax*191+You[i].Money*193+You[i].EXP*197+You[i].Shan*211+(int)You[i].Qijia*223)%Moo;
        for(int j=1;j<=You[i].Skilnum;j++) in>>You[i].Skil[j],ioi+=i*j*(ioi+You[i].Skil[j])*227%Moo;
    }
	for(int i=100;i<=99+Skll;i++)
    {
        in>>Skill[i].Name;
    	for(int j=0;j<strlen(Skill[i].Name);j++) ioi+=i*j*(ioi+(int)Skill[i].Name[j])*229%Moo;
        in>>Skill[i].Qi>>Skill[i].Kill>>Skill[i].What>>Skill[i].color>>Skill[i].Any;
        ioi=ioi+Skill[i].Qi*233+Skill[i].Kill*239+Skill[i].What*241+Skill[i].color*251+Skill[i].Any*257;
        ioi%=Moo;
        for(int j=1;j<=Skill[i].Any;j++)
		{
			in>>Skill[i].Anykill[j]>>Skill[i].Anywhat[j]>>Skill[i].Time[j],in>>Skill[i].Anyqi[j];
			ioi+=i*j*(ioi+Skill[i].Anykill[j]*263+Skill[i].Anywhat[j]*269+Skill[i].Time[j]*271+(int)Skill[i].Anyqi[j]*277)%Moo;
		}
    }for(int i=1;i<=skk;i++) in>>Skkk[i],ioi+=(ioi+Skkk[i])*281%Moo;
    in>>ioix;
    if(ioix!=ioi) {in.close();return 0;}
    in.close();return 1;
}
void Save(){
	unsigned long long ioi=0;
	long long Moo=1e9+7;
    ofstream out("这是你的存档.in");
    out<<You[0].Name<<'\n';
    for(int i=0;i<strlen(You[0].Name);i++) ioi=(ioi+(int)You[0].Name[i])*101%Moo;
    out<<Skll<<' '<<skk<<' '<<Tong<<' '<<Tongmax<<' '<<Ju<<' '<<Juk<<' '<<Jiao<<' '<<Shen<<' '<<Ji<<' '<<Yuan<<' '<<Shan<<' '<<Fu<<'\n';
    ioi=(ioi+Skll*103+skk*107+Tong*109+Tongmax*113+Ju*127+Juk*131+Jiao*137+Shen*139+Ji*149+Yuan*151+Shan*157+Fu*163)%Moo;
    for(int i=0;i<=Tong;i++)
    {
        out<<You[i].Blood<<' '<<You[i].Bloodmax<<' '<<You[i].Bloodjia<<' '<<You[i].Skilnum<<' '<<You[i].Skilmax<<' '<<You[i].Money<<' '<<You[i].EXP<<' '<<You[i].Shan<<' ';out<<You[i].Qijia<<'\n';
        ioi+=(2*ioi+You[i].Blood*167+You[i].Bloodmax*173+You[i].Bloodjia*179+You[i].Skilnum*181+You[i].Skilmax*191+You[i].Money*193+You[i].EXP*197+You[i].Shan*211+(int)You[i].Qijia*223)%Moo;
        for(int j=1;j<=You[i].Skilnum;j++) out<<You[i].Skil[j]<<' ',ioi+=i*j*(ioi+You[i].Skil[j])*227%Moo;out<<'\n';
    }for(int i=100;i<=99+Skll;i++)
    {
        out<<Skill[i].Name<<'\n';
    	for(int j=0;j<strlen(Skill[i].Name);j++) ioi+=i*j*(ioi+(int)Skill[i].Name[j])*229%Moo;
        out<<Skill[i].Qi<<' '<<Skill[i].Kill<<' '<<Skill[i].What<<' '<<Skill[i].color<<' '<<Skill[i].Any<<'\n';
        ioi=ioi+Skill[i].Qi*233+Skill[i].Kill*239+Skill[i].What*241+Skill[i].color*251+Skill[i].Any*257;
        ioi%=Moo;
        for(int j=1;j<=Skill[i].Any;j++)
		{
			out<<Skill[i].Anykill[j]<<' '<<Skill[i].Anywhat[j]<<' '<<Skill[i].Time[j]<<' ',out<<Skill[i].Anyqi[j]<<'\n';
			ioi+=i*j*(ioi+Skill[i].Anykill[j]*263+Skill[i].Anywhat[j]*269+Skill[i].Time[j]*271+(int)Skill[i].Anyqi[j]*277)%Moo;
		}
    }for(int i=1;i<=skk;i++) out<<Skkk[i]<<' ',ioi+=(ioi+Skkk[i])*281%Moo;out<<'\n'; 
    out<<'\n'<<ioi;
    out.close();
}
void Cun(){
    yy:system("cls");Color(0);
    SetPos(1,1),printf("---------存读档界面---------");
    SetPos(3,1),printf("读档按1  存档按2 -----");int a;cin>>a;
    if(a==1)
    {
        printf("\n  你需要将你之前的存档与此程序放入一个文件夹中。\n");
        printf("\n  不要更改名字与内容!\n");
        printf("\n  准备好了吗?按任意键开始!\n");char b;b=_getch();
        Slow(50,"\n    读档中......\n");
        if(Read()) Color(5),printf("\n    读档成功!\n");
        else
		{
			Color(4),printf("\n  读档失败!这个档一定被修改过!\n\n");
			Slow(200,"  啊......愚昧无知的人类啊......\n\n  接受来自胎神的惩罚吧!......\n\n");
			Color(5),printf("\n  全新!黑色字体特效,开启!!\n\n");Color(0);Black=1;Sleep(1000);
		}
		Color(0),Sleep(1000);
    }
    if(a==2)
    {
        printf("\n  你需要将此程序放入一个文件夹中。\n");
        printf("\n  注意此操作会覆盖之前的存档。\n");
        printf("\n  准备好了吗?按任意键开始!\n");char b;b=_getch();
        Save();Slow(50,"\n    存档中......\n");
        Color(5),printf("\n    存档成功!\n");Color(0),Sleep(1000);
    }
}
void Main(){
    system("cls");Color(0);You[0].Blood=You[0].Bloodmax;int a=-2019;
    SetPos(1,1),printf("-----------主界面-----------");
    SetPos(3,1),printf("金币:%d   经验值:%d   血量:%d",You[0].Money,You[0].EXP,You[0].Blood);
    SetPos(5,1),printf("Hi,%s,What do you want to do now?",You[0].Name);
    SetPos(7,1),printf("1.开始战斗!");
    SetPos(9,1),printf("2.存档与读档。");
    SetPos(11,1),printf("3.查看本体技能。");
    SetPos(13,1),printf("4.修改本体技能。");
    SetPos(15,1),printf("5.创造自定义技能。");
    SetPos(17,1),printf("6.前往商店。");
    SetPos(19,1),printf("7.查看小兵数据。");
    SetPos(21,1),printf("--------- ");
    if(Jiao==15) {SetPos(22,1),Color(5),printf("教程提示 15 :剩下的需要自己去摸索了,教程结束。"),Color(0);Jiao=-1;}
    if(Jiao==14) {SetPos(22,1),Color(5),printf("教程提示 14 :当你想保存游戏进度时,可以选择存档。\n             在下一次游戏中,你可以读档来继续游戏。\n             按 2 存档,否则退出教程。"),Color(0);SetPos(21,6),cin>>a;if(a==2) Jiao++;else Jiao=-1;}
    if(Jiao==13) {SetPos(22,1),Color(5),printf("教程提示 13 :剧情会在对战前随机刷出\n             我们来看看剧情的第一章吧!\n             按 1 开始,否则退出教程。"),Color(0);SetPos(21,6),cin>>a;if(a==6) Jiao++,Ju=1,Juk=10;else Jiao=-1;}
    if(Jiao==11) {SetPos(22,1),Color(5),printf("教程提示 11 :你可以购买药水增幅自己。\n             而在老虎机中,你可以抽出一些更实用的物品!\n             按 6 购买,否则退出教程。"),Color(0);SetPos(21,6),cin>>a;if(a==6) Jiao++,You[0].Money=200;else Jiao=-1;}
    if(Jiao==9) {SetPos(22,1),Color(5),printf("教程提示 9 :一人对战比较困难,\n             我们来试试和同伴一起战斗吧。\n             按 1 对战,否则退出教程。"),Color(0);SetPos(21,6),cin>>a;if(a==1) Jiao++,Tong++,You[1].Bloodmax=100,You[1].Skilmax=3;else Jiao=-1;}
    if(Jiao==7) {SetPos(22,1),Color(5),printf("教程提示 7 :除了一个一个攻击敌人,你还可以使用群攻技能。\n             我们提供了一个群攻技能给你。\n             按 4 装备,否则退出教程。"),Color(0);SetPos(21,6),cin>>a;if(a==4) Jiao++,skk=1,Skkk[1]=3;else Jiao=-1;}
    if(Jiao==5) {SetPos(22,1),Color(5),printf("教程提示 5 :在对战中,会轮到你的回合\n             你只能你的回合中才能使用技能。\n             按 1 对战,否则退出教程。"),Color(0);SetPos(21,6),cin>>a;if(a==1) Jiao++;else Jiao=-1;}
    if(Jiao==3) {SetPos(22,1),Color(5),printf("教程提示 3 :只用刀对战比较困难,\n             你可以使用技能来对战,来装备你的第一个技能吧。\n             按 4 装备,否则退出教程。"),Color(0);SetPos(21,6),cin>>a;if(a==4) Jiao++,skk=1,Skkk[1]=2;else Jiao=-1;}
    if(Jiao==1) {SetPos(22,1),Color(5),printf("教程提示 1 :本游戏是一个团队对战游戏,\n             一切基础是建立在“开始战斗!”模式下的。\n             按 1 对战,否则退出教程。"),Color(0);SetPos(21,6),cin>>a;if(a==1) Jiao++;else Jiao=-1;}
    SetPos(21,6);if(a==-2019) cin>>a;if(a==1) War();if(a==2) Cun();if(a==3) CheckMe();if(a==4) ChangeSkill();if(a==5) StartSkill();if(a==6) Store();if(a==7) CheckUs();
}
void Start(){
    char *str,aa;Color(0);
    printf("\n  Hi,请输入你的名字......");scanf("%s",You[0].Name);
    printf("\n  要开始教程吗?(按 y / n 选择)..... ");cin>>aa;
    if(aa=='y')
    {
        printf("\n\n  如果你是在本机第一次玩此游戏......");
        printf("\n\n  请将鼠标移至程序框上方按鼠标右键......");
        printf("\n\n  点击“默认值”......");printf("\n\n  点击“布局”......");
        printf("\n\n  将“屏幕缓冲区大小”调为1000 1000......");
        printf("\n\n  然后关闭此程序,重启一次......");
        printf("\n\n  按任意键开始!");char a;a=_getch();Jiao=1;
    }
    else skk=2,Skkk[1]=2,Skkk[2]=3,You[0].Money=200,You[0].EXP=100,Tong=1,You[1].Bloodmax=100,You[1].Skilmax=3,Ju=1,Juk=10;
    You[0].Qi=0,You[0].Blood=You[0].Bloodmax=100,You[0].Skilnum=1,You[0].Skilmax=2,You[0].Skil[1]=1,Tongmax=2,You[0].Qijia=0.5;
    str="刀斩";for(int i=0;i<strlen(str);i++)Skill[1].Name[i]=str[i];Skill[1].Kill=10,Skill[1].What=1,Skill[1].Any=0,Skill[1].color=7,Skill[1].Qi=0;
    str="火球";for(int i=0;i<strlen(str);i++)Skill[2].Name[i]=str[i];Skill[2].Kill=30,Skill[2].What=1,Skill[2].Any=0,Skill[2].color=4,Skill[2].Qi=1;
    str="流星雨";for(int i=0;i<strlen(str);i++)Skill[3].Name[i]=str[i];Skill[3].Kill=30,Skill[3].What=2,Skill[3].Any=0,Skill[3].color=5,Skill[3].Qi=2;
    str="劈剑";for(int i=0;i<strlen(str);i++)Skill[4].Name[i]=str[i];Skill[4].Kill=20,Skill[4].What=1,Skill[4].Any=0,Skill[4].color=12,Skill[4].Qi=0.2;
    str="背刺";for(int i=0;i<strlen(str);i++)Skill[5].Name[i]=str[i];Skill[5].Kill=50,Skill[5].What=1,Skill[5].Any=1,Skill[5].Anywhat[1]=5,Skill[5].Anykill[1]=30,Skill[5].color=3,Skill[5].Qi=1.5;
    str="飞刀";for(int i=0;i<strlen(str);i++)Skill[6].Name[i]=str[i];Skill[6].Kill=10,Skill[6].What=1,Skill[6].Any=1,Skill[6].Anywhat[1]=4,Skill[6].Anykill[1]=30,Skill[6].color=1,Skill[6].Qi=1.5;
    str="粘液弹";for(int i=0;i<strlen(str);i++)Skill[7].Name[i]=str[i];Skill[7].Kill=10,Skill[7].What=2,Skill[7].Any=1,Skill[7].Anywhat[1]=5,Skill[7].Anykill[1]=70,Skill[7].color=2,Skill[7].Qi=2;
    str="碾压";for(int i=0;i<strlen(str);i++)Skill[8].Name[i]=str[i];Skill[8].Kill=30,Skill[8].What=1,Skill[8].color=3,Skill[8].Qi=0.8;
    str="腾空";for(int i=0;i<strlen(str);i++)Skill[9].Name[i]=str[i];Skill[9].What=3,Skill[9].Any=1,Skill[9].Anywhat[1]=2,Skill[9].Time[1]=1,Skill[9].color=1,Skill[9].Qi=1.5;
    str="地裂";for(int i=0;i<strlen(str);i++)Skill[10].Name[i]=str[i];Skill[10].Kill=10,Skill[10].What=2,Skill[10].Any=2,Skill[10].Anywhat[1]=4,Skill[10].Anykill[1]=60,Skill[10].Anywhat[2]=5,Skill[10].Anykill[2]=20,Skill[10].color=11,Skill[10].Qi=2.5;
    str="雷击术";for(int i=0;i<strlen(str);i++)Skill[11].Name[i]=str[i];Skill[11].Kill=30,Skill[11].What=2,Skill[11].Any=2,Skill[11].Anywhat[1]=3,Skill[11].Anykill[1]=30,Skill[11].Anywhat[2]=5,Skill[11].Anykill[2]=30,Skill[11].color=6,Skill[11].Qi=2.5;
    str="雪球";for(int i=0;i<strlen(str);i++)Skill[12].Name[i]=str[i];Skill[12].Kill=20,Skill[12].What=1,Skill[12].Any=1;Skill[12].Anywhat[1]=1,Skill[12].Time[1]=1;Skill[12].color=1,Skill[12].Qi=2;
    str="永冻之域";for(int i=0;i<strlen(str);i++)Skill[13].Name[i]=str[i];Skill[13].Kill=20,Skill[13].What=2,Skill[13].Any=1;Skill[13].Anywhat[1]=1,Skill[13].Time[1]=1;Skill[13].color=1,Skill[13].Qi=4;
    str="暴风雪";for(int i=0;i<strlen(str);i++)Skill[14].Name[i]=str[i];Skill[14].Kill=50,Skill[14].What=2,Skill[14].Any=2;Skill[14].Anywhat[1]=3,Skill[14].Anykill[1]=30;Skill[14].Anywhat[2]=5,Skill[14].Anykill[2]=30;Skill[14].color=1,Skill[14].Qi=2;
    str="急救";for(int i=0;i<strlen(str);i++)Skill[15].Name[i]=str[i];Skill[15].What=3,Skill[15].Any=1;Skill[15].Anywhat[1]=1,Skill[15].Anykill[1]=30;Skill[15].color=2,Skill[15].Qi=1;
    str="瘟疫";for(int i=0;i<strlen(str);i++)Skill[16].Name[i]=str[i];Skill[16].What=2,Skill[16].Any=1;Skill[16].Anywhat[1]=6,Skill[16].Anykill[1]=40;Skill[16].color=3,Skill[16].Qi=2;
    str="下毒";for(int i=0;i<strlen(str);i++)Skill[17].Name[i]=str[i];Skill[17].Kill=10,Skill[17].What=1,Skill[17].Any=1;Skill[17].Anywhat[1]=2,Skill[17].Anykill[1]=10,Skill[17].Time[1]=10;Skill[17].color=8,Skill[17].Qi=0.8;
    str="重击";for(int i=0;i<strlen(str);i++)Skill[18].Name[i]=str[i];Skill[18].Kill=50,Skill[18].What=1,Skill[18].Any=0;Skill[18].color=4,Skill[18].Qi=1.5;
    str="泰山压顶";for(int i=0;i<strlen(str);i++)Skill[19].Name[i]=str[i];Skill[19].Kill=50,Skill[19].What=2,Skill[19].Any=1;Skill[19].Anywhat[1]=3,Skill[19].Anykill[1]=50,Skill[19].color=4,Skill[19].Qi=2.5;
    str="吸血";for(int i=0;i<strlen(str);i++)Skill[20].Name[i]=str[i];Skill[20].Kill=5,Skill[20].What=1,Skill[20].Any=1;Skill[20].Anywhat[1]=7,Skill[20].color=10,Skill[20].Qi=1;
    str="狩猎号角";for(int i=0;i<strlen(str);i++)Skill[21].Name[i]=str[i];Skill[21].What=3,Skill[21].Any=1;Skill[21].Anywhat[1]=5,Skill[21].Anykill[1]=10,Skill[21].color=9,Skill[21].Qi=0.3;
    str="打狗棒法";for(int i=0;i<strlen(str);i++)Skill[22].Name[i]=str[i];Skill[22].Kill=30,Skill[22].What=1,Skill[22].Any=1,Skill[22].Anywhat[1]=4,Skill[22].Anykill[1]=40,Skill[22].color=11,Skill[22].Qi=1.5;
    str="乞讨";for(int i=0;i<strlen(str);i++)Skill[23].Name[i]=str[i];Skill[23].What=3,Skill[23].Any=1;Skill[23].Anywhat[1]=3,Skill[23].Time[1]=5,Skill[23].Anykill[1]=20;Skill[23].color=12,Skill[23].Qi=2;
    str="江湖义";for(int i=0;i<strlen(str);i++)Skill[24].Name[i]=str[i];Skill[24].What=3,Skill[24].Any=1;Skill[24].Anywhat[1]=5,Skill[24].Anykill[1]=11,Skill[24].color=1,Skill[24].Qi=3;
    str="万箭齐发";for(int i=0;i<strlen(str);i++)Skill[25].Name[i]=str[i];Skill[25].Kill=20,Skill[25].What=2,Skill[25].Any=0,Skill[25].color=11,Skill[25].Qi=1.5;
    str="毒箭";for(int i=0;i<strlen(str);i++)Skill[26].Name[i]=str[i];Skill[26].Kill=20,Skill[26].What=1,Skill[26].Any=1;Skill[26].Anywhat[1]=2,Skill[26].Anykill[1]=10,Skill[26].Time[1]=2;Skill[26].color=8,Skill[26].Qi=0.8;
    str="神偷手";for(int i=0;i<strlen(str);i++)Skill[27].Name[i]=str[i];Skill[27].What=1,Skill[27].Any=1;Skill[27].Anywhat[1]=10,Skill[27].Anykill[1]=30,Skill[27].color=5,Skill[27].Qi=0;
    str="乱拳";for(int i=0;i<strlen(str);i++)Skill[28].Name[i]=str[i];Skill[28].Kill=10,Skill[28].What=1,Skill[28].Any=1,Skill[28].Anywhat[1]=4,Skill[28].Anykill[1]=60,Skill[28].color=1,Skill[28].Qi=1.3;
    str="喝酒";for(int i=0;i<strlen(str);i++)Skill[29].Name[i]=str[i];Skill[29].What=3,Skill[29].Any=1;Skill[29].Anywhat[1]=1,Skill[29].Anykill[1]=20;Skill[29].color=2,Skill[29].Qi=0.8;
    str="火箭炮";for(int i=0;i<strlen(str);i++)Skill[30].Name[i]=str[i];Skill[30].Kill=50,Skill[30].What=1,Skill[30].Any=1,Skill[30].Anywhat[1]=3,Skill[30].Anykill[1]=30;Skill[30].color=4,Skill[30].Qi=2;
    str="榴弹炮";for(int i=0;i<strlen(str);i++)Skill[31].Name[i]=str[i];Skill[31].Kill=40,Skill[31].What=2,Skill[31].Any=1,Skill[31].Anywhat[1]=3,Skill[31].Anykill[1]=30;Skill[31].color=7,Skill[31].Qi=3;
    str="激光炮";for(int i=0;i<strlen(str);i++)Skill[32].Name[i]=str[i];Skill[32].Kill=70,Skill[32].What=1,Skill[32].Any=0,Skill[32].color=5,Skill[32].Qi=3;
}
int main() {srand((unsigned)time(NULL));Start();while(1) Main(); return 0;}

在最后,啊不是最后

由于 CSDN 给文章字数的限定,我不能将所有的程序在此一下分享出来。

但是可以点击我的主页,找到胎神(下)的游戏部分,继续游玩。永远记住,这里是(上)!!!!! 

都来找合集(下)了,我可以跪收一个关注和赞吗?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值