#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.1416a/180);}float Cos(int a) {return cos(3.1416a/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(a0||a8||a==-8) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE); if(a==-10||a1||a-18) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);if(a2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);if(a3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);if(a4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);if(a5) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);if(a6) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);if(a7) 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(i0||j0||ix+1||jy+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=r10;if(r<=2) num=4;if(aa1||aa2) 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(aa2||aa3) 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(aa2||aa3) Color(1);cout<<a; } } void ReadText(){Recent_Height=Height-Y;int A=Recent_Height/TextGap;Color(0); if(Level7) {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(A2) Setpos(X-4,Y-2),Slow("登顶小径: 向上 。"),Setpos(X-4,Y-2),Slow(" "); if(A3) Setpos(X-4,Y-2),Slow("每一步都可能是通向未知的旅程。"),Setpos(X-4,Y-2),Slow(" "); if(A4) Setpos(X-6,Y-2),Slow("愚蠢的攀登者啊,你可知道此为何处?"),Setpos(X-6,Y-2),Slow(" "); if(A5) Setpos(X-2,Y-2),Slow("山间的风呼啸着,似乎在诉说着古老的秘密。"),Setpos(X-2,Y-2),Slow(" "); if(A7) Color(7),Setpos(X-3,Y-2),Slow("我究竟为何而来?"),Setpos(X-3,Y-2),Slow(" "); if(A8) Color(7),Setpos(X-4,Y-2),Slow(" 脚步愈发得沉重。"),Setpos(X-4,Y-2),Slow(" "); if(A9) 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<<-1Life;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<<-1Life;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(RR3) 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(RR3) 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)-ss; 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)(Height1.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(Jump0) printf("可三段跳");if(Jump1) printf("可二段跳");if(Jump2) printf("可一段跳");if(Jump>=3) printf("可零段跳");} if(PurifyFlag1&&Level<=6) Setpos(Right+3,8),printf("净化冷却: %0.1f s ",Max(0,5.0-((float)(clock()-PurifyClock)/1000.0))); else if(PurifyFlag1&&(Level>=7&&Fight0)) 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(PurifyFlag1&&(Level>=7&&Fight1)) 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)&&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(Bull1){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(PurFlag0) 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(PurFlag1) system("color 0F");if(Fight1) 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&&Fight0&&clock()-PurifyClock>=15000)||(Level>=7&&Fight1&&clock()-PurifyClock>=5000))&&PurifyFlag1){ 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&&Flag722) RR=0; if(RRRRGap&&(Level1||Level>=4)) {RR=0;TurnFlag=0;int k=1,kk=StepsWide,j=Up; if(Level>=4) { if(Rr<=2) Rr=3;else if(Level4||Level6||Level7) Rr=rand()%6;else if(Level5||Level8) Rr=rand()%4;else if(Level>=9) Rr=rand()%3;if(Rr0) B=4;if(Rr1) B=5;if(Rr2) B=8;if(Rr>2) B=1; if(Level4) Level4Height++;if(Level5) Level5Height++; if(Level4&&Level4Height>=60) Level=5,StepsWide--; if(Level5&&Level5Height>=60) Level=6; } for(int i=Steps-StepsWide/2;i<=Steps-StepsWide/2+StepsWide-1;i++) { if(Level1&&iSteps&&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(A6) t00=1.4;if(A7) t00=1.2;if(A8) t00=1;} if(i<Left||i>Right) {TurnFlag=1;continue;} else if(Level<=2){N[i][Up]=1;int R4=rand()%25;if(R40&&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(R40&&B1&&kStepsWide/2+1) N[i][j-1]=3;k++;} }Steps+=StepsSpeed; if(TurnFlag1){ 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() { 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);

}