- BC20270041's blog
TSzza:jump2(加密)
- 2024-11-2 11:00:37 @
#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);
}