#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=38,Up=1,Down=28;
int Clocknum,T,gap,Life,Speed,CreatNum,LastCreateTime,Height,TextGap=10,Chapter;
int up,dn,lf,rt,sy;float Vx,Vy;int Walk,Jump,PlayTime;
int Jumplock,Dnlock,Lflock,Rtlock;
float G=0.07,t0=0.3,t00=1.5;//时间参量 
int N[100][45],M[100][45];
float ex,ey,eDx,eDy,eAx,eAy,eT;float ax,ay,aDx,aDy,aAx,aAy,aT;int eChangeTurn,aChangeTurn;
int Level=1,BoardNum,StepsWide;int PurifyClock,PurifyTime,PurifyFlag,Level6Speed=15,Flag7,Fight,StartClock;

float Sin(int a) {return sin(3.1416*a/180);}float Cos(int a) {return cos(3.1416*a/180);}
void Slow(const char *p) {while(1){if(*p!=0) printf("%c",*p++);else break;if(!kbhit()) Sleep(50);}}
void SlowX(const char *p) {while(1){if(*p!=0) printf("%c",*p++);else break;Sleep(40);}}
void SlowY(const char *p) {while(1){if(*p!=0) printf("%c",*p++);else break;Sleep(70);}}
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==-9) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_RED|BACKGROUND_GREEN|FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
if(a==-40) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED);if(a==-50) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN);
if(a==-11) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),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);
if(a==-400||a==-408) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);if(a==-401) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE);if(a==-402) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|BACKGROUND_INTENSITY|BACKGROUND_GREEN);if(a==-403) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_BLUE);if(a==-404) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|BACKGROUND_INTENSITY|BACKGROUND_RED);if(a==-405) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN);if(a==-406) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|BACKGROUND_INTENSITY|BACKGROUND_BLUE);if(a==-407) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE);
if(a==-500||a==-508) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);if(a==-501) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE);if(a==-502) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|BACKGROUND_INTENSITY|BACKGROUND_GREEN);if(a==-503) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_BLUE);if(a==-504) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|BACKGROUND_INTENSITY|BACKGROUND_RED);if(a==-505) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN);if(a==-506) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|BACKGROUND_INTENSITY|BACKGROUND_BLUE);if(a==-507) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|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;}float Max(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=Right,y=Down;Color(7);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("[]");}}
int Recent_Height;void Print();void Create_1();
void Cir2(float r,char a,int aa){//动画1 
	int num=7,Angle=r*10;if(r<=2) num=4;if(aa==1||aa==2) Angle=0,num=20;if(aa==3) num=20,Angle=r*(-5); 
	int next=360/num;
	for(int i=Angle;i<360+Angle;i+=next)
	{
		float x,y;
		if(aa==2||aa==3) x=ax+aAx+Cos(i)*r,y=ay+aAy+Sin(i)*r;
		else x=ex+eAx+Cos(i)*r,y=ey+eAy+Sin(i)*r;
		if(y<Up||x<Left||x>Right||y>Down) continue;
		Setpos(x,y),Color(4);if(aa==2||aa==3) Color(1);cout<<a;
	}
}
void ReadText(){Recent_Height=Height-Y;int A=Recent_Height/TextGap;Color(0);
	if(Level==7) {Color(5),Setpos(X-4,Y-2),SlowY("      神台峰。"),Chapter++;return;}
	if(A<=1) Setpos(X-4,Y-2),Slow("      神台山。"),Setpos(X-4,Y-2),Slow("               ");
	if(A==2) Setpos(X-4,Y-2),Slow("登顶小径:   向上 。"),Setpos(X-4,Y-2),Slow("                     ");
	if(A==3) Setpos(X-4,Y-2),Slow("每一步都可能是通向未知的旅程。"),Setpos(X-4,Y-2),Slow("                                ");
	if(A==4) Setpos(X-6,Y-2),Slow("愚蠢的攀登者啊,你可知道此为何处?"),Setpos(X-6,Y-2),Slow("                                  ");
	if(A==5) Setpos(X-2,Y-2),Slow("山间的风呼啸着,似乎在诉说着古老的秘密。"),Setpos(X-2,Y-2),Slow("                                        ");
	if(A==7) Color(7),Setpos(X-3,Y-2),Slow("我究竟为何而来?"),Setpos(X-3,Y-2),Slow("                 ");
	if(A==8) Color(7),Setpos(X-4,Y-2),Slow("  脚步愈发得沉重。"),Setpos(X-4,Y-2),Slow("                   ");
	if(A==9) Color(7),Setpos(X-4,Y-2),Slow("    喘不过气。"),Setpos(X-4,Y-2),Slow("                 ");
	if(A==10) Color(7),Setpos(X-4,Y-2),Slow("     喘息。"),Setpos(X-4,Y-2),Slow("             ");
	if(A>=11) {N[To_int(X)][To_int(Y)]=0;
		Color(4),Setpos(X-13,Y-2),Slow("在       你       身       后"),Sleep(1000),Setpos(X-13,Y-2),printf("                              "),Color(0);
		ex=Right-X+7,ey=Down-Y-3;
		system("color 4F");Sleep(50);
		system("color 7C");Sleep(50);
		system("color 0F");Sleep(50);
		system("color 4C");Sleep(50);
		for(int i=9;i>=1;i--) {if(i!=9) Cir2(i+1,' ',0);Cir2(i,'*',0);if(i>=7) Sleep(500);else if(i>=4) Sleep(300);else Sleep(100);}
		system("color 4F");Sleep(50);
		system("color 7C");Sleep(50);
		system("color 0F");Sleep(50);
		system("color 4C");Sleep(50);
		system("color 0F");Sleep(50);
		Setpos(ex,ey),cout<<"㊣";
		for(int i=1;i<=70;i+=5) {if(i!=1) Cir2(i-5,' ',1);Cir2(i,'*',1);Sleep(40);}system("cls");
		Create_1();Print();eDx=ex,eDy=ey;
		t00=1.5,G=0.07,Level=3;StepsWide++; 
	}
Put_Frame();Color(0);
}
void Start_Gui(){system("color 0F");system("cls");Put_Frame();int i=Right/2-4,j=Down/2-5;Setpos(i,j);Color(5);Slow("胎   神   之   路"); Setpos(i+8,j+1);Slow("2.0         "); Setpos(i+6,j+3);Slow("作者:胎神大大");Sleep(600); Setpos(i-3,j+9);Slow("第 一 章 · 相 遇   :    完 成                ");Sleep(600);Setpos(i-2,j+7);SlowY("死亡次数: ");cout<<-1*Life;SlowY(" 次     通关时间:");cout<<int((PlayTime+clock()-StartClock)/60000);SlowY(" 分钟");Sleep(500);
}
void Start_Gui2(){system("color 0F");system("cls");Put_Frame();int i=Right/2-4,j=Down/2-5;Setpos(i,j);Color(5);SlowY("胎   神   之   路"); Setpos(i+8,j+1);SlowY("2.0         ");Setpos(i+6,j+2);SlowY("别名:蔚 难"); Sleep(800);Setpos(i+6,j+3);SlowY("作者:胎神大大");Sleep(600);Setpos(i+6,j+4);SlowY("洛谷:TSzza"); Sleep(1000); Setpos(i-2,j+7);SlowY("死亡次数: ");cout<<-1*Life;SlowY(" 次     通关时间:");cout<<int((PlayTime+clock()-StartClock)/60000);SlowY(" 分钟");Setpos(i-3,j+9);SlowY("第 二 章 · 攀 登   :    完 成                ");Setpos(i-6,j+11);SlowY("T H A N K S   F O R   P L A Y I N G ! ! ! ! !");
}
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 if(N[i][j]==9) Color(-Abs(N[i][j])),Setpos(i,j),printf("[]");
	else Color(-Abs(N[i][j])),Setpos(i,j),printf("  ");
}
void Print(){  
	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]==8&&j>=Down-2) N[i][j]=7;
			
			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 if(N[i][j]==9) 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 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 Put_Evil(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(-400-N[x][y]);if(Level<6){int RR=rand()%20;if(RR<=2) Color(0);if(RR==3) Color(-40);}
	Setpos(x,y),printf("㊣");
}
void Put_Angel(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(-500-N[x][y]);if(Level<6){int RR=rand()%20;if(RR<=2) Color(0);if(RR==3) Color(-50);}
	Setpos(x,y),printf("㊣");
}
void Cir(int s,int c,int x,int 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;
    }Print(); 
    if(c==-5) Cir(s-1,-1,x,y),Cir(s-2,0,x,y);
}
int Reading,JumpLast;
void Go(){Color(0),Setpos(Right+3,1),printf("海拔: %dm",(int)(Height*1.6)+1000),Setpos(Right+3,3),printf("Level: %d",Level),Setpos(Right+3,5),printf("死亡: %d次",-Life);
if(JumpLast!=Jump) {JumpLast=Jump,Setpos(Right+3,11);if(Jump==0) printf("可三段跳");if(Jump==1) printf("可二段跳");if(Jump==2) printf("可一段跳");if(Jump>=3) printf("可零段跳");}
if(PurifyFlag==1&&Level<=6) Setpos(Right+3,8),printf("净化冷却: %0.1f s  ",Max(0,5.0-((float)(clock()-PurifyClock)/1000.0)));
else if(PurifyFlag==1&&(Level>=7&&Fight==0)) Setpos(Right+3,8),printf("净化冷却: %0.1f s  ",Max(0,15.0-((float)(clock()-PurifyClock)/1000.0))),Setpos(Right+3,15),printf("Speed: %d  ",Level6Speed),Setpos(Right+3,13),printf("攀登进度: %d/20 ",min(Flag7,20));
else if(PurifyFlag==1&&(Level>=7&&Fight==1)) Setpos(Right+3,8),printf("净化冷却: %0.1f s  ",Max(0,5.0-((float)(clock()-PurifyClock)/1000.0))),Setpos(Right+3,15),printf("Speed: %d  ",Level6Speed),Setpos(Right+3,13),printf("攀登进度: %d/20 ",min(Flag7,20));
	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=Down,Vy=Vx=0,N[To_int(X)-1][To_int(Y)]=N[To_int(X)][To_int(Y)]=N[To_int(X)+1][To_int(Y)]=7,Y=Down-1;
	}
	
	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(Here==3){N[To_int(X)][To_int(Y)]=2,dx=To_int(X),dy=To_int(Y);}//复活点 
	
	if(Here==9&&Walk==1&&(Level<=2||Flag7>=20)) {if(Reading==0) Reading=1,Color(0),Setpos(X-2,Y-2),Slow("按 R 阅读"),Setpos(X-2,Y-2),Slow("         "),Vx=Vy=0,Put_Frame();}//牌子 
	else Reading=0;
	
	if((Here==1||Here==7)&&((Vy>0&&Walk==0)||(Walk==1))){Vx=0;Vy=0;Y=To_int(Y)-1;Jump=0;Walk=1;PrintFlag=1;}//触墙 
	else if((Stand==1||Stand==7)&&Vy>0&&Walk==0){Vx=0;Vy=0;Y=To_int(Y);Jump=0;Walk=1;PrintFlag=1;}//触墙 
	else if((Here==1||Here==7)&&Vy<=0&&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)&&Vy<=0&&Walk==0){Vx*=0.8;Vy*=0.8;PrintFlag=1;}//触墙 
	else if(Here==5&&((Vy>0&&Walk==0)||(Walk==1))){Vx*=0.8;Vy=-0.8*t00;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.8*t00;Y=To_int(Y);Jump=0;Walk=0;NotMoveFlag=1;PrintFlag=1;}//触弹簧 
	else if(Here==4){//触炸弹 
		Y=To_int(Y)-1;Walk=0;PrintFlag=1;Cir(1,-5,To_int(X),To_int(Y)),Sleep(90),Cir(2,-5,To_int(X),To_int(Y)),Sleep(100),Cir(3,-5,To_int(X),To_int(Y)),Sleep(110),Cir(4,-5,To_int(X),To_int(Y)),Sleep(150);Cir(2,0,To_int(X),To_int(Y));Cir(3,0,To_int(X),To_int(Y));Cir(4,0,To_int(X),To_int(Y));
		if(dx!=0||dy!=0) X=dx,Y=dy,Vy=-0.4,Vx=0,Walk=Jump=0;
		else Life--,Vy=-0.6*t00,Walk=Jump=0;
	}
	else if(Here==8&&Vy>0&&Walk==0){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(Stand==8&&Vy>0&&Walk==0){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(Here==8&&Vy<=0&&Walk==0){Vy*=0.5;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(Head==8&&Vy<=0&&Walk==0){Vy*=0.5;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*t00;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.96;//摩擦 
		if(num==1&&up==1&&Jump==0&&Jumplock==0){Vy=-0.6*t00;Walk=0;Jump=1;Jumplock=1;}
		if(num==1&&up==1&&(Jump==1||Jump==2|Jump==3)&&Jumplock==0){if(Vy>-0.21) Vy=-0.36*t00;if(Vy<=-0.21) Vy-=0.21*t00;
			Jump++;
			Jumplock=1;//三段跳 
		}
		if(num==1&&dn==1){Vy+=0.1; }
		Vy+=G;
	}
	if(Vy>0.45) Vy=0.45,Vx*=0.92;
	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;
}
int LangNum,eStartClock,eLastClock,Rr,B,eLastShootClock,Level5Flag,Level6Flag;
int BStep,BstepMax,eBMoveClock,Level6Clock,Level7Clock,BulletGap=7000;
int Bull;float bx,by,bvx,bvy;
int Follow;int PurFlag;
void Purify(){PurFlag=0;
		if(Bull==1){Bull=0;//子弹击中 
				int i=To_int(bx),j=To_int(by);N[i-1][j]=N[i+1][j]=N[i][j-1]=N[i][j+1]=N[i][j]=4;
				eChangeTurn=aChangeTurn=1;
			}
	for(int i=Left;i<=Right;i++) for(int j=Up-1;j<=Down;j++) {if(N[i][j]==4){if(PurFlag==0) PurFlag=1,system("color 9F");if(N[i-1][j]!=4&&N[i+1][j]!=4&&N[i][j-1]!=4&&N[i][j+1]!=4&&N[i][j-1]!=7&&i-1>=Left) N[i-1][j]=7,Setpos(i-1,j),Color(-5),printf("##"); N[i][j]=7,Setpos(i,j),Color(-5),printf("##"),Sleep(30);}}
	if(PurFlag==1) system("color 0F");if(Fight==1) Cir(1,-5,To_int(ex),To_int(ey)),Sleep(90),Cir(2,-5,To_int(ex),To_int(ey)),Sleep(100),Cir(3,-5,To_int(ex),To_int(ey)),Sleep(110),Cir(4,-5,To_int(ex),To_int(ey)),Sleep(150);Cir(2,0,To_int(ex),To_int(ey));Cir(3,0,To_int(ex),To_int(ey));Cir(4,0,To_int(ex),To_int(ey));	Print();
}
void Move(){//移动的状态调整,包含Evil动作 
	if(sqrt((X-ax)*(X-ax)+(Y-ay)*(Y-ay))<=2&&((Level<=6&&clock()-PurifyClock>=5000)||(Level>=7&&Fight==0&&clock()-PurifyClock>=15000)||(Level>=7&&Fight==1&&clock()-PurifyClock>=5000))&&PurifyFlag==1){
		if(PurifyTime<=10||Level>=7) {Purify();if(PurFlag==1) PurifyClock=clock();}
		PurifyTime++,eChangeTurn=aChangeTurn=1;
	}
	//净化 
	
	if(Level>=7&&Fight==0){Follow=1;
		if(Bull==1){Bull=0;//清除当前子弹
				int i=To_int(bx),j=To_int(by);N[i-1][j]=N[i+1][j]=N[i][j-1]=N[i][j+1]=N[i][j]=4;eChangeTurn=aChangeTurn=1;}
	}if(Level>=7&&Fight==1) Follow=0;if(Follow==1) aDx=X-Vx,aDy=Y-4;
	//LEVEL7
	
	if(Level==6&&Level6Flag!=0){Fight=1;}
	if(Fight==1){
		if(clock()-eLastShootClock>=BulletGap){eLastShootClock=clock();//发射子弹 
			if(Bull==1){Bull=0;//清除当前子弹
				int i=To_int(bx),j=To_int(by);N[i-1][j]=N[i+1][j]=N[i][j-1]=N[i][j+1]=N[i][j]=4;
				eChangeTurn=aChangeTurn=1;
			}
			Bull=1;BstepMax=12;BStep=0;}
		if(Bull==1){//子弹移动 
			if(BStep<BstepMax){if(clock()-eBMoveClock>=150){eBMoveClock=clock();
				BStep++;float AAx=(ax+aAx)-(ex),AAy=(ay+aAy)-(ey);
					bx=ex+(AAx/BstepMax)*BStep,by=ey+(AAy/BstepMax)*BStep;
					int bbx=To_int(bx),bby=To_int(by);
					if(bbx<Left||bbx>Right||bby<Up||bby>Down) int nil=0;
					else N[bbx][bby]=4;
			}}
			else {Bull=0;//子弹击中
				int i=To_int(bx),j=To_int(by);N[i-1][j]=N[i+1][j]=N[i][j-1]=N[i][j+1]=N[i][j]=4;
				eChangeTurn=aChangeTurn=1;
			}}//开始移动 
		int RRR=rand()%1000;if(RRR==0) eChangeTurn=1;if(RRR==1) aChangeTurn=1;
		//Angel 躲避 
		if((ax-ex)*(ax-ex)+(ay-ey)*(ay-ey)<=5) aChangeTurn=1;
		if((X-ex)*(X-ex)+(Y-ey)*(Y-ey)<=0.8) eChangeTurn=1;
		if(Abs(aDx-eDx)<=5) aChangeTurn=1;
		//随机移动 
		if(eChangeTurn==1) eChangeTurn=0,eDx=rand()%Right+1,eDy=rand()%Down+1;
		if(aChangeTurn==1) aChangeTurn=0,aDx=rand()%Right+1,aDy=rand()%Down+1;
	}
	if(Level>=3&&T%3==0){
	Clear(ex+eAx,ey+eAy);Clear(ax+aAx,ay+aAy);
	if(Level<=5) {eT++;float k=(float)eT/3;eAy=1.5*sin(k/2);eAx=1.5*sin(k/5);}
	else eAx=eAy=0;
	//移动过程中 
	if((ex-eDx)*(ex-eDx)+(ey-eDy)*(ey-eDy)>=1) ex=(5*ex+eDx)/6.0,ey=(5*ey+eDy)/6.0;
	//非移动时 
	else {eChangeTurn=0;if(ey>=4&&ey<=Down/2) ey--;if(Down-ey+1>=4&&ey>Down/2) ey++;if(ex>=4&&ex<=Right/2) ex--;if(Right-ex+1>=4&&ex>Right/2) ex++;eDx=ex,eDy=ey;}
	if(Follow==1&&sqrt((ax-X)*(ax-X)+(ay-Y)*(ay-Y))<=3) {ay=Max(Up,ay-0.7);if(X<ax) ax=Min(Right,ax+0.5); else if(X>ax) ax=Max(Left,ax-0.5);}
	else if(Follow==1&&sqrt((ax-aDx)*(ax-aDx)+(ay-aDy)*(ay-aDy))>=5) ax=(9*ax+aDx)/10.0,ay=(9*ay+aDy)/10.0;
	//跟踪移动 
	else if(Follow==0&&(ax-aDx)*(ax-aDx)+(ay-aDy)*(ay-aDy)>=1) ax=(5*ax+aDx)/6.0,ay=(5*ay+aDy)/6.0;
	else {aChangeTurn=0;aDx=ax,aDy=ay;if(Follow==0) {if(ay>=6&&ay<=Down/2) ay--;if(Down-ay+1>=4&&ay>Down/2) ay++;if(ax>=4&&ax<=Right/2) ax--;if(Right-ax+1>=4&&ax>Right/2) ax++;}}
	//出界 
	if(ex+eAx<Left) ex=Left-eAx,eDx=ex;if(ex+eAx>Right) ex=Right-eAx,eDx=ex;if(ey<Up) ey=Up,eDy=ey;if(ey>Down) ey=Down,eDy=ey;
	if(ax+aAx<Left) ax=Left-aAx,aDx=ax;if(ax+aAx>Right) ax=Right-aAx,aDx=ax;if(ay<Up) ay=Up,aDy=ay;if(ay>Down) ay=Down,aDy=ay;
	if((Level>=3&&Level<=6)||Fight==1) Put_Evil(ex+eAx,ey+eAy);if(Level>=6&&Level6Flag>=1) Put_Angel(ax+aAx,ay+aAy);
	}//输出NPC 
	if(Level==3){
		Color(4);Setpos(ex-3,ey-2),SlowX("    愚蠢,愚蠢。"),Setpos(ex-3,ey-2),Slow("                  "),Setpos(X-2,Y-2),Color(0),SlowX("你是谁?  "),Setpos(X-2,Y-2),Slow("           ");
		Color(4);Setpos(ex-3,ey-2),SlowX("小小人类竟也敢攀爬此山?"),Setpos(ex-3,ey-2),Slow("                         "),Setpos(X-2,Y-2),Color(0),Slow("为什么出现在这里?  "),Setpos(X-2,Y-2),Slow("                     ");
		Color(4);Setpos(ex-3,ey-2),SlowX("看来得有人来告诉你什么叫做不自量力。"),Setpos(ex-5,ey-2),Slow("                                       ");
		int yy=Down;int kk=1;
		while(yy>=Up) {kk*=-1;yy-=3;for(int i=25;i<=28;i++) {if(i+kk<Left||i+kk>Right) continue;N[i+kk][yy]=1;}Print();Sleep(50);}
		Level++;Put_Frame();Color(0);
	}
	if(Level==5&&Level5Flag==0){Level5Flag=1;Color(4); 
		Setpos(ex-3,ey-2),SlowX("   你应付的过来吗?小小人类。");Setpos(ex-3,ey-2),Slow("                            "); Put_Frame();Color(0);
	}
	if(Level==6&&Level6Flag==0){Level6Flag=1;Color(4); 
		Sleep(1000);Setpos(ex-3,ey-2),SlowX("   很好,很好。");Setpos(ex-3,ey-2),Slow("                ");Sleep(1500); 
		Setpos(1,ey-2),SlowX("看来我对你还是太轻柔了。");Setpos(1,ey-2),Slow("                              "),Sleep(1500);
		if(Life<0) Setpos(1,ey-2),SlowX("你知道吗?小家伙,你已经死了 "),cout<<(-1*Life),Sleep(50),SlowX(" 次了。"),Setpos(1,ey-2),Slow("                                             "),Sleep(1500); 
		Setpos(1,ey-2),SlowX(" 要 不 是 有 个 一 直 往 你 脚 下 塞 隐 形 块 的 家 伙 在 的 话 ! ! !");Setpos(1,ey-2),printf("                                                                           "),Sleep(500); 
		system("color 4F");Sleep(50);system("color 7C");Sleep(50);system("color 0F");Sleep(50);system("color 4C");Sleep(50);
		for(int i=9;i>=1;i--) {if(i!=9) Cir2(i+1,' ',0);Cir2(i,'*',0);if(i>=7) Sleep(500);else if(i>=4) Sleep(300);else Sleep(100);}
		Bull=1;ax=Right-ex,ay=Down-ey;BstepMax=20;BStep=0;
		while(BStep<BstepMax){
			BStep++;float AAx=(ax+aAx)-(ex+eAx),AAy=(ay+aAy)-(ey+eAy);bx=ex+(AAx/BstepMax)*BStep,by=ey+(AAy/BstepMax)*BStep;
			int bbx=To_int(bx),bby=To_int(by);
			if(bbx<Left||bbx>Right||bby<Up||bby>Down) break;
			N[bbx][bby]=4;Print();Sleep(50);
		}system("color 4F");Sleep(50);system("color 7C");Sleep(50);system("color 0F");Sleep(50);system("color 4C");Sleep(50);system("color 0F");Sleep(50);
		Color(5),Setpos(ax,ay),cout<<"㊣";
		Cir(1,-5,To_int(ax),To_int(ay)),Sleep(90),Cir(2,-5,To_int(ax),To_int(ay)),Sleep(100),Cir(3,-5,To_int(ax),To_int(ay)),Sleep(110),Cir(4,-5,To_int(ax),To_int(ay)),Sleep(150);Cir(2,0,To_int(ax),To_int(ay));Cir(3,0,To_int(ax),To_int(ay));Cir(4,0,To_int(ax),To_int(ay));
		Color(5),Setpos(ax,ay),cout<<"㊣";for(int i=1;i<=70;i+=5) {if(i!=1) Cir2(i-5,' ',2);Cir2(i,'*',2);Sleep(40);}system("cls");
		eLastShootClock=clock();eChangeTurn=aChangeTurn=1;Bull=0;
		Create_1();Print();aDx=ax,aDy=ay;
		Put_Frame();Color(0);Level6Clock=clock();
	}
	if(Level==6&&PurifyFlag==0&&clock()-Level6Clock>=25000)
	{
		Sleep(1000);Color(1),Setpos(ax-1,ay-2),SlowX("小胎,听我说。"),Setpos(ax-1,ay-2),Slow("                ");
		Color(0),Setpos(X-1,Y-2);SlowX("你在叫我?"),Setpos(X-1,Y-2),Slow("          ");
		Color(4),Setpos(ex-1,ey-2),SlowX("太傻了!难道你想向人类求助吗?!"),Setpos(ex-1,ey-2),Slow("                                ");Sleep(1300);
		Color(1),Setpos(ax-1,ay-2),SlowX("请你接近我,我需要你的力量。"),Setpos(ax-1,ay-2),Slow("                            ");
		Color(4),Setpos(ex-1,ey-2),SlowX("你休想!别小看了我的攻击!"),Setpos(ex-1,ey-2),Slow("                          ");Sleep(1000);
		Color(1),Setpos(ax-1,ay-2),SlowX("以净化之力......"),Setpos(ax-1,ay-2),Slow("                  ");
		Color(4),Setpos(ex-1,ey-2),SlowX("接招!!!!"),Setpos(ex-1,ey-2),Slow("            ");
		BstepMax=10;BStep=0;
		while(BStep<BstepMax){
			BStep++;float AAx=(ax+aAx)-(ex+eAx),AAy=(ay+aAy)-(ey+eAy);bx=ex+(AAx/BstepMax)*BStep,by=ey+(AAy/BstepMax)*BStep;
			int bbx=To_int(bx),bby=To_int(by);
			if(bbx<Left||bbx>Right||bby<Up||bby>Down) break;
			N[bbx][bby]=4;Print();Sleep(50);
		}system("color 9F");
	for(int i=1;i<=70;i+=5) {if(i!=1) Cir2(i-5,' ',3);Cir2(i,'*',3);Sleep(40);}Purify();
		Color(4),Setpos(ex-1,ey-2),SlowX("啊啊啊啊啊啊!"),Sleep(1500);Setpos(ex-1,ey-2),Slow("              ");
		Color(1),Setpos(ax-1,ay-2),SlowX("记住,你只需要接近我。"),Sleep(1000);Setpos(ax-1,ay-2),Slow("                      ");
		Color(1),Setpos(ax-1,ay-2),SlowX("现在,让我们开始吧。"),Setpos(ax-1,ay-2),Slow("                    ");Sleep(1000);
		PurifyFlag=1;PurifyClock=clock(),PurifyTime++,eChangeTurn=aChangeTurn=1;
	}
	if(Level==6&&PurifyTime>=2&&Level6Flag==1){Level6Flag=2;
		Color(1),Setpos(ax-1,ay-2),SlowX("干得漂亮!净化的冷却时间是5秒钟,其间我会尽量逃开他的攻击,减少自己受到的伤害!"),Sleep(1000);Setpos(ax-1,ay-2),printf("                                                                               ");
	PurifyClock=clock();}
	if(Level==6&&PurifyTime>=5&&Level6Flag==2){Level6Flag=3;
		Color(1),Setpos(ax-1,ay-2),SlowX("坚持住!他已经快不行了!大概还差7次......接触我的过程中也不要忘记攀登!"),Sleep(1000);Setpos(ax-1,ay-2),printf("                                                                       ");
	PurifyClock=clock();}
	if(Level==6&&PurifyTime>=9&&Level6Flag==3){Level6Flag=4;
		Color(1),Setpos(ax-1,ay-2),SlowX("只剩最后3次了,准备好终结他,小胎!"),Sleep(1000);Setpos(ax-1,ay-2),printf("                                    ");
	PurifyClock=clock();}
	if(Level==6&&PurifyTime>=12&&Level6Flag==4){Level6Flag=5;
		system("color 4F");Sleep(50);system("color 7C");Sleep(50);system("color 0F");Sleep(50);system("color 4C");Sleep(50);system("color 0F");Sleep(50);
		Sleep(2000);Color(4),Setpos(ex-1,ey-2),SlowX("聪明,非———常聪明。"),Sleep(1500);Setpos(ex-1,ey-2),printf("                      ");
		Setpos(ex-1,ey-2),Slow("你们以为凭借那种净化的力量就能够打败我?"),Sleep(1000);Setpos(ex-1,ey-2),printf("                                        ");
		Setpos(ex-1,ey-2),Slow("我可是   死   神   ,对于某些迷失的灵魂,我拿捏的 死 死 的 。"),Sleep(1000);Setpos(ex-1,ey-2),printf("                                                             ");
		Setpos(ex-1,ey-2),Slow("百年来,我保证不可能有一个人登上过山顶,你为何不害怕害怕前路呢,可爱的小小人类?"),Sleep(1000);Setpos(ex-1,ey-2),printf("                                                                                ");
		Setpos(ex-1,ey-2),Slow("祈祷祈祷那个小灵魂能够救救你吧,我会在上面等你们的!"),Sleep(1000);Setpos(ex-1,ey-2),printf("                                                    ");
		Setpos(ex-1,ey-2),SlowX("哈哈哈哈哈哈");int st=clock();while(clock()-st<=3000)cout<<"哈哈哈";
		system("color 4F");Sleep(50);system("color 7C");Sleep(50);system("color 0F");Sleep(50);system("color 4C");Sleep(50);system("color 0F");Sleep(50);
		Level=7;system("cls");Put_Frame();Print();Level7Clock=clock();Follow=1;Fight=0;
	}
	if(Level==7&&clock()-Level7Clock>=5000&&Chapter==1){
		Color(1),Setpos(ax-1,ay-2),SlowX("对不起......"),Sleep(1500);Setpos(ax-1,ay-2),printf("                    ");
		Setpos(ax-1,ay-2),Slow("如你所见,我是一个迷失的灵魂。"),Sleep(1500);Setpos(ax-1,ay-2),printf("                                    ");
		Setpos(ax-1,ay-2),Slow("百年来,没有一个人能够登上神台山的山顶,也没有人能够引领我们这些迷失的灵魂下山。"),Sleep(1500);Setpos(ax-1,ay-2),printf("                                                                                          ");
		Setpos(ax-1,ay-2),Slow("神台山并不是什么普通的山,是吧?勇敢的攀登者啊,希望你可以走完这路途。"),Sleep(1500);Setpos(ax-1,ay-2),printf("                                                                                     ");
		Chapter++;
		Start_Gui();system("cls");Put_Frame(),Print();
		Level7Clock=clock();StepsWide++;
	}
	else if(Level==7&&clock()-Level7Clock>=5000&&Chapter==2&&Flag7==0){Flag7=1;
		Color(1),Setpos(ax-1,ay-2),SlowX("早上好。"),Sleep(1500);Setpos(ax-1,ay-2),printf("                    ");
		Setpos(ax-1,ay-2),Slow("事不宜迟,我们赶紧攀登吧,谁也不知道什么时候那个红色死神会从哪里冒出来。"),Sleep(1500);Setpos(ax-1,ay-2),printf("                                                                                     ");
		Setpos(ax-1,ay-2),Slow("随着海拔升高,路会变得越来越狭窄崎岖,但我会跟着你。如果那家伙再来捣乱,我们保持原计划迎敌就好。"),Sleep(1500);Setpos(ax-1,ay-2),printf("                                                                                                    ");
		Setpos(ax-1,ay-2),Slow("今天的攀登一共有二十个阶段,你的状态栏时刻都在更新,加油吧!"),Sleep(1500);Setpos(ax-1,ay-2),printf("                                                                                                    ");
	}
}

int RR,RRGap=2,Steps,StepsSpeed,TurnFlag,Level4Height,Level5Height;
void Create_1(){
	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++;Height++;if(RR>RRGap&&Level>=4) RR=0;if(Level>=7&&Flag7==22) RR=0;
    if(RR==RRGap&&(Level==1||Level>=4)) {RR=0;TurnFlag=0;int k=1,kk=StepsWide,j=Up; 
		if(Level>=4) {
			if(Rr<=2) Rr=3;else if(Level==4||Level==6||Level==7) Rr=rand()%6;else if(Level==5||Level==8) Rr=rand()%4;else if(Level>=9) Rr=rand()%3;if(Rr==0) B=4;if(Rr==1) B=5;if(Rr==2) B=8;if(Rr>2) B=1;
			if(Level==4) Level4Height++;if(Level==5) Level5Height++;
			if(Level==4&&Level4Height>=60) 
			Level=5,StepsWide--;
			if(Level==5&&Level5Height>=60) 
			Level=6;
		}
    	for(int i=Steps-StepsWide/2;i<=Steps-StepsWide/2+StepsWide-1;i++)
    	{
    		if(Level==1&&i==Steps&&Height%TextGap<=1) {BoardNum++;N[i][Up-1]=9;if(BoardNum>=11) Level=2;int A=BoardNum;if(A>=9) t00=0.8,G=0.05;if(A==6) t00=1.4;if(A==7) t00=1.2;if(A==8) t00=1;}
    		if(i<Left||i>Right) {TurnFlag=1;continue;}
    		else if(Level<=2){N[i][Up]=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;}
			else {N[i][Up]=B;int R4=rand()%15;if(R4==0&&B==1&&k==StepsWide/2+1) N[i][j-1]=3;k++;}
		}Steps+=StepsSpeed;
		if(TurnFlag==1){
			if(StepsSpeed>0) Steps=Right-StepsWide/2;
			else Steps=Left+StepsWide/2;
			StepsSpeed*=-1;
		}
	}
}
void Start(){
	for(int j=1;j<=12;j++) Create_1(),Print();
	for(int i=Left;i<=Right;i++) N[i][14]=1;N[1][15]=N[Right][15]=1;Color(0);
	Setpos(Right+3,9),printf("↑↓←→移动");Setpos(Right+3,11),printf("可三段跳");Setpos(Right+3,13),printf("禁用拼音输入法");Setpos(Right+3,15),printf("空格暂停"); 
}
int Level3Speed=20,Level5Speed=15,Ending1;
int main()
{
	Level=6;
	Put_Frame();
    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=0;Speed=8;Chapter=1;
	X=Right;Y=1;X0=X,Y0=Y;Vx=Vy=0;Jump=1;//初始状态掉落 
	Steps=3,StepsSpeed=8,StepsWide=5;//采取Create_1方式生成 
    Start();
	Put_Man(X,Y);
	StartClock=clock();
    while(Chapter<3) 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(g=='r'&&N[To_int(X)][To_int(Y)]==9&&(Level<=2||Level==7)) ReadText();
		}
        if(sy>=1) Setpos(2,3),cout<<"                           ",sy=0;
        
        Go();
        if(T%gap==0) Print(),Move();
        if((Level==4&&T%Level3Speed==0)||(Level==5&&T%Level5Speed==0)||(Level>=6&&T%Level6Speed==0&&Flag7<22))
			Create_1(),Clear(X0,Y0),Y++,X0=X,Y0=Y,Print(),Put_Man(X,Y);
		
        if(Level>=4&&Level<=6&&sqrt((X-ex)*(X-ex)+(Y-ey)*(Y-ey))<=1) Create_1(),Clear(X0,Y0),Y++,X0=X,Y0=Y,Print(),Put_Man(X,Y);
        if(Y<=13&&(Level<=3||Flag7==22)) {CreatNum=3;if(Ending1==0&&Flag7==22) {Ending1=1;for(int i=Left+15;i<=Right-16;i++) N[i][Up]=1;N[Left+15][Up+1]=N[Right-16][Up+1]=1;N[Right/2][Up-1]=9;Print();}
			if(Y>=12) Speed=70;
			else if(Y>=10) Speed=50;
			else if(Y>=7) Speed=35;
			else if(Y>=5) Speed=22;
			else if(Y>=3) Speed=15;
			else Speed=10;
		}
		
		
		if(Level>=7&&Flag7>0) {
			if(clock()-Level7Clock>=15000&&Flag7==1) {Flag7++;Level6Speed=14,StepsWide=6;if(StepsSpeed>0) StepsSpeed=9;if(StepsSpeed<0) StepsSpeed=-9;Level7Clock=clock();}
			else if(clock()-Level7Clock>=15000&&Flag7==2) Flag7++,StepsWide=5,Level6Speed=12,Level7Clock=clock();
			else if(clock()-Level7Clock>=20000&&Flag7==3) Flag7++,Level6Speed=10,RRGap=3,Level7Clock=clock();
			else if(clock()-Level7Clock>=20000&&Flag7==4) {
			Flag7++,Level=8,Level7Clock=clock();
			Fight=1;BulletGap=7000;system("color 4C");Sleep(30);system("color 0F");
			}
			else if(clock()-Level7Clock>=60000&&Flag7==5) {system("color 4C");Sleep(30);system("color 0F");Level6Speed=8,Fight=0,Flag7++;if(StepsSpeed>0) StepsSpeed=9;if(StepsSpeed<0) StepsSpeed=-10;Level7Clock=clock();}
			else if(clock()-Level7Clock>=20000&&Flag7==6) {Flag7++,Level6Speed=10,Level=9,Level7Clock=clock();Fight=1;BulletGap=1000;system("color 4C");Sleep(30);system("color 0F");}
			else if(clock()-Level7Clock>=30000&&Flag7==7) {system("color 4C");Sleep(30);system("color 0F");Level6Speed=8,Fight=0,Flag7++;Level6Speed=12;if(StepsSpeed>0) StepsSpeed=11;if(StepsSpeed<0) StepsSpeed=-11;Level7Clock=clock();}
			else if(clock()-Level7Clock>=20000&&Flag7==8) {Flag7++,RRGap=4;if(StepsSpeed>0) StepsSpeed=10;if(StepsSpeed<0) StepsSpeed=-10;Level7Clock=clock();
			Fight=1;BulletGap=5000;system("color 4C");Sleep(30);system("color 0F");}
			else if(clock()-Level7Clock>=60000&&Flag7==9) {system("color 4C");Sleep(30);system("color 0F");Level6Speed=8,Fight=0,Flag7++,Level6Speed=11,Level7Clock=clock();}
			else if(clock()-Level7Clock>=20000&&Flag7==10) {Flag7++,RRGap=5;if(StepsSpeed>0) StepsSpeed=9;if(StepsSpeed<0) StepsSpeed=-9;Level7Clock=clock();}
			else if(clock()-Level7Clock>=25000&&Flag7==11) {Flag7++,RRGap=4,Level6Speed=10,Level7Clock=clock();Fight=1;BulletGap=3000;system("color 4C");Sleep(30);system("color 0F");}
			else if(clock()-Level7Clock>=60000&&Flag7==12) {system("color 4C");Sleep(30);system("color 0F");Level6Speed=8,Fight=0,Flag7++,StepsWide=4,RRGap=3,Level7Clock=clock();}
			else if(clock()-Level7Clock>=20000&&Flag7==13) Flag7++,Level6Speed=10,Level7Clock=clock();
			else if(clock()-Level7Clock>=30000&&Flag7==14) Flag7++,StepsWide=3,Level7Clock=clock();
			else if(clock()-Level7Clock>=40000&&Flag7==15) {Flag7++,Level6Speed=9,Level=8,Level7Clock=clock();Fight=1;BulletGap=5000;system("color 4C");Sleep(30);system("color 0F");}
			else if(clock()-Level7Clock>=60000&&Flag7==16) {system("color 4C");Sleep(30);system("color 0F");Level6Speed=8,Fight=0,Flag7++;if(StepsSpeed>0) StepsSpeed=10;if(StepsSpeed<0) StepsSpeed=-10;Level7Clock=clock();}
			else if(clock()-Level7Clock>=20000&&Flag7==17) Flag7++,RRGap=3,Level6Speed=12,StepsWide=2,Level7Clock=clock();
			else if(clock()-Level7Clock>=30000&&Flag7==18) {Flag7++,RRGap=4,Level=7;Level6Speed=13,Level7Clock=clock();Fight=1;BulletGap=7000;system("color 4C");Sleep(30);system("color 0F");}
			else if(clock()-Level7Clock>=50000&&Flag7==19) {system("color 4C");Sleep(30);system("color 0F");Level6Speed=10,Fight=0,Flag7++;RRGap=5,StepsWide=2,Level6Speed=15;if(StepsSpeed>0) StepsSpeed=8;if(StepsSpeed<0) StepsSpeed=-8;Level7Clock=clock();}
			else if(clock()-Level7Clock>=20000&&Flag7==20) {Flag7++,RRGap=7,StepsWide=2;if(StepsSpeed>0) StepsSpeed=6;if(StepsSpeed<0) StepsSpeed=-6;Level7Clock=clock();}
			else if(clock()-Level7Clock>=40000&&Flag7==21) {Flag7++;}
		}
		if(CreatNum>0&&T-LastCreateTime>=Speed&&N[To_int(X)][To_int(Y)]!=9&&Y<=Down-3)
		{
			LastCreateTime=T,CreatNum--,Create_1(),Clear(X0,Y0),Y++,X0=X,Y0=Y,Print(),Put_Man(X,Y);
		}
    }system("color 6E");Sleep(5000);
		Start_Gui2();
    while(1) Sleep(100000);
}