社区讨论

尝试了一下剧情片

灌水区参与者 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 条回复,欢迎继续交流。

正在加载回复...