社区讨论
尝试了一下剧情片
灌水区参与者 34已保存回复 44
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 44 条
- 当前快照
- 1 份
- 快照标识符
- @lzjg65x7
- 此快照首次捕获于
- 2024/08/07 14:07 2 年前
- 此快照最后确认于
- 2024/08/07 15:02 2 年前
CPP
#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;
float Score;
int up,dn,lf,rt,sy;float Vx,Vy;int Walk,Jump;
int Jumplock,Dnlock,Lflock,Rtlock;
float G=0.08,t0=0.3,t00=1.5;//时间参量
int N[100][45],M[100][45];
float ex,ey,evx,evy,eAx,eAy,eT;
float ax,ay,avx,avy,aAx,aAy,aT;
int Level=1,BoardNum;
float Sin(int a) {return sin(3.1416*a/180);}float Cos(int a) {return cos(3.1416*a/180);}
void Slow(char *p) {while(1){if(*p!=0) printf("%c",*p++);else break;if(!kbhit()) Sleep(50);}}
void SlowX(char *p) {while(1){if(*p!=0) printf("%c",*p++);else break;Sleep(50);}}
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|FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE|BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE);if(a==-12) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE|BACKGROUND_INTENSITY|BACKGROUND_GREEN);if(a==-13) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE|BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_BLUE);if(a==-14) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE|BACKGROUND_INTENSITY|BACKGROUND_RED);if(a==-15) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE|BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN);if(a==-16) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE|BACKGROUND_INTENSITY|BACKGROUND_BLUE);if(a==-17) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE|BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE);
}
int To_int(float a){return int(a+0.5);}float Abs(float a){return (a>=0)?a:-a;}float Min(float a,float b){return (a<=b)?a:b;}
void Setpos(float x,float y){COORD pos;pos.X=To_int(x)*2+1,pos.Y=To_int(y);SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}
void Put_Frame(int x,int y){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;
int next=360/num;
for(int i=Angle;i<360+Angle;i+=next)
{
float x,y;
if(aa==2) 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),cout<<a;
}
}
void ReadText(){Recent_Height=Height-Y;int A=Recent_Height/TextGap;Color(0);
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-2,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<=40;i+=5) {if(i!=1) Cir2(i-5,' ',1);Cir2(i,'*',1);Sleep(40);}system("cls");
Create_1();Print();Setpos(ex,ey),cout<<"㊣";
t00=1.5,G=0.08,Level=3;
}
Put_Frame(Right,Down);Color(0);
}
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(4);int RR=rand()%20;if(RR<=2) Color(0);if(RR==3) Color(-40);
Setpos(x1,y1),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(5);int RR=rand()%20;if(RR<=2) Color(1);if(RR==3) Color(-50);
Setpos(x1,y1),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;
}
if(c==-5) Cir(s-1,-1,x,y),Cir(s-2,0,x,y);
}
int Reading;
void Go(){Color(0),Setpos(53,1),printf("海拔: %dm",Height+1000),Setpos(53,3),printf("分数: %d",Score),Setpos(53,5),printf("死亡: %d次",-Life);
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(Life<=0) return; //复活
if(Here==3){Score+=5;N[To_int(X)][To_int(Y)]=2,dx=To_int(X),dy=To_int(Y);}//复活点
if(Here==9&&Walk==1&&Level<=2) {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(Right,Down);}//牌子
else Reading=0;
if((Here==1||Here==7)&&((Vy>0&&Walk==0)||(Walk==1))){Vy=0;Y=To_int(Y)-1;Jump=0;Walk=1;PrintFlag=1;}//触墙
else if((Stand==1||Stand==7)&&Vy>0&&Walk==0){Vy=0;Y=To_int(Y);Jump=0;Walk=1;PrintFlag=1;}//触墙
else if((Here==1||Here==7)&&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){//触炸弹
Score-=5;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;
}
else if(Here==8&&Vy>0&&Walk==0){Score+=2;Vy=0;Y=To_int(Y)-1;Jump=0;Walk=1;PrintFlag=1;int xx=To_int(X);while(N[xx][To_int(Y)]==8) N[xx][To_int(Y)]=7,xx++; xx=To_int(X)-1;while(N[xx][To_int(Y)]==8) N[xx][To_int(Y)]=7,xx--; }else if(Stand==8&&Vy>0&&Walk==0){Score+=2;Vy=0;Y=To_int(Y);Jump=0;Walk=1;PrintFlag=1;int xx=To_int(X);while(N[xx][To_int(Y)+1]==8) N[xx][To_int(Y)+1]=7,xx++; xx=To_int(X)-1;while(N[xx][To_int(Y)+1]==8) N[xx][To_int(Y)+1]=7,xx--; }
else if(Here==8&&Vy<=0&&Walk==0){Score+=2;Vy=0;Y=To_int(Y)+1;Walk=0;PrintFlag=1;int xx=To_int(X);while(N[xx][To_int(Y)]==8) N[xx][To_int(Y)]=7,xx++; xx=To_int(X)-1;while(N[xx][To_int(Y)]==8) N[xx][To_int(Y)]=7,xx--; }else if(Head==8&&Vy<=0&&Walk==0){Score+=2;Vy=0;Y=To_int(Y);Walk=0;PrintFlag=1;int xx=To_int(X);while(N[xx][To_int(Y)-1]==8) N[xx][To_int(Y)-1]=7,xx++; xx=To_int(X)-1;while(N[xx][To_int(Y)-1]==8) N[xx][To_int(Y)-1]=7,xx--;}
//从上触隐形 //从下触隐形
else if(Stand==1&&Vy==0&&Walk==1) int nil=0;else if(Stand==7&&Vy==0&&Walk==1) int nil=0;//普通站立
else Walk=0;
//以下为操作部分
int Num=up+dn+lf+rt;
if(Walk==1&&Jump==0){//站立起跳
if(Num==0) Vx*=0.6;//摩擦
if(up==1&&Jumplock==0){Vy=-0.6*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&&Jumplock==0){if(Vy>-0.21) Vy=-0.36*t00;if(Vy<=-0.21) Vy-=0.21*t00;
Jump=2;Jumplock=1;//二段跳
}
if(num==1&&dn==1){Vy+=0.1; }
Vy+=G;
}
Vy=Min(1.0,Vy);
if(NotMoveFlag==0) X+=Vx,Y+=Vy;
if(Y<=Up) Y=Up;if(X<=Left) X=Left;if(X>=Right) X=Right;if(Y>=Down) Y=Down;
if(PrintFlag==1) Clear(X0,Y0),Put_Man(X,Y),X0=X,Y0=Y;
else if((To_int(X0)==To_int(X)&&To_int(Y0)==To_int(Y))&&Walk==0) Put_Man(X,Y),X0=X,Y0=Y;
else if((To_int(X0)!=To_int(X)||To_int(Y0!=To_int(Y)))&&T%gap==0) Clear(X0,Y0),Put_Man(X,Y),X0=X,Y0=Y;
}
int LangNum,eStartClock,eLastClock,Rr,B,eLastShootClock,Level5Flag,Level6Flag;
int BStep,BstepMax,eChangeTurn,aChangeTurn,eBMoveClock;
int Bull;float bx,by,bvx,bvy;
void Move(){//移动的状态调整,包含Evil动作
if(Level>=3&&T%3==0){
if(eStartClock==0) eLastClock=eStartClock=clock();
Clear(ex+eAx,ey+eAy);Clear(ax+aAx,ay+aAy);
eT++;aT++;float k=(float)eT/3;aT++;float k2=(float)aT/3;
eAy=1.5*sin(k);eAx=1.5*sin(k/3);aAy=1.5*sin(k2);aAx=1.5*sin(k2/3);
if(ey>=6) ey-=0.6,evy*=0.8;if(Down-ey>=6) ey+=0.6,evy*=0.8;if(ex>=6) ex-=0.7,evx*=0.8;
if(ay>=6) ay-=0.6,avy*=0.8;if(Down-ay>=6) ay+=0.6,avy*=0.8;if(Right-ax+1>=6) ax+=0.7,avx*=0.8;
ex+=evx;ey+=evy;ax+=avx;ay+=avy;
if(ex<Left) ex=Left;if(ex>Right) ex=Right;if(ey<Up) ey=Up;if(ey>Down) ey=Down;
if(ax<Left) ax=Left;if(ax>Right) ax=Right;if(ay<Up) ay=Up;if(ay>Down) ay=Down;
if(Level>=3) Put_Evil(ex+eAx,ey+eAy);if(Level>=6&&Level6Flag==1) Put_Angel(ax+aAx,ay+aAy);
}
if(Level==3)
{
if(clock()-eLastClock>=1000)
{eLastClock=clock();LangNum++;Color(4);
if(LangNum==1) Setpos(ex-3,ey-3),SlowX(" 愚蠢,愚蠢。"),Setpos(ex-3,ey-3),Slow(" "),Setpos(X-2,Y-2),Color(0),SlowX("你是谁? "),Setpos(X-2,Y-2),Slow(" ");
if(LangNum==2) Setpos(ex-3,ey-3),SlowX("小小人类竟也敢攀爬此山?"),Setpos(ex-3,ey-3),Slow(" "),Setpos(X-2,Y-2),Color(0),Slow("为什么出现在这里? "),Setpos(X-2,Y-2),Slow(" ");
if(LangNum==3) {Setpos(ex-3,ey-3),SlowX("看来得有人来告诉你什么叫做不自量力。"),Setpos(ex-5,ey-3),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(Right,Down);Color(0);}
}
}
if(Level==5&&Level5Flag==0){Level5Flag=1;Color(4);
Setpos(ex-3,ey-3),SlowX(" 你应付的过来吗?小小人类。");Setpos(ex-3,ey-3),Slow(" "); Put_Frame(Right,Down);Color(0);
}
if(Level==6&&Level6Flag==0){Level6Flag=1;Color(4);
Sleep(1000);Setpos(ex-3,ey-3),SlowX(" 很好,很好。");Setpos(ex-3,ey-3),Slow(" ");Sleep(1500);
Setpos(2,ey-3),SlowX("看来我对你还是太轻柔了。");Setpos(2,ey-3),Slow(" "),Sleep(1500);
if(Life<0) Setpos(2,ey-3),SlowX("你知道吗?小家伙,你已经死了 ");cout<<(-1*Life),Sleep(50),SlowX(" 次了。");Setpos(2,ey-3),Slow(" "),Sleep(1500);
Setpos(2,ey-3),SlowX(" 要 不 是 有 个 一 直 往 你 脚 下 塞 隐 形 块 的 家 伙 在 的 话 ! ! !");Setpos(2,ey-3),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<=40;i+=5) {if(i!=1) Cir2(i-5,' ',2);Cir2(i,'*',2);Sleep(40);}system("cls");
Color(5),Setpos(ax,ay),cout<<"㊣";eLastShootClock=clock();eChangeTurn=aChangeTurn=1;Bull=0;
Create_1();Print();
Put_Frame(Right,Down);Color(0);
}
else if(Level==6){
if(eChangeTurn==1) evx=rand()%100/50.0-1.0,evy=rand()%100/50.0-1.0;
if(aChangeTurn==1) avx=rand()%100/50.0-1.0,avy=rand()%100/50.0-1.0;
if(clock()-eLastShootClock>=5000){eLastShootClock=clock();
Bull=1;BstepMax=15;BStep=0;
}
if(Bull==1){
if(BStep<BstepMax){if(clock()-eBMoveClock>=80){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;
Cir(1,-5,To_int(ax),To_int(ay)),Sleep(5),Cir(3,-5,To_int(ax),To_int(ay)),Sleep(5),Cir(4,-5,To_int(ax),To_int(ay)),Cir(3,0,To_int(ax),To_int(ay));Cir(4,0,To_int(ax),To_int(ay));
eChangeTurn=aChangeTurn=1;
}
}
}
}
int RR,Steps,StepsSpeed,StepsWide,TurnFlag,Level4Height,Level5Height;
void Create_1(){Score++;
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>2&&Level>=4) RR=0;
if(RR==2&&(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) Rr=rand()%6;else if(Level==5) Rr=rand()%4;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 if(Level>=6){N[i][Up]=N[Right-i+1][Up]=B;}
else {N[i][Up]=B;int R4=rand()%15;if(R4==0&&B==1&&k!=1&&k!=kk) N[i][j-1]=3;}
}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);
}
int Level3Speed=10,Level5Speed=8;
int main()
{
Put_Frame(Right,Down);
CONSOLE_CURSOR_INFO cursor_info={1,0};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
srand((unsigned)time(NULL));
ST:
memset(N,0,sizeof(N));memset(M,0,sizeof(M));
T=0;Clocknum=0;gap=3;Life=0;Speed=8;
X=9;Y=1;X0=X,Y0=Y;Vx=Vy=0;Jump=1;//初始状态掉落
Steps=3,StepsSpeed=8,StepsWide=5;//采取Create_1方式生成
Start();
Put_Man(X,Y);
while(1) 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) 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%Level3Speed==0))
Create_1(),Clear(X0,Y0),Y++,X0=X,Y0=Y,Print(),Put_Man(X,Y);
if(Level>=4&&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) {CreatNum=3;
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(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);
}
}
if(Life<=0) {Print();Setpos(4,10),system("color 7F"),Color(4),cout<<"You! Die!!!",Sleep(1000);Score=((int)Score/100)*100;if(Score>500&&Score<=700) Score=500;if(Score>700&&Score<=800) Score=600;if(Score>800&&Score<=900) Score=700;if(Score>900) Score=800;}
else {Setpos(4,10),system("color 6E"),Color(3),cout<<"You! Win!!!",Sleep(1000);}
Setpos(1,12),cout<<"Please point 'y' to Play AGain.";Color(0);
return 0;
}
回复
共 44 条回复,欢迎继续交流。
正在加载回复...