写在前面的话
众所周知,洛谷中有名的游戏创作者胎神大大是我们所有人的游戏神,不仅创作过出十分震撼人心的游戏,而且无时无刻不让所有人感到敬佩。作为一名从洛谷出来的编程者,我也是将ta的所有心血拿到 CSDN 上供大家欣赏与游玩。
以下的所有游戏中可能会有重合的情况,区别就是win10适配或者wen11适配而已,请大家按自己电脑的配置选择合适的游戏进行游玩,祝你们玩的愉快!
虽然这篇文章使用的是原创,但其中的游戏代码均为胎神所写,敬此!
代码合集
<2024> 水果忍胎 0.9
#include<bits/stdc++.h>
#include<windows.h>
#include<stdio.h>
#include<conio.h>
#include<time.h>
using namespace std;
float X,Y;int Left=1,Right=30,Up=1,Down=20;bool Medal[22],Fr[6],Cheat=0;
int Clocknum,T,Score,Combo,FruitNum,Jump_2,SS,FT[11],FC,FCT,FCF,FO,FFFt,FXia,FUp;
int up,dn,lf,rt,sy;float Vx,Vy;int Walk,Jump,Rush;
int Attention,Jumplock,AttTime,Dnlock,Lflock,Rtlock;
int RushT1,RushT2,RushT3;float Rush_Vx,Rush_Vy,Rush_x0,Rush_y0,Rush_X,Rush_Y;
const float G=0.038,t0=0.2,t00=0.8,t000=0.3;//时间参量
struct node
{int Type;
float X,Y,R,x0,y0,x1,y1;
float Vx,Vy;
int Life,color,brounce,half,Angle,AngleSpeed,t;
}F[100001];int l,m;
int N[100][45],M[100][45];
float Sin(int a) {return sin(3.1416*a/180);}float Cos(int a) {return cos(3.1416*a/180);}
void Color(int a){if(a==0) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);if(a==1) 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==-10) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE);if(a==-11) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_GREEN|BACKGROUND_BLUE);if(a==-12) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_GREEN);if(a==-13) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_RED|BACKGROUND_BLUE);if(a==-14) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_RED);if(a==-15) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_RED|BACKGROUND_GREEN);if(a==-16) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_BLUE);if(a==-17) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE);
if(a==-1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE);if(a==-2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_GREEN);if(a==-3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_BLUE);if(a==-4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED);if(a==-5) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_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);
}
int To_int(float a){return int(a+0.5);}float Abs(float a){return (a>=0)?a:-a;}
void Setpos(float x,float y){COORD pos;pos.X=To_int(x)*2+1,pos.Y=To_int(y)+3;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}
void Put_Frame(){Color(0);int x=Right-Left+1,y=Down-Up+1;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("[]");}}
void Clear(float x,float y){
// if(RushT3>0) Color(0);else
Color(-Abs(N[To_int(x)*2][To_int(y)]));Setpos(x,y),printf(" ");
M[To_int(x*2)][To_int(y)]=-1;
}void Medal_();
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;
if(Rush==1||AttTime>0||Attention>0) Color(5);
else Color(1);
Setpos(x1,y1),printf("●");
}
void Cir(float r,char a){//不要改 ,冲刺动画1
int num=7,Angle=r*10;if(r<=2) num=4;
int next=360/num;
for(int i=Angle;i<360+Angle;i+=next)
{
float x,y;
x=X+Cos(i)*r;
y=Y+Sin(i)*r;
if(y<Up||x<Left||x>Right||y>Down) continue;
if(a==' '&&N[To_int(x*2)][To_int(y)]==0&&N[To_int(x*2)+1][To_int(y)]==0&&N[To_int(x*2)-1][To_int(y)]==0) Setpos(x,y),Color(0),printf(" ");
else if(N[To_int(x*2)][To_int(y)]==0&&N[To_int(x*2)+1][To_int(y)]==0&&N[To_int(x*2)-1][To_int(y)]==0) Setpos(x,y),Color(-14),printf(" ");
}
}
void Cir2(int k,float r,char a){//水果整圆
int col=F[k].color;
float x0=F[k].X,y0=F[k].Y,R=F[k].R;
for(int i=y0-R;i<=y0+R;i++){float Ax=sqrt(R*R-(i-y0)*(i-y0));//cout<<i<<' '<<x0-Ax+0.5<<' '<<x0+Ax<<' ';
for(float k=x0-Ax+0.5;k<x0+Ax;k+=0.5)
if(a==' ') N[To_int(k*2)][i]=0; else N[To_int(k*2)][i]=col;
}
int num=24,Angle=0;if(r<=1) num=4;else if(r<=3) num=12;
int next=360/num;
for(int i=Angle;i<360+Angle;i+=next)
{
float x,y;
x=F[k].X+Cos(i)*r;
y=F[k].Y+Sin(i)*r;
if(y<Up||x<Left||x>Right||y>Down) continue;
else {if(a==' ') N[To_int(x*2)][To_int(y)]=0; else N[To_int(x*2)][To_int(y)]=col+10;}
}for(int i=0;i<360;i+=90)
{
float x,y;
x=F[k].X+Cos(i)*r;
y=F[k].Y+Sin(i)*r;
if(y<Up||x<Left||x>Right||y>Down) continue;
else {if(a==' ') N[To_int(x*2)][To_int(y)]=0; else N[To_int(x*2)][To_int(y)]=col+10;}
}
}
void Cir3(int xx,int yy,float r,char a){//不要改 冲刺动画2
r++;
int num=8,Angle=r*10-17;if(r<=2) num=4;
int next=360/num;
for(int i=Angle;i<360+Angle;i+=next)
{
float x,y;
x=xx+Cos(i)*r;
y=yy+Sin(i)*r;
if(y<Up||x<Left||x>Right||y>Down) continue;
if(a==' '&&N[To_int(x*2)][To_int(y)]==0&&N[To_int(x*2)+1][To_int(y)]==0&&N[To_int(x*2)-1][To_int(y)]==0) Setpos(x,y),Color(0),printf(" ");
else if(N[To_int(x*2)][To_int(y)]==0&&N[To_int(x*2)+1][To_int(y)]==0&&N[To_int(x*2)-1][To_int(y)]==0) Setpos(x,y),Color(-14),printf(" ");
}
}
void Cir4(int k,float r,char a){//半圆
int col=F[k].color;
int num=24,Angle=F[k].Angle;if(r<=1) num=4;else if(r<=3) num=12;
int next=360/num;
for(int i=Angle;i<180+Angle;i+=next)
{
float x,y;
x=F[k].X+Cos(i)*r;
y=F[k].Y+Sin(i)*r;
if(y<Up||x<Left||x>Right||y>Down) continue;
else {if(a==' ') N[To_int(x*2)][To_int(y)]=0; else N[To_int(x*2)][To_int(y)]=col;}
}bool left=0;
float x0=F[k].X+Cos(Angle)*r ,y0=F[k].Y+Sin(Angle)*r;
float x1=F[k].X+Cos(Angle+180)*r,y1=F[k].Y+Sin(Angle+180)*r;
float Ax=x1-x0,Ay=y1-y0,Dis=sqrt(Ax*Ax+Ay*Ay);
if(Ay<0) swap(x1,x0),swap(y1,y0),Ax*=-1,Ay*=-1;
if(Ax<0) left=1;
float ax=Ax/Dis*1.0,ay=Ay/Dis*1.0;
float i=x0,j=y0;
while(j<=y1&&((i<=x1&&left==0)||(i>=x1&&left==1))){
if(j<Up||i<Left||i>Right||j>Down) int nil=0;
else {if(a==' ') N[To_int(i*2)][To_int(j)]=0; else N[To_int(i*2)][To_int(j)]=col;}
i+=ax;j+=ay;
}for(int i=0;i<360;i+=90)
{
if(i<Angle||i>Angle+180) continue;
float x,y;
x=F[k].X+Cos(i)*r;
y=F[k].Y+Sin(i)*r;
if(y<Up||x<Left||x>Right||y>Down) continue;
else {if(a==' ') N[To_int(x*2)][To_int(y)]=0; else N[To_int(x*2)][To_int(y)]=col;}
}
}
void Line(float x0,float y0,float x1,float y1,char a,int col){bool left=0;
if(col==-5) m++,F[m].Type=-1,F[m].Life=1,F[m].t=0,F[m].x0=x0,F[m].y0=y0,F[m].x1=x1,F[m].y1=y1;
float Ax=x1-x0,Ay=y1-y0,Dis=sqrt(Ax*Ax+Ay*Ay);
if(Ay<0) swap(x1,x0),swap(y1,y0),Ax*=-1,Ay*=-1;
if(Ax<0) left=1;
float ax=Ax/Dis*0.9,ay=Ay/Dis*0.9;
float i=x0,j=y0;
while(j<=y1&&((i<=x1&&left==0)||(i>=x1&&left==1))){
if(j<Up||i<Left||i>Right||j>Down) int nil=0;
else Setpos(i,j),Color(col),printf(" ");
i+=ax;j+=ay;
}Color(0);
}
void Print_Fruit(int i,char a){
if(F[i].half==1) Cir4(i,F[i].R,a);
else Cir2(i,F[i].R,a);
}
void Go(){
if(Y<=Up) Y=Up,AttTime=0;
if(Y>=Down){FC=0;FCF=0;if(clock()-FCT>10000&&Medal[20]==0&&T>10000) Medal[20]=1,Medal_(); FCT=clock();
if(Jump>=1) Vy=0,Vx/=2,Y=Down,Jump=0,Walk=1;//触地
}
if(X<=Left) X=Left,Vx=0;if(X>=Right) X=Right,Vx=0;
int Num=up+dn+lf+rt;
if(RushT3>0) RushT3--;
if(RushT2>0){
if(Rush==2&&RushT2<4) Cir3(Rush_X,Rush_Y,RushT2,' ');
RushT2--;
if(RushT2==0) {Rush=0,RushT3=3,Vx=(Vx+Rush_Vx*t00)/3.0,Vy=(Vy+Rush_Vy*t00)/3.0,Line(X,Y,Rush_x0,Rush_y0,' ',-5),Color(0);if(Y<=Up) RushT3=0,AttTime=0,Vy=max(0.1,(double)Vy);FC++;FO++;if(FC>=8&&Medal[16]==0) Medal[16]=1,Medal_();if(FO>=10&&Medal[18]==0) Medal[18]=1,Medal_();}
if(Rush==2) Cir3(Rush_X,Rush_Y,RushT2,'|');
}
if(AttTime>0){AttTime--;
if(Num!=0){
if(up==1&&Jumplock!=0) int nil=0;
else if(dn==1&&Dnlock!=0) int nil=0;
else if(Num==1&&lf==1&&Lflock!=0) int nil=0;
else if(Num==1&&rt==1&&Rtlock!=0) int nil=0;
else {Attention=0;AttTime=0;
if(RushT1==0&&Rush==0) RushT1=6;
}
}
}
if(RushT1!=0) {
if(RushT1<6) Cir(RushT1,' ');
RushT1--;
if(RushT1==0){//开始冲刺
int non=0;//non很重要
if(Num==1){
if(up==1&&Jumplock==0) Rush_Vx=0,Rush_Vy=-1.3,Jumplock=1;
else if(lf==1&&Lflock==0) Rush_Vx=-1.8,Rush_Vy=0,Lflock=1;
else if(rt==1&&Rtlock==0) Rush_Vx=1.8,Rush_Vy=0,Rtlock=1;
else if(dn==1&&Dnlock==0) Rush_Vx=0,Rush_Vy=3,Dnlock=1;
else non=1;
}
else if(Num==2){
if(up==1&&lf==1&&Jumplock==0) Rush_Vx=-1.5,Rush_Vy=-1.5,Jumplock=1;
else if(up==1&&rt==1&&Jumplock==0) Rush_Vx=1.5,Rush_Vy=-1.5,Jumplock=1;
else if(dn==1&&lf==1&&Dnlock==0) Rush_Vx=-1.5,Rush_Vy=1.5,Dnlock=1;
else if(dn==1&&rt==1&&Dnlock==0) Rush_Vx=1.5,Rush_Vy=1.5,Dnlock=1;
else non=1;
}
else non=1;
if(non==0) {Rush_x0=X,Rush_y0=Y,Rush=1,RushT2=4;}
}
else Cir(RushT1,'|');
}
if(Walk==1&&Jump==0){//正在触地
FC=0;FCF=0;if(clock()-FCT>10000&&Medal[20]==0&&T>10000) Medal[20]=1,Medal_(); FCT=clock();
if(Abs(Vx)<1.95*t0) Attention=0;
if(Num==0) Vx*=0.6;//摩擦
if(Num==1||(Num==2&&up==1)){
if(lf==1){
if(Vx<=2*t0&&Vx>-0.8*t0) Vx-=0.5*t0;
else if(Vx<=-0.8*t0&&Vx>-2*t0) Vx-=0.1*t0;
else if(Vx<=-2*t0){
Vx=-2*t0,Attention=1;
if(up==1) Rush_x0=X,Rush_y0=Y,Rush_X=X-1,Rush_Y=Y-2,Rush=2,RushT2=4,Rush_Vx=-1.5,Rush_Vy=-1.5,Jumplock=1;
}
}
if(rt==1){
if(Vx<=0.8*t0&&Vx>-2*t0) Vx+=0.5*t0;
else if(Vx>=0.8*t0&&Vx<2*t0) Vx+=0.1*t0;
else if(Vx>=2*t0){
Vx=2*t0,Attention=1;
if(up==1) Rush_x0=X,Rush_y0=Y,Rush_X=X+1,Rush_Y=Y-2,Rush=2,RushT2=4,Rush_Vx=1.5,Rush_Vy=-1.5,Jumplock=1;
}
}
if(up==1){
Vy=-0.6;Walk=0;Jump=1;Jumplock=1;
}
}
}
if(Jump>=1&&Rush==0){//普通滞空
int num=up+dn;
if(Abs(Vy)<=0.05) Attention=1,AttTime=7;else Attention=0;
if(num==1&&up==1&&Jump==1&&Attention==0&&AttTime==0&&Jumplock==0&&Jump_2==1){
if(Vy>-0.2) Vy=-0.4;
if(Vy<=-0.2) Vy-=0.2;
Jump=2;//二段跳
}
if(num==1&&dn==1){
Vy+=0.1;
}
Vy+=G;
}
Clear(X,Y);
if(RushT1>0) int nil=0;
else if(Rush==1) X+=Rush_Vx*t00,Y+=Rush_Vy*t00;
else X+=Vx,Y+=Vy;
if(Y<Up||X<Left||X>Right||Y>Down){
if(Rush>0||RushT3>0)
{
if((X<Left||X>Right)&&Rush_Vy==0) Vy=-0.2,Vx=0;
}
}
if(Y<=Up) Y=Up;if(X<=Left) X=Left;if(X>=Right) X=Right;if(Y>=Down) Y=Down;
Put_Man(X,Y);
}
void CreatF(){
if(clock()-Clocknum>=25) return;
if(FruitNum>=5) return;
m++;F[m].Life=2;F[m].brounce=1;F[m].half=0;F[m].t=0;
int R=rand()%5+1;F[m].Type=R;
if(R==1) F[m].R=3.45,F[m].color=2;//="Watermelon";
if(R==2) F[m].R=1.85,F[m].color=4;//="Strawberry";
if(R==3) F[m].R=2.0,F[m].color=5;//="Orange ";
if(R==4) F[m].R=2.45,F[m].color=3;//="Grapes ";
if(R==5) F[m].R=1.85,F[m].color=6;//="Blueberry ";
int r=rand()%6+1;
if(r<=6) {//上下方
F[m].X=Left+(rand()%100)*(Right-Left)/100.0;
F[m].Vx=1.0-(rand()%100)*2/100.0;
if(r>1) F[m].Y=Down-1,F[m].Vy=-1-(rand()%100)*1/100.0;
else F[m].Y=Up+1,F[m].Vy=(rand()%100)*1/100.0;
F[m].Angle=rand()%360,F[m].AngleSpeed=rand()%20+5;
if(r>1) F[m].Y+=F[m].R;else F[m].Y-=F[m].R;
}
}
void Move(int Stage){//移动的状态调整,准备移步至Go函数
float x,y,r;FruitNum=0;
for(int i=l;i<=m;i++){
if(i==l&&F[i].Life==0){l++;if(l>m) l=1,m=0;continue;}
else if(F[i].Life==0) {continue;}
if(F[i].Type==-1){F[i].t++;
if(F[i].t==3) Line(F[i].x0+Rush_Vx,F[i].y0+Rush_Vy,F[i].x1+Rush_Vx,F[i].y1+Rush_Vy,' ',-1);
if(F[i].t>=4) Line(F[i].x0,F[i].y0,F[i].x1,F[i].y1,' ',0),Line(F[i].x0+Rush_Vx,F[i].y0+Rush_Vy,F[i].x1+Rush_Vx,F[i].y1+Rush_Vy,' ',0),F[i].Life=0;
continue;}
if(F[i].Life==2){F[i].t++;
if(F[i].t>10) {Color(0);x=F[i].X,y=(F[i].Y>=Down)?Down:Up;
M[To_int(x*2)][To_int(y)]=-1;
F[i].Life=1;}
else Color((F[i].t%6<=2)?-4:-5),Setpos(F[i].X,(F[i].Y>=Down)?Down:Up),cout<<"!!";
Color(0);
continue;
}
Print_Fruit(i,' ');
if(F[i].half==1) F[i].R*=0.96;
if(F[i].half==1&&F[i].t>=20){F[i].Life=0;continue;}
if(F[i].Type>=1&&F[i].Type<=5) FruitNum++;
x=F[i].X,y=F[i].Y,r=F[i].R;
float D=sqrt((x-X)*(x-X)+(y-Y)*(y-Y)),D2=sqrt((Rush_x0-x)*(Rush_x0-x)+(Rush_y0-y)*(Rush_y0-y));
if((D<=r*1.0||D2<=r*1.0)&&(Rush!=0||RushT3!=0)&&F[i].half==0) {
Combo++,Score+=10*Combo;FO=0;
if(Medal[8]==0&&Rush_Vx==0&&Rush_Vy>0) FXia++;if(FXia>=30) Medal[8]=1,Medal_(); if(Medal[14]==0&&Rush_Vx==0&&Rush_Vy<0) FUp++;if(FUp>=40) Medal[14]=1,Medal_();
if(Medal[3]==0) Medal[3]=1,Medal_();if(Fr[F[i].Type]==0) {Fr[F[i].Type]=1;if(Fr[1]+Fr[2]+Fr[3]+Fr[4]+Fr[5]==5) Medal[4]=1,Medal_();}if(Combo>=15&&Medal[5]==0) Medal[5]=1,Medal_();if(Combo>=40&&Medal[17]==0) Medal[17]=1,Medal_();if(Score==520&&Medal[6]==0) Medal[6]=1,Medal_();
if(Score>=1000&&Medal[15]==0) Medal[15]=1,Medal_();if(Score>=10000&&Medal[19]==0) Medal[19]=1,Medal_();if(Score>=100000&&Medal[21]==0) Medal[21]=1,Medal_();
FCF++;if(FCF>=5&&Medal[9]==0) Medal[9]=1,Medal_();if(FCF>=10&&Medal[12]==0) Medal[12]=1,Medal_();
if(F[i].Y<=Up&&Medal[13]==0) Medal[13]=1,Medal_(); if(F[i].Y>=Down&&Medal[7]==0) Medal[7]=1,Medal_();if(Medal[10]==0) {FFFt++;if(FFFt>10) FFFt-=10;FT[FFFt]=clock();int Kkk=5000;for(int kk=1;kk<=10;kk++) Kkk=max(Kkk,(int)(clock()-FT[kk]));if(Kkk<5000) Medal[10]=1,Medal_();}
F[i].Life=0;
for(int tt=1;tt<=3;tt++){
if(tt==1) for(int t=1;t<=2;t++) m++,F[m].R=F[i].R-0.6+(rand()%10+10)/20.0,F[m].Life=1,F[m].Type=6,F[m].color=4,F[m].brounce=0,F[m].half=1,F[m].X=F[i].X,F[m].Y=F[i].Y,F[m].t=0;
if(tt==2) for(int t=1;t<=2;t++) m++,F[m].R=F[i].R-0.6+(rand()%10+10)/20.0,F[m].Life=1,F[m].Type=6,F[m].color=F[i].color,F[m].brounce=0,F[m].half=1,F[m].X=F[i].X,F[m].Y=F[i].Y,F[m].t=0;
if(tt==3) for(int t=1;t<=2;t++) m++,F[m].R=F[i].R-0.4,F[m].Life=1,F[m].Type=F[i].Type,F[m].color=F[i].color+10,F[m].brounce=0,F[m].half=1,F[m].X=F[i].X,F[m].Y=F[i].Y,F[m].t=0;
if(Rush_Vx!=0&&Rush_Vy==0){//横切
int turn=(Rush_Vx>0)?1:-1;
F[m-1].Angle=180,F[m-1].AngleSpeed=turn*(5+rand()%10),F[m-1].Vx=F[i].Vx+turn*(rand()%10+10)*0.1,F[m-1].Vy=F[i].Vy-(rand()%10+10)*0.05-1;//上
F[m].Angle=0,F[m].AngleSpeed=turn*(-5-rand()%10),F[m].Vx = F[i].Vx+turn*(rand()%10+10)*0.1,F[m].Vy = F[i].Vy+(rand()%10+10)*0.05;//下
}else if(Rush_Vy!=0&&Rush_Vx==0){//竖切
int turn=(Rush_Vy>0)?1:-1;
F[m-1].Angle=270,F[m-1].AngleSpeed=turn*(5+rand()%10),F[m-1].Vx=F[i].Vx+(rand()%10+10)*0.1,F[m-1].Vy=F[i].Vy+(rand()%10+10)*0.1*turn-0.5;//→
F[m].Angle=90,F[m].AngleSpeed=turn*(-5-rand()%10),F[m].Vx = F[i].Vx-(rand()%10+10)*0.1,F[m].Vy = F[i].Vy+(rand()%10+10)*0.1*turn-0.5;//左
}else{
if(Rush_Vy*Rush_Vx<0){int turn=(Rush_X<0)?1:-1; //右上
F[m-1].Angle=135,F[m-1].AngleSpeed=-turn*(5+rand()%10),F[m-1].Vx=F[i].Vx-(rand()%10+10)*0.1,F[m-1].Vy=F[i].Vy-(rand()%10+10)*0.04-1;//上
F[m].Angle=315,F[m].AngleSpeed=turn*(5+rand()%10),F[m].Vx=F[i].Vx+(rand()%10+10)*0.1,F[m].Vy=F[i].Vy+(rand()%10+10)*0.04;//下
}
if(Rush_Vy*Rush_Vx>0){int turn=(Rush_X<0)?1:-1;//左上
F[m-1].Angle=225,F[m-1].AngleSpeed=-turn*(5+rand()%10),F[m-1].Vx=F[i].Vx+(rand()%10+10)*0.1,F[m-1].Vy=F[i].Vy-(rand()%10+10)*0.04-1;//上
F[m].Angle=45,F[m].AngleSpeed=turn*(5+rand()%10),F[m].Vx=F[i].Vx-(rand()%10+10)*0.1,F[m].Vy=F[i].Vy+(rand()%10+10)*0.04;//下
}
}if(tt<=1) F[m-1].Vx*=1.2,F[m-1].Vy*=1.2,F[m].Vx*=1.2,F[m].Vy*=1.2;
}
continue;
}
F[i].t++;
F[i].Angle+=F[i].AngleSpeed;
if(F[i].Angle>=360) F[i].Angle-=360;
if(F[i].Angle<0) F[i].Angle+=360;
F[i].X+=F[i].Vx*t000;F[i].Y+=F[i].Vy*t000;
x=F[i].X,y=F[i].Y;
if(y+F[i].R<Up||y-F[i].R>Down){
if(F[i].t<=5) {F[i].Vy*=-1;
if(y+F[i].R<Up) F[i].Y=-F[i].R+Up;
if(y-F[i].R>Down) F[i].Y=F[i].R+Down;}
F[i].Life=0;continue;}
if(x<Left||x>Right){
if(F[i].brounce>0||F[i].t<=5){if(F[i].brounce>0) F[i].brounce--;F[i].Vx*=-1;
if(x<Left) F[i].X=Left;
if(x>Right) F[i].X=Right;
}
else {F[i].Life=0;continue;}
}
if(Stage==0||F[i].Type<=0||F[i].Type>=5) F[i].Vy+=G;
Print_Fruit(i,'*');
}
}
void Print(){
for(int i=Left*2;i<=Right*2;i++)
for(int j=Up;j<=Down;j++){
if(N[i][j]!=M[i][j]){
if(N[i][j]==0) Color(0),Setpos(i/2.0,j),printf(" ");
else Color(-Abs(N[i][j])),Setpos(i/2.0,j),printf(" ");
}
M[i][j]=N[i][j];
}memset(N,0,sizeof(N));Color(0);
}
void Slow(char *p) {while(1){if(*p!=0) printf("%c",*p++);else break;if(!kbhit()) Sleep(20);}}
int speed;
void Start(){Color(1);SS=1;
Setpos(2,2),cout<<"水果忍胎 0.9 ";
Setpos(10,3),cout<<"作者:胎神大大";
Setpos(2,6),cout<<"按 x 进入教学模式,按 y 直接开始游戏!";
Setpos(2,8),cout<<"除了封面其他的都做好了qwq,但是做封面好麻烦所以说不想做直接发布了 我这边用的 Win11 输出的字符画很流畅,不知道你们电脑会不会有什么黑点阿残影阿输出错误之类的,总之这个游戏玩起来确实蛮爽的!大家加油,看看哪个先点满成就哈(万一有 BUG 呢是吧,毕竟有些成就死活打不出来...另外因为有成就所以说顺便把存档也做了,大家放心打)";
Setpos(1,20),cout<<"你可根据电脑性能重新选择画面流畅度:默认为 均衡 流畅度,按 q 调为低流畅,按 w 调为中低流畅,按 e 调为极高流畅 (盲目调高流畅度会导致画面卡顿)";speed=4;
A:char e=_getch();if(e=='y') return;else if(e=='x') int nil=0;else if(e=='q') {speed=10;goto A;}else if(e=='w') {speed=4;goto A;}else if (e=='e') {speed=2;goto A;}else goto A;
int Stage=0,StageY=0,StageT=0;
system("cls");memset(N,0,sizeof(N));memset(M,0,sizeof(M));
Put_Frame();
T=0;Clocknum=0;X=2;Y=1;Vx=Vy=0;Jump=1;Put_Man(X,Y);//初始状态掉落
memset(F,0,sizeof(F));l=m=0;Score=Combo=0;
while(1) if(clock()-Clocknum>=25)
{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(16,3),sy++,Color(0),system("pause");if(g=='y'&&Stage>=1) StageY=1;if(g=='x'&&Stage==2) Jump_2=1,Setpos(26,26),Color(5),cout<<"开";}
if(sy>=1) Setpos(16,3),cout<<" ",sy=0;
if(Stage==0&&StageT==0){
Setpos(2,22),Color(0),Slow("欢迎来到 忍者神胎 教学关卡");Sleep(500);
Setpos(2,24),Color(0),Slow("本游戏只有↑↓→←四种按键操作,想必是十分简单的,但又有很大的发挥空间!");Sleep(500);
Setpos(2,26),Color(0),Slow("按下↑↓→←进行移动。注:空中按 ↓ 有加速下落的效果");
StageT=T;
}
if(Stage==0&&T-StageT>=100)//5s
{Stage++;
Setpos(2,22),Color(0),printf(" ");
Setpos(2,24),Color(0),printf(" ");
Setpos(2,26),Color(0),printf(" ");
m++,F[m].Angle=0,F[m].AngleSpeed=0,F[m].color=2,F[m].half=0,F[m].Life=1,F[m].R=3.45,F[m].t=0,F[m].Type=1,F[m].Vx=F[m].Vy=0,F[m].X=16,F[m].Y=13;Print();
Setpos(2,22),Color(0),Slow("按↑跳起后,立刻在空中重新 长按 方向键 可以进行挥砍!来试试刀法!");
Setpos(2,24),Color(0),Slow("按 y 开启下一阶段教学");
}
if(Stage==1&&F[1].Life==1) StageT=T;
if(Stage==1&&F[1].Life==0&&T-StageT>=20){
StageT=T;
l=0,m++,F[1].Angle=45,F[1].AngleSpeed=0,F[1].color=2,F[1].half=0,F[1].Life=1,F[1].R=3.45,F[1].t=0,F[1].Type=1,F[1].Vx=F[1].Vy=0,F[1].X=16,F[1].Y=13;
}
if(StageY==1&&Stage==1){StageY=0;Stage++;memset(M,-1,sizeof(M));memset(N,0,sizeof(N));
Setpos(2,22),Color(0);printf(" ");
Setpos(2,24),Color(0);printf(" ");
l=0;for(int tt=1;tt<=3;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0,F[tt].X=16,F[tt].Y=19-tt*5;
Print();Setpos(2,22),Color(0),Slow("接下来练习连招!");
Setpos(2,24),Color(0),Slow("在空中可以连续按 ↑ 进行多段跳跃,如果你不习惯,可以按 x 开启二段跳能力(PS:连招的秘诀是把握节奏)");
Setpos(2,26),Color(0),Slow("按 y 开启下一阶段教学 ( 二段跳能力状态: )");
Setpos(26,26),Color(5);cout<<"关";
}
if(Stage==2&&F[1].Life+F[2].Life+F[3].Life==3) StageT=T;
if(Stage==2&&F[1].Life+F[2].Life+F[3].Life<3&&T-StageT>=50){
StageT=T;
l=0;for(int tt=1;tt<=3;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0,F[tt].X=16,F[tt].Y=19-tt*5;
}
if(StageY==1&&Stage==2){StageY=0;Stage++;memset(M,-1,sizeof(M));memset(N,0,sizeof(N));
Setpos(2,22),Color(0),printf(" ");
Setpos(2,24),Color(0),printf(" ");
Setpos(2,26),Color(0),printf(" ");
l=0;for(int tt=1;tt<=4;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0;
F[1].X=9,F[1].Y=15.5;F[2].X=17.3,F[2].Y=9.4;F[3].X=9.6,F[3].Y=3.5;F[4].X=17,F[4].Y=1;
Print();Setpos(2,22),Color(0);Slow("空中折线跳:先跳起,再在空中向上连续左右冲刺,是一种杀伤面积广,上升距离大的连招");
Setpos(2,24),Color(0);Slow("按 y 开启下一阶段教学 (本关四个果子可一个连招砍完,试试精细操作!)");
}
if(Stage==3&&F[1].Life+F[2].Life+F[3].Life+F[4].Life==4) StageT=T;
if(Stage==3&&F[1].Life+F[2].Life+F[3].Life+F[4].Life<4&&T-StageT>=50){
StageT=T;
l=0;for(int tt=1;tt<=4;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0;
F[1].X=9,F[1].Y=15.5;F[2].X=17.3,F[2].Y=9.4;F[3].X=9.6,F[3].Y=3.5;F[4].X=17,F[4].Y=1;}
if(StageY==1&&Stage==3){StageY=0;Stage++;memset(M,-1,sizeof(M));memset(N,0,sizeof(N));
Setpos(2,22),Color(0),printf(" ");
Setpos(2,24),Color(0),printf(" ");
l=0;for(int tt=1;tt<=4;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0;
F[1].X=15.4,F[1].Y=15.5;F[2].X=7.3,F[2].Y=9.5;F[3].X=15.4,F[3].Y=3.6;F[4].X=15.4,F[4].Y=8.5;
Print();Setpos(2,22),Color(0);Slow("三角围杀:先使用折线跳跳至目标上方,再向下瞄准,冲刺切除下方水果");
Setpos(2,24),Color(0);Slow("按 y 开启下一阶段教学");
}
if(Stage==4&&F[1].Life+F[2].Life+F[3].Life+F[4].Life==4) StageT=T;
if(Stage==4&&F[1].Life+F[2].Life+F[3].Life+F[4].Life<4&&T-StageT>=50){
StageT=T;
l=0;for(int tt=1;tt<=4;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0;
F[1].X=15.4,F[1].Y=15.5;F[2].X=7.3,F[2].Y=9.5;F[3].X=15.4,F[3].Y=3.6;F[4].X=15.4,F[4].Y=8.5;}
if(StageY==1&&Stage==4){StageY=0;Stage++;memset(M,-1,sizeof(M));memset(N,0,sizeof(N));
Setpos(2,22),Color(0),printf(" ");
Setpos(2,24),Color(0),printf(" ");
l=0;for(int tt=1;tt<=4;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0;
F[1].X=4.7,F[1].Y=15.5;F[2].X=1,F[2].Y=15.5;F[3].X=1,F[3].Y=11;F[4].X=10,F[4].Y=5;
Print();Setpos(2,22),Color(0);Slow("撞墙跳:利用平扑撞墙会产生一个小向上速度的特性,将本应断掉的连招接续起来");
Setpos(2,24),Color(0);Slow("按 y 开启下一阶段教学 (本关接连招砍绿果、紫果、红果)");
}
if(Stage==5&&F[1].Life+F[2].Life+F[3].Life+F[4].Life==4) StageT=T;
if(Stage==5&&F[1].Life+F[2].Life+F[3].Life+F[4].Life<4&&T-StageT>=50){
StageT=T;
l=0;for(int tt=1;tt<=4;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0;
F[1].X=4.7,F[1].Y=15.5;F[2].X=1,F[2].Y=15.5;F[3].X=1,F[3].Y=11;F[4].X=10,F[4].Y=5;}
if(StageY==1&&Stage==5){StageY=0;Stage++;memset(M,-1,sizeof(M));memset(N,0,sizeof(N));
Setpos(2,22),Color(0),printf(" ");
Setpos(2,24),Color(0),printf(" ");
l=0;for(int tt=1;tt<=4;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0;
F[1].X=18,F[1].Y=15;F[2].X=16,F[2].Y=17;F[3].X=24,F[3].Y=13;F[4].X=24,F[4].Y=8;
Print();Setpos(2,22),Color(0);Slow("平地起冲:长按 → 加速至变黄,立即再按下 ↑ 可直接起冲,接连招");
Setpos(2,24),Color(0);Slow("按 y 开启下一阶段教学 (本关接连招砍紫果、红果)");
}
if(Stage==6&&F[1].Life+F[2].Life+F[3].Life+F[4].Life==4) StageT=T;
if(Stage==6&&F[1].Life+F[2].Life+F[3].Life+F[4].Life<4&&T-StageT>=50){
StageT=T;
l=0;for(int tt=1;tt<=4;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0;
F[1].X=18,F[1].Y=15;F[2].X=16,F[2].Y=17;F[3].X=24,F[3].Y=13;F[4].X=24,F[4].Y=8;}
if(StageY==1&&Stage==6){StageY=0;Stage++;memset(M,-1,sizeof(M));memset(N,0,sizeof(N));
Setpos(2,22),Color(0),printf(" ");
Setpos(2,24),Color(0),printf(" ");
l=0;for(int tt=1;tt<=4;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0;
F[1].X=5,F[1].Y=16;F[2].X=10,F[2].Y=19;F[3].X=12,F[3].Y=19;F[4].X=21,F[4].Y=15;
Print();Setpos(2,22),Color(0);Slow("凌波微步: 跳起在空中向右下冲击地面,不要松开 →以获得极大的速度,然后重新按下 ↑ ,紧接平地起冲!");
Setpos(2,24),Color(0);Slow("按 y 完成教学关卡 (本关蓝果下冲,紫果起跳,接连招砍红果)");
}
if(Stage==7&&F[1].Life+F[2].Life+F[3].Life+F[4].Life==4) StageT=T;
if(Stage==7&&F[1].Life+F[2].Life+F[3].Life+F[4].Life<4&&T-StageT>=50){
StageT=T;
l=0;for(int tt=1;tt<=4;tt++) m++,F[tt].Angle=0,F[tt].AngleSpeed=0,F[tt].color=tt,F[tt].half=0,F[tt].Life=1,F[tt].R=1.45,F[tt].t=0,F[tt].Type=1,F[tt].Vx=F[tt].Vy=0;
F[1].X=5,F[1].Y=16;F[2].X=10,F[2].Y=19;F[3].X=12,F[3].Y=19;F[4].X=21,F[4].Y=15;
}
if(StageY==1&&Stage==7) return;
if(RushT1==0) Move(1);
Go();
if(RushT1==0&&T%speed==0) Print();
}
}
void Read(){
ifstream in("水果忍胎存档.in");int Xx=0,Yy;
for(int i=0;i<=21;i++) in>>Medal[i],Xx+=345*(2*i+1)*Medal[i];
in>>Yy>>Score>>Combo>>T>>FXia>>FUp;if(Yy!=Xx) Cheat=1;
in.close();
}
void Save(){
ofstream out("水果忍胎存档.in");int Xx=0;
for(int i=0;i<=21;i++) out<<Medal[i]<<' ',Xx+=345*(2*i+1)*Medal[i];
out<<Xx<<' '<<Score<<' '<<Combo<<' '<<T<<' '<<FXia<<' '<<FUp;
out.close();
}
void Medal_(){if(SS==1) return;
if(Cheat==1) Setpos(33,0),Color(4),printf("检测到您更改过存档,你的存档已不可用。"),memset(Medal,0,sizeof(Medal));
Setpos(33,1),Color(0),printf("[成就系统] (按 c 可以存档 d 读档)");int rr=0;
Setpos(34,3);if(Medal[3]==1) Color(5),rr++;else Color(7);printf("[出刀!] 完成一次切割");
Setpos(34,4);if(Medal[7]==1) Color(5),rr++;else Color(7);printf("[绝杀] 在底线处完成一次切割");
Setpos(34,5);if(Medal[4]==1) Color(5),rr++;else Color(7);printf("[全图鉴] 切割全部五种水果");
Setpos(34,6);if(Medal[5]==1) Color(5),rr++;else Color(7);printf("[闪光] 达到十五 COMBO");
Setpos(34,7);if(Medal[6]==1) Color(5),rr++;else Color(7);printf("[回眸] 精准达到 520 分");
Setpos(34,8);if(Medal[8]==1) Color(5),rr++;else Color(7);printf("[柴刀] 下劈劈裂水果三十次");
Setpos(34,9);if(Medal[9]==1) Color(5),rr++;else Color(7);printf("[连锁反应] 一次腾空中切割五个水果");
Setpos(34,10);if(Medal[10]==1) Color(5),rr++;else Color(7);printf("[霹雳] 五秒钟切割十个水果");
Setpos(34,11);if(Medal[11]==1) Color(5),rr++;else Color(7);printf("[征服者] 进行五分钟游戏");
Setpos(34,12);if(Medal[12]==1) Color(5),rr++;else Color(7);printf("[神来之笔] 一次腾空中切割十个水果");
Setpos(34,13);if(Medal[13]==1) Color(5),rr++;else Color(7);printf("[天封] 在最高线处完成一次切割");
Setpos(34,14);if(Medal[14]==1) Color(5),rr++;else Color(7);printf("[升龙] 上劈劈裂水果四十次");
Setpos(34,15);if(Medal[15]==1) Color(5),rr++;else Color(7);printf("[小忍者] 达到一千分");
Setpos(34,16);if(Medal[16]==1) Color(5),rr++;else Color(7);printf("[八连] 一次腾空中冲刺八次(有巧解)");
Setpos(34,17);if(Medal[17]==1) Color(5),rr++;else Color(7);printf("[连诀] 达到四十 COMBO");
Setpos(34,18);if(Medal[18]==1) Color(5),rr++;else Color(7);printf("[幸存者] 连续十次空刀(请勿点亮)");
Setpos(34,19);if(Medal[19]==1) Color(5),rr++;else Color(7);printf("[水果杀手] 达到一万分");
Setpos(34,20);if(Medal[20]==1) Color(5),rr++;else Color(7);printf("[虎翅] 腾空十秒");
Setpos(34,21);if(Medal[21]==1) Color(5),rr++;else Color(7);printf("[你疯了?!] 达到十万分");
Setpos(34,22);if(rr>=19) Medal[22]=1;if(Medal[22]==1) Color((T%4<=1)?-4:-5);else Color(7);printf("[传说] 达成全部成就");
}
int main(){
CONSOLE_CURSOR_INFO cursor_info={1,0};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
srand((unsigned)time(NULL));
Start();
ST:SS=0;
system("cls");memset(N,0,sizeof(N));memset(M,0,sizeof(M));FC=FCF=FCT=FO=FFFt=FXia=FUp=0;memset(FT,0,sizeof(FT));memset(Medal,0,sizeof(Medal));
Put_Frame();Medal_();
T=0;Clocknum=0;X=2;Y=1;Vx=Vy=0;Jump=1;Put_Man(X,Y);//初始状态掉落
memset(F,0,sizeof(F));l=m=0;Score=Combo=0;
Setpos(2,-3),Color(1),cout<<"本游戏为休闲模式,没有目标分数,请尽情享受切水果的酣爽盛宴!(空格可以暂停)";Medal_();
while(1) if(clock()-Clocknum>=25)
{T++;if(T>11000&&Medal[11]==0) Medal[11]=1,Medal_();
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(16,3),sy++,Color(0),system("pause");if(g=='c') Save(),system("color 6E"),Sleep(1000),system("color 0F");if(g=='d') Read(),system("color 6E"),Sleep(1000),system("color 0F"),Medal_();}
if(sy>=1) Setpos(16,3),cout<<" ",sy=0;
if(RushT1==0) Move(0);
Go();
if(RushT1==0&&T%speed==0) Print();
if(clock()-Clocknum>=25) continue;
if(T>=50&&T<=200&&T%15==5) CreatF();
if(T>=300&&T<2000&&T%80==5) CreatF();
else if(T>=2000&&T<3000&&T%70==5) CreatF();
else if(T>=3000&&T<4000&&T%50==5) CreatF();
else if(T>=4000&&T%30==5) CreatF();
if(T>=1500&&T%80==5) CreatF();
if(Combo>=10&&T%80==40) CreatF();
if((Combo<10&&T%140==0)||(Combo>=10&&Combo<20&&T%100==0)||(Combo>=20&&T%70==0)) Combo--;Combo=max(0,Combo);
if(Rush==1||AttTime>0||Attention==1) Color(5);else Color(1);Setpos(2,-2),printf("积分:%-4d ",Score);
if(Combo>=15) Color((T%4<=1)?-4:-5); printf(" 连击 %-3dCOMBO !! ",Combo);
if(Rush==1||AttTime>0||Attention==1) Color(5);else Color(1);printf(" 用时:%d ",T);Color(0);
}
return 0;
}
<2024> 胎神之路 win11 适配版
#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=20,Up=1,Down=28;
int Clocknum,T,gap,Life,Speed;float Score;
int up,dn,lf,rt,sy;float Vx,Vy;int Walk,Jump;
int Jumplock,Dnlock,Lflock,Rtlock;
const float G=0.038,t0=0.2,t00=0.8,t000=0.5;//时间参量
int N[100][45],M[100][45];
float Sin(int a) {return sin(3.1416*a/180);}float Cos(int a) {return cos(3.1416*a/180);}
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==-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){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("[]");}}
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 Color(-Abs(N[i][j])),Setpos(i,j),printf(" ");
}
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 Cir(int s,int c)
{ int x=X,y=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),Cir(s-2,0);
}
void Go(){
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=Up;
}
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==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)&&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)&&Walk==0){Vx*=0.8;Vy*=0.8;Y=To_int(Y);Jump=0;Walk=1;PrintFlag=1;}//触墙
// else if((((Lft==1||Lft==7)&&Vx<0)||((Rit==1||Rit==7)&&Vx<0))&&Walk==1) {Vx=0;X=To_int(X);PrintFlag=1;}//触墙
else if(Here==5&&((Vy>0&&Walk==0)||(Walk==1))){Vx*=0.8;Vy=-0.7;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.7;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),Sleep(90),Cir(2,-5),Sleep(100),Cir(3,-5),Sleep(110),Cir(4,-5),Sleep(150);Cir(2,0);Cir(3,0);Cir(4,0);
if(dx!=0||dy!=0) X=dx,Y=dy,Vy=-0.4,Vx=0;
else Life--,Vy=-0.6;
}
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(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(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(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;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.9;//摩擦
if(num==1&&up==1&&Jump==0&&Jumplock==0){
Vy=-0.6;Walk=0;Jump=1;Jumplock=1;
}
if(num==1&&up==1&&Jump==1&&Jumplock==0){
if(Vy>-0.2) Vy=-0.35;
if(Vy<=-0.2) Vy-=0.2;
Jump=2;Jumplock=1;//二段跳
}
if(num==1&&dn==1){
Vy+=0.1;
}
Vy+=G;
}
Vy=Min(0.5,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;
}
void Move(){//移动的状态调整,准备移步至Go函数
}
int RR;
void Creat(){
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++;
if(RR==4) {int r=rand()%2;if(r==0) RR=0;}
if(RR==5) {int r=rand()%4;if(r<=2) RR=0;}
if(RR==6) RR=0;
if(RR==0) {
int j=Up;
Ax: int Bx=0; for(int i=Left;i<=Right;i++) N[i][j]=N[i][j-1]=0;
for(int i=Left;i<=Right;i+=3){
int R1=rand()%3+2,R2=rand()%4+3,R3=3;
int R=rand()%70+1;
if(R<=10||R==25) {Bx++;int k=1,kk=R2;while(R2>0&&i<=Right) {N[i][j]=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; i++,k++,R2--;}}
if(R>21&&R<=24) {Bx++;int k=1,kk=R2;while(R2>0&&i<=Right) {N[i][j-1]=1;if(k==1||k==kk) N[i][j]=1;i++,k++,R2--;}}
if(R>10&&R<=13) {Bx++;while(R2>0&&i<=Right) N[i][j]=5,i++,R2--;}
if(R>13&&R<=16) {while(R1>0&&i<=Right) N[i][j]=4,i++,R1--;}
if(R>16&&R<=19) {Bx++;while(R1>0&&i<=Right) N[i][j]=8,i++,R1--;}
if(R>19&&R<=21) {Bx++;while(R3>0&&i<=Right) {N[i][j]=N[i][j+1]=1;if(R3==2) N[i][j-1]=3,N[i][j+1]=0;i++,R3--;}}
}
if(Bx==0) goto Ax;
}
else if(RR==2){
int j=Up;
for(int i=Left+1;i<=Right-1;i++){
int R=rand()%300+1;
if(R==1) N[i-1][j]=N[i+1][j]=N[i][j-1]=N[i][j+1]=N[i][j]=4,i+=3;
if(R==2) N[i-1][j]=N[i][j]=N[i][j+1]=N[i][j+2]=1,i+=3;
if(R==3) N[i+1][j]=N[i][j]=N[i][j+1]=N[i][j+2]=1,i+=3;
}
}
}
void Print(){
Color(1);Setpos(23,1),cout<<"分数:"<<max(0,(int)Score)<<" ",Setpos(23,3),cout<<"速度:"<<Speed<<" ",Setpos(23,5),cout<<"生命:"<<Life<<" ",Color(0);
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]==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 Color(-Abs(N[i][j])),Setpos(i,j),printf(" ");
}
M[i][j]=N[i][j];
}Color(0);
}
void Start(){
for(int j=1;j<=12;j++) Creat(),Print();
for(int i=Left;i<=Right;i++) N[i][14]=N[i][15]=1;Color(0);
Setpos(23,7),cout<<"规则:";
Setpos(23,8),cout<<"←→左右移动";
Setpos(23,9),cout<<"按↑跳跃,可二段跳";
Setpos(23,10),cout<<"空中可用←→控制方向";
Setpos(23,11),cout<<"空气阻力大,远距离大跳需要空中长按←→";
Setpos(23,12),cout<<"白的是正常块。黄的是弹跳块,可借助其三段跳" ;
Setpos(23,13),cout<<"看不见的是隐形块,撞到了可以加分,但要小心!" ;
Setpos(23,14),cout<<"紫色的是复活点,走到那里才能激活它" ;
Setpos(23,15),cout<<"激活复活点有5分加分,这很多" ;
Setpos(23,16),cout<<"红色的是炸弹,碰到会扣分,没复活点时会扣命" ;
Setpos(23,17),cout<<"掉出视线也会没命,一定要飞速向上跳!" ;
Setpos(23,18),cout<<"地图下移速度随时间增加" ;
Setpos(23,19),cout<<"1000分通关!!!" ;
Setpos(23,20),cout<<"程序保证每一行都有块生成" ;
Setpos(23,21),cout<<"如果你看不到哪有,就说明那一行有隐形块" ;
Setpos(23,22),cout<<"空格键可以暂停" ;
Setpos(23,23),cout<<"还有这是随机出的图哦~有时候要看运气" ;
Setpos(23,24),cout<<"死亡后分数并不会全部消失,可以放心玩耍,总会通关的!" ;
Setpos(23,26),cout<<"这是《胎神之路》的 win11 适配流畅版" ;
Setpos(23,27),cout<<"胎神大大还有很多创意准备升级这款游戏哦!敬请期待!" ;
}
void Return(){
system("color 1A");Sleep(10);
system("color 2B");Sleep(10);
system("color 3C");Sleep(10);
system("color 0F");system("cls");
}
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=5;
X=10;Y=12;X0=X,Y0=Y;Vx=Vy=0;Jump=1;//初始状态掉落
Start();
Put_Man(X,Y);
while((int)Score<=1000&&Life>0) 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(sy>=1) Setpos(2,3),cout<<" ",sy=0;
Move();
Go();
if(Score<=10) Speed=40;
else if(Score<=30) Speed=30;
else if(Score<=100) Speed=20;
else if(Score<=250) Speed=15;
else if(Score<=400) Speed=10;
else if(Score<=700) Speed=8;
else if(Score<=800) Speed=6;
else if(Score<=900) Speed=5;
else if(Score<=1000) Speed=4;
if(T%gap==0) Print();
if(T%Speed==0){Creat(),Clear(X0,Y0),Y++,X0=X,Y0=Y,Print(),Put_Man(X,Y);
if(Score<=100) Score+=1;
else if(Score<=250) Score+=0.8;
else if(Score<=800) Score+=0.5;
else if(Score<=900) Score+=0.4;
else if(Score<=1000) Score+=0.3;
}
}
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);
A:char e=_getch();if(e=='y') Return();else goto A;goto ST;
return 0;
}
<2024> 海岛奇胎 win11 适配版
#include<bits/stdc++.h>
#include<windows.h>
#include<stdio.h>
#include<conio.h>
#include<time.h>
using namespace std;
typedef BOOL (WINAPI *PROCSETCONSOLEFONT)(HANDLE, DWORD);
PROCSETCONSOLEFONT SetConsoleFont;
POINT Windowpos(){POINT pt;GetCursorPos(&pt);HWND h=GetForegroundWindow();ScreenToClient(h,&pt);pt.x=(pt.x+4)/10+0.5;pt.y=pt.y/8+0.5;swap(pt.x,pt.y);return pt;}
int mouse;POINT pt;float kx,ky;int ti(float a) {return ((int)(a*10+5))/10;}
void Setpos(float x,float y){COORD pos;pos.X=ti(y*4)/2;pos.Y=ti(x);SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}
//Setpos中,横5和竖5是一样的长度,在C,N中我们把y*2存入,/2输出 ,所以 支持4.5
struct node {float x,y,fx,fy;int kind,staytime,blood,CD,enemy,turn;bool life;} M[100001],E[100001];//Mytower Enemy Bullet
struct bullet {float x,y,vx,vy,h;int kind,staytime,enemy,endx,endy,up;bool life;} B[100001];
float Espeed[7]= {-1, 0.14*0.9, 0.2*0.9, 0.08*0.9, 0.3*0.9, 0.3*0.9, 0.1*0.9,};//敌人速度
float Bspeed[7]= {-1, 0.6, 0.6, 0.6, 1, 0.1, 0.6,};//打塔的子弹速度
float Bfspeed[7]= {-1, 0.45, 0.6, -1, 0.55, 1, 0.35,};//打敌的子弹速度
float MR[7]= {-1, 12*0.9, 10*0.9, 25*0.9, 10*0.9, 15*0.9, 20*0.9,};
float ER[7]= {-1, 6*0.9, 1.8*0.9, 8*0.9, 7*0.9, 1*0.9, 10*0.9,};
int MCDmax[7]= {10000, 10, 7, 60, 2, 90, 50};
int ECDmax[7]= {-1, 30, 10, 40, 25, 1, 40};
int Mblood[7]= {-1,200,150,300,250,400,300};
int Eblood[7]= {-1,50,100,30,100,10,200};
bool Zhan[50][50];
//Pk_Pb : personkill_or_placeboom
int m[51][101],n[51][101],o[51][101],T,CD,CDmax,Day,ml,mr,el,er,bl,br,money,Level=1,endless;
void Color(int a){
if(a==-2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN);
if(a==-1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(a==0) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(a==1) 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);
}
void C(int i,int j){Color(0);
Setpos(i,j/2.0);int N=n[i][j];if(N==-1) printf(" ");if(N>=0&&N<=9) printf("%d",N);
if(N==-2) printf("+");if(N==-3) Color(5),printf("+"),n[i][j]=-1,o[i][j]=4;if(N==-4) Color(3),printf("+"),n[i][j]=-1,o[i][j]=4;
//以下字符占2格
if(N==11) Color(1),printf("О ");if(N==13) Color(3),printf("◎ ");if(N==14) Color(4),printf("+ ");if(N==16) Color(5),printf("◎ ");
if(N==-11) Color(1),printf("⊙ ");if(N==-12) Color(2),printf("⊙ ");if(N==-13) Color(3),printf("⊙ ");if(N==-14) Color(4+rand()%2),printf("█ ");if(N==-15) Color(1),printf("● ");if(N==-16) Color(5),printf("¤ ");
if(N==49) Color(0),printf("营 ");if(N==50) Color(0),printf("墙 ");if(N==51) Color(1),printf("● ");if(N==52) Color(2),printf("■ ");if(N==53) Color(3),printf("▲ ");if(N==54) Color(4),printf("▼ ");if(N==55) Color(6),printf("◆ ");if(N==56) Color(5),printf("★ ");
if(N==81) Color(1),printf("○ ");if(N==82) Color(2),printf("□ ");if(N==83) Color(3),printf("△ ");if(N==84) Color(4),printf("▽ ");if(N==85) Color(6),printf("◇ ");if(N==86) Color(5),printf("☆ ");
if(N==1001) printf("╔");if(N==1003) printf("╗");if(N==1004) printf("╠");if(N==1005) printf("╣");if(N==1006) printf("╚");if(N==1007) printf("╩");if(N==1008) printf("╝");
if(N==1012) printf("↑ ");
}
void Map(int a){if(a==1){for(int i=1;i<=39;i++)for(int j=2;j<=99;j++){
if(n[i][j]!=m[i][j]||T%800==0){C(i,j);if(n[i][j]>=50||n[i][j]<=-10) n[i][j+1]=-1,j++;}
if(o[i][j]==1) C(i,j);if(o[i][j]>0) o[i][j]--;}
for(int i=1;i<=50;i++)for(int j=1;j<=100;j++){m[i][j]=n[i][j];}}
}
void N(float x,float y,int w){int xx=(int)(x+0.5),yy=(int)(y*2.0+0.5);if(xx>49||yy>98||xx<1||yy<1) return;else n[xx][yy]=w;}
int Turn[9][2]={{0,0},{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};
void Circle(int x,int y,int kind,int ex)
{int R;
if(kind==1){int k=M[ex].kind;R=MR[k];int next=20-0.5*R;
for(int i=0;i<=360;i+=next) N(x+R*sin(3.1416*i/180),y+R*cos(3.1416*i/180),-2);
if(k==3) for(int i=0;i<=360;i+=15) R=10,N(x+R*sin(3.1416*i/180),y+R*cos(3.1416*i/180),-2);
}
if(kind==-1){int k=M[ex].kind;R=MR[k];int next=20-0.5*R;
for(int i=0;i<=360;i+=next) N(x+R*sin(3.1416*i/180),y+R*cos(3.1416*i/180),-1);
if(k==3) for(int i=0;i<=360;i+=15) R=10,N(x+R*sin(3.1416*i/180),y+R*cos(3.1416*i/180),-1);
}
if(kind==2){R=ex;int next=20-0.5*R;
for(int i=0;i<=360;i+=next) N(x+R*sin(3.1416*i/180),y+R*cos(3.1416*i/180),-3);
}
if(kind==-2){R=ex;int next=20-0.5*R;
for(int i=0;i<=360;i+=next) N(x+R*sin(3.1416*i/180),y+R*cos(3.1416*i/180),-4);
}
}
void Cout(int a,int kind){
if(kind==1)//炮台
{
float x=M[a].x,y=M[a].y;
N(x,y,M[a].kind+50);
if(a==1) N(x,y,49);
int i=1;if(M[a].blood>=100) i=2;
for(i;i<=8;i++) N(x+Turn[i][0],y+Turn[i][1],1000+i),Zhan[(int)x+Turn[i][0]][(int)y+Turn[i][1]]=1;
int t=M[a].turn;
int b=max(0,M[a].blood),bb=0;while(b>0){bb++;N(x-1,y+1-0.5*bb,b%10);b/=10;}
}
if(kind==2)//人
{
float x=E[a].x,y=E[a].y;
N(x,y,E[a].kind+80);
N(x+1,y,1012);
Zhan[(int)x][(int)y]=Zhan[(int)x+1][(int)y]=1;
int b=max(0,E[a].blood),bb=0;while(b>0){bb++;N(x-1,y+1-0.5*bb,b%10);b/=10;}
}
if(kind==3)//对塔子弹
{
float x=B[a].x,y=B[a].y;
N(x,y,10+B[a].kind);
}
if(kind==4)//对人子弹
{
float x=B[a].x,y=B[a].y;
N(x-B[a].h,y,-10+B[a].kind);
}
}
int Find_enemy(int Who,int good_or_bad){
int ans=-1,r=rand()%2;float ansx=1e9,x;//搜敌人
if(good_or_bad>=1){float X=M[Who].x,Y=M[Who].y;
if(good_or_bad==2) X=E[Who].x,Y=E[Who].y;
for(int i=el;i<=er;i++){if(E[i].life==0) continue;x=sqrt((E[i].x-X)*(E[i].x-X)+(E[i].y-Y)*(E[i].y-Y));
if(good_or_bad==2&&E[i].kind==4) continue;
if(M[Who].kind==3&&x<10) continue;//迫击炮
if(M[Who].kind==6&&ans!=-1&&ansx>x) ansx=x;//火箭炮
if(ansx>x) ansx=x,ans=i;
if(ansx==x) {int r=rand()%2;if(r==1) ansx=x,ans=i;}}}
if(good_or_bad==0){float X=E[Who].x,Y=E[Who].y;for(int i=ml;i<=mr;i++) {if(M[i].life==0) continue;x=sqrt((M[i].x-X)*(M[i].x-X)+(M[i].y-Y)*(M[i].y-Y));if(ansx>x) ansx=x,ans=i;if(ansx==x) {int r=rand()%2;if(r==1) ansx=x,ans=i;}}}
return ans;
}
void Find_boomkill(int Who,float r,bool good_or_bad,int kill){
float x,X=B[Who].x,Y=B[Who].y;int kk=(float)kill/2.5;kill+=rand()%kk-kk/5;
if(good_or_bad==1){for(int i=el;i<=er;i++){if(E[i].life==0) continue;x=sqrt((E[i].x-X)*(E[i].x-X)+(E[i].y-Y)*(E[i].y-Y));if(r>=x) E[i].blood=min(E[i].blood-kill,Eblood[E[i].kind]+Day+50);}
}//搜敌人
else{for(int i=ml;i<=mr;i++){if(M[i].life==0) continue;x=sqrt((M[i].x-X)*(M[i].x-X)+(M[i].y-Y)*(M[i].y-Y));if(r>=x) M[i].blood-=kill;}
}//搜炮台
}
void Die(){
for(int i=ml;i<=mr;i++)if(M[i].blood<=0) {
M[i].life=0;if(i==ml) ml++;
}
for(int i=el;i<=er;i++)if(E[i].blood<=0) {
E[i].life=0;if(i==el) el++;
}
for(int i=bl;i<=br;i++){
if(B[i].x+B[i].vx<1||B[i].x+B[i].vx>49||B[i].y+B[i].vy<1||B[i].y+B[i].vy>98) {B[i].life=0;}
if(B[i].staytime>=100) B[i].life=0;
}
}
void Move(int a){
if(a==2)
{
for(int i=ml;i<=mr;i++){if(M[i].life==0) continue;Cout(i,1);}
for(int i=el;i<=er;i++){if(E[i].life==0) continue;Cout(i,2);}
return;
}
for(int i=ml;i<=mr;i++){
if(M[i].life==0) continue;
else{M[i].staytime++;int e=M[i].enemy;if(E[e].life==0) M[i].enemy=-1;
if(M[i].kind==5&&M[i].enemy==-1&&M[i].CD<=70&&T%2==0) M[i].CD++;
if(M[i].kind==0&&M[i].blood<500&&T%20==0) M[i].blood++;
if(M[i].enemy==-1||M[i].kind==4) M[i].enemy=Find_enemy(i,1);//喷火器
if(M[i].enemy!=-1)
{int k=M[i].enemy;
float X=M[i].x,Y=M[i].y,Ax=E[k].x-X,Ay=E[k].y-Y;if(Ay==0) Ay=1e-6;float Turnn=abs(Ax/Ay*1.0),Dis=sqrt((E[k].x-X)*(E[k].x-X)+(E[k].y-Y)*(E[k].y-Y));
if(Dis>MR[M[i].kind]){M[i].enemy=-1;}
else
{M[i].CD++;
if((M[i].kind!=6&&M[i].CD>=MCDmax[M[i].kind])||(M[i].kind==6&&M[i].CD<=21&&M[i].CD%4==0))//火箭炮
{
if(M[i].kind==6) M[i].enemy=Find_enemy(i,1);
if(Turnn>=sqrt(2)+1){if(Ay>0) M[i].turn=2;else M[i].turn=7;}
else if(Turnn>=1.0/(sqrt(2)+1)*1.0){if(Ax>0&&Ay>0) M[i].turn=1;else if(Ax<0&&Ay>0) M[i].turn=3;else if(Ax<0&&Ay<0) M[i].turn=8;else M[i].turn=6;}
else {if(Ax>0) M[i].turn=5;else M[i].turn=4;}
br++,B[br].x=X,B[br].y=Y;
B[br].kind=-M[i].kind;
B[br].life=1,B[br].enemy=M[i].enemy,B[br].endx=E[M[i].enemy].x,B[br].endy=E[M[i].enemy].y,B[br].staytime=0;
}
if(M[i].CD>=MCDmax[M[i].kind]) M[i].CD=0;
}
}Cout(i,1);}}
for(int i=el;i<=er;i++){
if(E[i].life==0) continue;
else{E[i].staytime++;E[i].CD++;
int e=E[i].enemy;if(M[e].life==0||(E[i].kind==4&&E[e].life==0)) E[i].enemy=-1;
if(E[i].enemy==-1) {E[i].enemy=Find_enemy(i,0);if(E[i].kind==4) E[i].enemy=Find_enemy(i,2);}
if(E[i].enemy!=-1){int k=E[i].enemy;int Mkx=M[k].x;int Mky=M[k].y;if(E[i].kind==4) Mkx=E[k].x,Mky=E[k].y;
float X=E[i].x,Y=E[i].y;float Dis=sqrt((Mkx-X)*(Mkx-X)+(Mky-Y)*(Mky-Y));
float Ax=Mkx-X,Ay=Mky-Y,S=Espeed[E[i].kind];if(Ay==0) Ay=1e-6;float Turnn=abs(Ax/Ay*1.0);
if(Dis>ER[E[i].kind]){float vx=Ax*S/Dis*1.0,vy=Ay*S/Dis*1.0;E[i].x+=vx,E[i].y+=vy;}
else{
if(E[i].CD>=ECDmax[E[i].kind]){
if(E[i].kind==5) E[i].blood=-1;//炮灰
if(E[i].kind==4){
br++,B[br].x=X,B[br].y=Y;
B[br].kind=4;
B[br].life=1,B[br].enemy=E[i].enemy,B[br].endx=E[E[i].enemy].x,B[br].endy=E[E[i].enemy].y,B[br].staytime=0;
}
else{
br++,B[br].x=X,B[br].y=Y;
B[br].kind=E[i].kind;
B[br].life=1,B[br].enemy=E[i].enemy,B[br].endx=M[E[i].enemy].x,B[br].endy=M[E[i].enemy].y,B[br].staytime=0;
}
E[i].CD=0;}}}Cout(i,2);
}}
for(int i=bl;i<=br;i++){
if(B[i].life==0) continue;
else if(B[i].kind>0)//对塔子弹 >0
{
B[i].staytime++;
int k=B[i].enemy;
int Mkl=M[k].life,Mkx=M[k].x,Mky=M[k].y;
if(B[i].kind==4) Mkl=B[k].life,Mkx=B[k].x,Mky=B[k].y;
if(k!=-1&&Mkl==1) B[i].endx=Mkx,B[i].endy=Mky;
float kx=B[i].endx,ky=B[i].endy,X=B[i].x,Y=B[i].y;float Ax=kx-X,Ay=ky-Y,S=Bspeed[B[i].kind];float Dis=sqrt(Ax*Ax+Ay*Ay);float vx=Ax*S/Dis*1.0,vy=Ay*S/Dis*1.0;
B[i].x+=vx,B[i].y+=vy;//别改,对的!
if(Dis<=S){//打中了,减血
B[i].x=B[i].endx,B[i].y=B[i].endy;
if(B[i].kind==1) Find_boomkill(i,1.5,0,20),Circle(B[i].endx,B[i].endy,-2,1);
if(B[i].kind==2) Find_boomkill(i,1.5,0,10),Circle(B[i].endx,B[i].endy,-2,1);
if(B[i].kind==3) Find_boomkill(i,3,0,20),Circle(B[i].endx,B[i].endy,-2,3);
if(B[i].kind==4) Find_boomkill(i,2,1,-5),Circle(B[i].endx,B[i].endy,-2,2);
if(B[i].kind==5) Find_boomkill(i,3,0,50),Circle(B[i].endx,B[i].endy,-2,3);//炮灰
if(B[i].kind==6) Find_boomkill(i,2,0,20),Circle(B[i].endx,B[i].endy,-2,2);
B[i].life=0;continue;
}
Cout(i,3);
}
else//对人子弹 <0
{
B[i].staytime++;
int k=B[i].enemy;if(k!=-1&&E[k].life==1) B[i].endx=E[k].x,B[i].endy=E[k].y;
float kx=B[i].endx,ky=B[i].endy,X=B[i].x,Y=B[i].y;float Ax=kx-X,Ay=ky-Y,S=Bfspeed[-B[i].kind];float Dis=sqrt(Ax*Ax+Ay*Ay);float vx=Ax*S/Dis*1.0,vy=Ay*S/Dis*1.0;
if(B[i].kind==-3){B[i].x+=1.0/(49.0-B[i].staytime)*Ax;B[i].y+=1.0/(49.0-B[i].staytime)*Ay;
if(T%2==0){
if(B[i].up==1){if(B[i].h<3) B[i].h++;else if(B[i].h<6) B[i].h+=0.5;else B[i].up++;}else if(B[i].up<=6) B[i].up++;else{if(B[i].h>3) B[i].h-=0.5;else B[i].h--;}}
}
else B[i].x+=vx,B[i].y+=vy;//抛物线
if(B[i].kind==-3&&B[i].staytime>=48) {B[i].x=B[i].endx,B[i].y=B[i].endy,Find_boomkill(i,5,1,30),Circle(B[i].endx,B[i].endy,2,4);B[i].life=0;continue;}
else if(B[i].kind!=-3&&Dis<=S)//打中了,减血
{
if(B[br].kind==-2) B[i].endx+=rand()%7-2,B[i].endy+=rand()%7-2,Find_boomkill(i,2,1,20);//重机枪
B[i].x=B[i].endx,B[i].y=B[i].endy;
if(B[i].kind==-1) Find_boomkill(i,2,1,20),Circle(B[i].endx,B[i].endy,2,2);
if(B[i].kind==-2) Find_boomkill(i,2,1,10),Circle(B[i].endx,B[i].endy,2,2);
if(B[i].kind==-4) Find_boomkill(i,2,1,5),Circle(B[i].endx,B[i].endy,2,2);
if(B[i].kind==-5) Find_boomkill(i,3,1,120),Circle(B[i].endx,B[i].endy,2,3);
if(B[i].kind==-6) Find_boomkill(i,3,1,35),Circle(B[i].endx,B[i].endy,2,3);
B[i].life=0;continue;
}
Cout(i,4);
}
}
Die();//开始处理 life=0,前面不要有 life=0
}
void StartWar(int D)
{
for(int i=-1;i<=(int)T/1000;i++){
int XY=rand()%4,Wx=rand()%38+1,Wy=rand()%48+2,x,y,k,R=rand()%100;
if(Level==2) XY=3;if(Level==3) XY=3*(rand()%2);
if(XY==0) x=2,y=Wy;if(XY==1) x=38,y=Wy;if(XY==2) x=Wx,y=1;if(XY==3) x=Wx,y=49;
k=rand()%6+1;
er++,E[er].x=x,E[er].y=y,E[er].kind=k,E[er].life=1,E[er].blood=Eblood[k]+Day;
}
}
void Start()
{Color(0);
Setpos(41,0),printf(" ┏━━━━━┓ ┏━━━━━┓ ┏━━━━━┓ ┏━━━━━┓ ┏━━━━━┓ ┏━━━━━┓");
Setpos(42,0),printf(" ┃$100 ┃ ┃$120 ┃ ┃$150 ┃ ┃$150 ┃ ┃$200 ┃ ┃$250 ┃");
Setpos(43,0),printf(" ┃ ● ┃ ┃ ■ ┃ ┃ ▲ ┃ ┃ ▼ ┃ ┃ ◆ ┃ ┃ ★ ┃");Setpos(43,30),printf("Money: %d ",money);
Setpos(44,0),printf(" ┗━━━━━┛ ┗━━━━━┛ ┗━━━━━┛ ┗━━━━━┛ ┗━━━━━┛ ┗━━━━━┛");Setpos(43,40),printf("Day: %d ",Day);
}
void Put_Frame(){int x=39,y=49;Color(-1);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("[]");}}
void Click()
{
int What;
pt=Windowpos();int Ww=(int)((pt.y)/2+1);
if((int)((pt.x-2)/2.2-3)<40||Ww>28) return;
else if(Ww<=6) What=1;else if(Ww<=10) What=2;else if(Ww<=15) What=3;else if(Ww<=19) What=4;else if(Ww<=23) What=5;else if(Ww<=28) What=6;
if(What==1) if(money>=100) money-=100;else return;
if(What==2) if(money>=120) money-=120;else return;
if(What==3) if(money>=150) money-=150;else return;
if(What==4) if(money>=150) money-=150;else return;
if(What==5) if(money>=200) money-=200;else return;
if(What==6) if(money>=250) money-=250;else return;
Color(0),Setpos(43,30);printf("Money: %d ",money);
mr++;M[mr].x=25;M[mr].kind=What;M[mr].blood=Mblood[What];M[mr].life=1;M[mr].CD=MCDmax[What]-1;
while(mouse)
{
mouse=GetAsyncKeyState(VK_LBUTTON)&0x8000;
pt=Windowpos();
M[mr].x=min(38,max(2,(int)((pt.x-2)/2.2-3))),M[mr].y=min(48,max(2,(int)((pt.y-1)/2-1)));
Circle(M[mr].x,M[mr].y,1,mr);
Move(2);Map(1);Sleep(30);
for(int i=0;i<=8;i++) N(M[mr].x+Turn[i][0],M[mr].y+Turn[i][1],-1),N(M[mr].x+Turn[i][0],M[mr].y+Turn[i][1]+0.5,-1);
Circle(M[mr].x,M[mr].y,-1,mr);
}
system("cls");memset(n,-1,sizeof(n));memset(m,-1,sizeof(m));Start();Put_Frame();
}
void Menu()
{Color(0);
Setpos(5,7);cout<<"欢迎来到 海岛奇胎 !";Setpos(5,20);Color(-2);cout<<"【win11升级适配版】";Color(0);
Setpos(7,12);cout<<"作者:胎神大大";Setpos(7,24);Color(-2);cout<<"【 记住开全屏! 】";Color(0);
Setpos(8,12);cout<<"别名:城市守卫战 3.0";Setpos(8,24);Color(-2);cout<<"【 全屏!全屏!全屏! 】";Color(0);
Setpos(10,2);cout<<"规则:通过 鼠标 拖拽 下方的图标来安放炮塔,坚持100天通关!";
Setpos(12,2);cout<<"炮塔的设定: 加农炮物美价廉,重机枪可打溅射,迫击炮范围巨大,喷火器离近必死,电磁炮一发入魂,火箭炮因为大家太喜欢所以说削了(bushi)"; Setpos(9,24);Color(-2);cout<<"【 现在就开!NOW!! 】";Color(0); Setpos(16,26);Color(-2);cout<<"【全屏游戏】";Color(0);
Setpos(14,2);cout<<"敌人的设定: 步兵小菜一碟,骑兵骑脸输出,炮兵速慢手长,药兵无限加血,炮灰贴脸自爆,坦克(这个逼)难以评价"; Setpos(9,24);Color(-2);cout<<"【 现在就开!NOW!! 】";Color(0);
Setpos(16,5);cout<<"请选择地图:";Setpos(17,7);cout<<"1.围城 (孤城争雄!!)";Setpos(18,7);cout<<"2.长城 (南蛮入侵!!)";Setpos(19,7);cout<<"3.王者 (你猜猜为什么叫这个名字)";Setpos(20,7);cout<<"4.放射 (不知道为什么特别难?)";Setpos(21,7);cout<<"5.真空 (你打不过的,相信我)";Setpos(23,7);cout<<"输入负数则开启无尽模式";Setpos(24,9);cout<<"例:-1:无尽围城";
endless=0;A:char a=_getch();if(a=='-') {endless=1;goto A;}else if(a<'1'||a>'5') goto A;else Level=a-'0';system("cls");
}int Clocknum;
int main(){
CONSOLE_CURSOR_INFO cursor_info={1,0};SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);srand((unsigned)time(NULL));
St:Menu();Start();Put_Frame();
memset(n,-1,sizeof(n));memset(m,-1,sizeof(m));memset(M,0,sizeof(M));memset(E,0,sizeof(E));memset(B,0,sizeof(B));
T=ml=mr=el=er=bl=br=0;CDmax=160;Day=1;
money=1000;if(Level==5) money=1500;
mr++,M[mr].x=20,M[mr].y=25,M[mr].kind=0,M[mr].life=1,M[mr].blood=2000;
if(Level==2) M[mr].y=5;
if(Level==3) M[mr].x=38,M[mr].y=2;
if(Level==1) for(int i=0;i<=360;i+=30) mr++,M[mr].x=20+9*sin(3.1416*i/180),M[mr].y=25+9*cos(3.1416*i/180),M[mr].kind=0,M[mr].life=1,M[mr].blood=500;
if(Level==2) for(int i=5;i<40;i+=6) mr++,M[mr].x=i,M[mr].y=19,M[mr].kind=0,M[mr].life=1,M[mr].blood=500,mr++,M[mr].x=i,M[mr].y=13,M[mr].kind=0,M[mr].life=1,M[mr].blood=500;
if(Level==3) for(int i=-90;i<=0;i+=45) mr++,M[mr].x=38+8*sin(3.1416*i/180),M[mr].y=2+8*cos(3.1416*i/180),M[mr].kind=0,M[mr].life=1,M[mr].blood=500,mr++,M[mr].x=38+15*sin(3.1416*i/180),M[mr].y=2+15*cos(3.1416*i/180),M[mr].kind=0,M[mr].life=1,M[mr].blood=500,mr++,M[mr].x=38+25*sin(3.1416*i/180),M[mr].y=2+25*cos(3.1416*i/180),M[mr].kind=0,M[mr].life=1,M[mr].blood=500;
if(Level==4) for(int i=30;i<=390;i+=60) mr++,M[mr].x=20+6*sin(3.1416*i/180),M[mr].y=25+6*cos(3.1416*i/180),M[mr].kind=0,M[mr].life=1,M[mr].blood=500,mr++,M[mr].x=20+11*sin(3.1416*i/180),M[mr].y=25+11*cos(3.1416*i/180),M[mr].kind=0,M[mr].life=1,M[mr].blood=500;
while(M[1].life==1) if(clock()-Clocknum>=30)
{
T++;Clocknum=clock();
memset(n,-1,sizeof(n));//这里默认全输空格 //鼠标,键盘,暂停操作
mouse=GetAsyncKeyState(VK_LBUTTON)&0x8000;
pt=Windowpos();N((pt.x-2)/2.2-3,(pt.y)/2+1,-2);
if(mouse) Click();
if(Day>=100&&endless==0) break;
CD--;if(CD<=0){CD=CDmax;StartWar(Day);Day++;Setpos(43,40),printf("Day: %d ",Day);}
if(T%50==0) {money=min(money+10,2000);if(money<100) money=min(money+5,2000);if(Day>60) money=min(money+10,2000);if(Day>85) money=min(money+5,2000);
Setpos(43,30),printf("Money: %d ",money);
}
Move(1);Map(1);
}
if(Day>=100) {system("color 6E"),Sleep(1000);for(int i=1;i<=1000;i++) cout<<"YOU WIN !! ";system("pause");system("color 0F");}
else {system("color 7F"),Sleep(1000);for(int i=1;i<=1000;i++) cout<<"GAME OVER... ";system("pause");system("color 0F");}
system("cls");
goto St;
return 0;
}
<2021> 小胎弹弹乐
#include<bits/stdc++.h>
#include<windows.h>
#include<stdio.h>
#include<conio.h>
#include<time.h>
using namespace std;
const double pi=3.1415926536;
int toint(float a){return ((int)(a*10+5))/10;}
void Color(int a){if(a==0) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);if(a==1) 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_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);}
//0123456
void Setpos(float x,float y){int xx=toint(x),yy=toint(y);COORD pos;pos.X=xx*2,pos.Y=yy;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}
int T,Sco,sco,color,col,colortime,colormax,speed,board,Blen,Rcolor,board2;
float X,Y,vx,vy,ax,ay,g=0.12;
int turn,bluetime=3;float bluea=0.5,bluepause=0.7,greenpause=0.9,purpleS=5,blackF=2,WD,WDmax=10;
int D[2][4]={{1,-1,0,0},{0,0,1,-1}};
struct node{int t,c,die,turn;}C[100001];int cl,cr;
void Go(float t)//使用正坐标轴 边界:0-20
{
float x2=X,y2=Y;int out;bool vxe=0,vye=0;
ax=0,ay=g;
if(color==1) {ax=bluea*D[0][turn],ay=bluea*D[1][turn];if(D[0][turn]!=0) vy*=bluepause;else vx*=bluepause;}
if(color==2) vx*=greenpause,vy*=greenpause;
if(color==6) {float Ax=10-X,Ay=10-Y,Dis=sqrt(Ax*Ax+Ay*Ay)*1.0;
if(Dis>1&&abs(Ax)>1&&abs(Ay)>1) {float ac=blackF/(Dis*Dis)*1.0,afx,afy;float d=abs(Ax/Ay*1.0)+1;
afy=sqrt(ac/(1+d*d))*1.0,afx=sqrt(ac/(1+d*d))*d*1.0;if(Ax>0) afx*=-1;if(Ay>0) afy*=-1;vx-=afx;vy-=afy;}}
if(vx<0) vxe=1,vx*=-1;if(vy<0) vye=1,vy*=-1;
vx=fmin(2.0,fmax(0.1,vx)),vy=fmin(2.0,fmax(0.1,vy));
if(vx<=0.2&&vy<=0.2&&color==2) color=4;
if(vxe==1) vx*=-1;if(vye==1) vy*=-1;
if(color==1) x2+=vx*t,y2+=vy*t;
else if(color==2||color==5||color==6) ax=ay=0,x2+=vx*t,y2+=vy*t;
else x2+=vx*t,y2+=vy*t+0.5*g*t*t;
if(y2<0||y2>20){X=fmax(0.4,fmin(19.5,x2));Y=fmax(0.4,fmin(19.5,y2));
if(color==1&&turn>=2&&colortime==0) colortime=bluetime;
else if(color==1&&turn>=2&&colortime!=0) color=4;
if(color==2) color=4;
if(color==6) vy=0;else vy*=-1;
if(Y>=19.5){board2=5;
if((board-0.4>X||board+Blen+0.4<X)&&WD==0) system("Color C"),Sleep(500),system("Color F"),Sco-=5,WD=WDmax;
else if(color!=6){Sco++;vx=(float)(rand()%50)/20.0-1.25;vy*=0.9+(rand()%40)/200.0;}
if(abs(vx)>=2) vx*=0.9;if(abs(vy)<=1.7) vy*=1.2;if(abs(vy)>=2.2) vy*=0.9;if(abs(vy)<=1||color==6) vy=-1;
}return;}
else if(x2<0||x2>20){X=fmax(0.4,fmin(19.5,x2));Y=fmax(0.4,fmin(19.5,y2));
if(color==1&&turn<2&&colortime==0) colortime=bluetime;
else if(color==1&&turn<2&&colortime!=0) color=4;
if(color==2) color=4;
if(color==6) vx=0;else vx*=-1;if(abs(vx)>=2) vx*=0.85;return;}
else X=x2,Y=y2,vx+=ax*t,vy+=ay*t;
}
void Board(int a){//1:动弹板
Setpos(board,20);Color(0);
for(int i=1;i<=Blen;i++) {if(a==0) cout<<" ";if(a==1) cout<<"●";}
}
void Line(int c,int t,int tur,int a){Color(c);
if(tur==0) for(int i=1;i<=19;i+=2) {Setpos(20-t*2,i);if(a==0) cout<<' ';else if(c==1) cout<<'@';else cout<<'#';}
if(tur==1) for(int i=1;i<=19;i+=2) {Setpos(t*2,i);if(a==0) cout<<' ';else if(c==1) cout<<'@';else cout<<'#';}
if(tur==2) for(int i=1;i<=19;i+=2) {Setpos(i,20-t*2);if(a==0) cout<<' ';else if(c==1) cout<<'@';else cout<<'#';}
if(tur==3) for(int i=1;i<=19;i+=2) {Setpos(i,t*2);if(a==0) cout<<' ';else if(c==1) cout<<'@';else cout<<'#';}
}
float Sin(int a) {return sin(3.1416*a/180);}float Cos(int a) {return cos(3.1416*a/180);}
void Circle(int c,int t,int a){
int rx=10,ry=10,r=t,num=10,next=360/num,start=t*7;
for(register int i=0;i<num;i++){
Setpos(rx+Sin(i*next+start)*r,ry+Cos(i*next+start)*r);
Color(c);if(a==0) cout<<' ';else if(c==0) cout<<'&';else if(c==2) cout<<'*';else if(c==4) cout<<'$';else if(c==5) cout<<'%';else cout<<'X';}
}
void ChangeColor(int c)
{color=c;colortime=0;
if(color==3) Setpos(X,Y),cout<<" ",X+=D[0][turn]*purpleS,Y+=D[1][turn]*purpleS,X=fmax(0.5,fmin(19.5,X)),Y=fmax(0.5,fmin(19.5,Y)),colortime=5;
else if(color==5) {int exspeed=1.5;vx*=exspeed;vy*=exspeed;colormax=colortime=10+rand()%50;}
else if(color==6) colormax=colortime=10+rand()%30;
else if(color==0) vy=-1.5,vx*=0.8,colortime=5;
}
void Remind(int n,int c,int t,int tur){
if(c==1||c==3) {if(t!=10) Line(c,t+1,tur,0);if(t!=0) Line(c,t,tur,1);}
else {if(t!=10) Circle(c,t+1,0);if(t!=0) Circle(c,t,1);}
if(t==0) turn=tur,ChangeColor(c),C[n].die=1;
}
void Start()
{
char g;Color(5);system("cls");
Setpos(1,1);cout<<" ---●-- 小胎弹弹乐 --●---";Color(0);
Setpos(1,3);cout<<" -- 一个看似简单但你却无法通关的游戏...";
Setpos(1,4);cout<<" ---------- 作者:胎神大大 ---------";
Setpos(1,5);cout<<"游戏规则:";
Setpos(1,7);cout<<"1.相信大家都玩过弹弹乐吧!";
Setpos(1,8);Color(5),cout<<" ←→键控制跳板接住球即可得分!";Color(0);
Setpos(1,9);cout<<"2.但是在这个游戏,会出现 不同颜色 的魔法攻击来 扰乱 球的轨道!";
Setpos(1,11);cout<<"3. ";Color(4),cout<<"普通颜色:红";
Setpos(3,12);Color(1),cout<<"蓝色攻击:重力";Color(5),cout<<" 黄色攻击:匀速";
Setpos(3,13);Color(2),cout<<"绿色攻击:束缚";Color(3),cout<<" 紫色攻击:瞬移";
Setpos(3,14);Color(0),cout<<"白色攻击:上推";Color(6),cout<<" 黑色攻击:引力";
Setpos(1,15);Color(0),cout<<" ( 记法:愤怒的小鸟 + 传说之下 )";
Setpos(1,16);cout<<"4.按下 空格 可以暂停";
Setpos(1,17);cout<<"5.板长与变色概率随分数改变!";Color(5),cout<<"100分通关!";Color(0);
Setpos(1,19);cout<<" 开始游戏:";system("pause");
}
int main()
{
system("mode con cols=43 lines=21");
CONSOLE_CURSOR_INFO cursor_info={1,0};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
srand((unsigned)time(NULL));St:Start();system("cls");
X=2,Y=5,vx=0.2,vy=0,color=4,speed=50,Sco=0,board=5,Blen=7,cl=1,cr=0;
Color(0);Board(1);
while(1)
{
T++;
if(Sco>=100) break;Sco=max(0,Sco);
if(Sco!=sco||T%100==1){if(T%200==1||Sco<sco) system("cls"),Board(1);
Color(0),Setpos(1,1),cout<<"分数:"<<Sco<<' ';sco=Sco;
Rcolor=(int)(90-0.6*Sco);
int blen=(int)(7-(Sco+20)/30);if(Blen<blen&&board>=21-Blen) Board(0),board--;if(Blen!=blen) Board(0),Blen=blen,Board(1);
}
if(GetAsyncKeyState(VK_LEFT)&0x8000&&board>0) Board(0),board--,Board(1);
if(GetAsyncKeyState(VK_RIGHT)&0x8000&&board<21-Blen) Board(0),board++,Board(1);
if(kbhit()){char c=_getch();if(c==' ') Color(0),Setpos(1,2),system("pause"),Setpos(1,2),cout<<" ";}
if(colortime==1) color=4;
if(colortime>0) {Setpos(1,2),colortime--;if(color==5||color==6){for(int i=1;i<=colortime-1;i+=colormax/9) Color(color),cout<<"▂";cout<<" ";}}
if(WD>0) WD--;
if(rand()%Rcolor==0) {cr++;CC:C[cr].c=rand()%7;
if(C[cr].c==4) goto CC;C[cr].t=10;C[cr].die=0;C[cr].turn=rand()%4;}
while(C[cl].die==1) cl++;if(cr<cl) cr=0,cl=1,memset(C,0,sizeof(C));
for(int i=cl;i<=cr;i++) {Remind(i,C[i].c,C[i].t,C[i].turn);C[i].t--;}
Setpos(X,Y);cout<<" ";
Go(1);
if(board2>0) Board(1),board2--;
if(color!=col) Setpos(1,2),cout<<" ";
if(color==6) Color(color),Setpos(10,10),cout<<"○";
else if(col==6) Setpos(10,10),cout<<" ";col=color;
Color(color),Setpos(X,Y);cout<<"●";
Sleep(speed);
}
if(Sco<100) {Setpos(6,9);system("color 7F");Color(11);cout<<" GAME OVER...";}
else {Setpos(6,9);system("color 6E");Color(5);cout<<"LEVEL VICTORY !";}
Setpos(4,11);Sleep(1000);cout<<"play again? (y/n)";Sleep(1000);char g;
A:if(kbhit()) g=_getch();if(g=='n') return 0;else if(g!='y') goto A;else if(g=='y') goto St;
}
<2021> 丧尸危机
#include<bits/stdc++.h>
#include<windows.h>
#include<time.h>
#include<conio.h>
using namespace std;
int mzhg,zd,swhm,qxs,swx,sn,mp,tongguan,sw1,zd1,sn1,mz1,mp1,zbbj,ccg,mzzd,mz,tongguan1,sw,x,s,cdd,jg,qiang,gun,by,vv,gjj[100],hjj[100],zjj[100];
void Read()
{
ifstream in("丧尸危机存档.in");
in>>mzhg>>zd>>swhm>>qxs>>swx>>sn>>mp>>tongguan>>sw1>>zd1>>sn1>>mz1>>mp1>>zbbj>>ccg>>mzzd>>mz>>tongguan1>>sw>>x>>s>>cdd>>jg>>qiang>>gun>>by>>vv;
for(int i=0;i<=99;i++) in>>gjj[i];
for(int i=0;i<=99;i++) in>>hjj[i];
for(int i=0;i<=99;i++) in>>zjj[i];
in.close();
}
void Save()
{
ofstream out("丧尸危机存档.in");
out<<mzhg<<' '<<zd<<' '<<swhm<<' '<<qxs <<' '<<swx<<' '<<sn<<' '<<mp<<' '<<tongguan<<' '<<sw1<<' '<<zd1<<' '<<sn1<<' '<<mz1<<' '<<mp1<<' '<<zbbj<<' '<<ccg<<' '<<mzzd<<' '<<mz<<' '<<tongguan1<<' '<<sw<<' '<<x<<' '<<s<<' '<<cdd<<' '<<jg<<' '<<qiang<<' '<<gun<<' '<<by<<' '<<vv<<'\n';
for(int i=0;i<=99;i++) out<<' '<<gjj[i];out<<'\n';
for(int i=0;i<=99;i++) out<<' '<<hjj[i];out<<'\n';
for(int i=0;i<=99;i++) out<<' '<<zjj[i];out<<'\n';
out.close();
}
void Slowsay(string a) {int l=a.size();for(int i=0;i<l;i++){cout<<a[i];if(vv==0) Sleep(20);}printf("\n");if(vv==1) Sleep(100);}
int read()
{
char ch=_getch();
while(ch>'9'||ch<'0') ch=_getch();
return ch-48;
}
void qp()
{
system("cls");if(swx==2) Slowsay("王,"),zd=99999,sw=99999;
Slowsay("当前你的状态是\n");
printf("子弹 %d,食物 %d\n",zd,sw);
}
int esl()
{
system("cls");
char ch;
Slowsay("你,饿死了。\n");
if(vv==0) ch=_getch();
hjj[1]=1;
Slowsay("Bad End 1\n");
ch=_getch();
s++;
return 0;
}
int mzd()
{
hjj[2]=1;
system("cls");
char ch;
Slowsay("你,被丧尸咬死了。\n");
if(vv==0) ch=_getch();
Slowsay("Bad End 2\n");
ch=_getch();
s++;
return 0;
}
int hd1()
{
system("cls");
Slowsay("在某一天,你家门口响起了敲门声,你打开门,外面的发现让你欣喜若狂\n");
Slowsay("政府的救援部队已经消灭了这个城市的丧尸,\n他们在这个城市的各个角落搜索着可能存在的幸存者.\n");
Slowsay("Happy End-----苟到最后\n");Sleep(1000);gjj[1]=1;
return 0;
}
int hd2()
{
system("cls");
int sw;
char ch;
Slowsay("在与妹子相处的这些时间里,你与她相爱了\n");
Slowsay("你们的生活是那样的幸福\n");
Slowsay("直到有一天......\n");
Slowsay("基地首领希望你去执行一个任务,你选择\n");
Slowsay("1.独自一人前往\n");
Slowsay("2.和妹子一起去\n");
while(true)
{
int x;
x=read();
if(x<1||x>2)
{
Slowsay("请重新输入\n");
continue;
}
if(x==1)
{
Slowsay("当你完成任务回来的时候,发现——\n");
Slowsay("基地被丧尸攻破了\n");
Slowsay("这个基地的所有人都被丧尸杀了,一个人都没跑出来\n");
hjj[4]=1;
Slowsay("Bad End 4");
s++;
}
if(x==2)
{
Slowsay("当你和妹子完成任务回来时,\n");
Slowsay("基地已经变成一片废墟了\n");
Slowsay("你和妹子没有办法,只能到处流浪\n");
Slowsay("不过,两个人总比一个人要好\n");
gjj[2]=1;
Slowsay("Happy End------神仙眷侣");
}
break;
} Sleep(1000);
return 0;
}
int hd3()
{
system("cls");
char ch;
Slowsay("你就这样平静的生活在这个基地里\n");
Slowsay("直到某一天,大量的丧尸进攻了这里\n");
if(zd>9)
{
Slowsay("每个人都在尽自己的努力去守卫基地\n");
Slowsay("每个人都做到了自己能做到的\n");
Slowsay("最后,奇迹出现了\n");
Slowsay("大家成功守住了基地\n");
Slowsay("而你,也因为在守卫过程中立下大功成为了这个基地的英雄\n");
Slowsay("顺便说一句,到死了你也没女朋友\n");
gjj[3]=1;
Slowsay("Happy End-----英雄不朽");
return 0;
}
Slowsay("丧尸的数量实在太多了,\n");
Slowsay("尽管基地的大家都在尽全力防守\n");
Slowsay("可基地还是被攻破了\n");
Slowsay("而你,也死在了这里\n");
s++;
hjj[5]=1;
Slowsay("Bad End 5"); Sleep(1000);
}
int hd4()
{
system("cls");
Slowsay("在于少年相处的这些时间里");
Slowsay("你尽力地保护着他");
Slowsay("而他也常常给你带来惊喜");
Slowsay("慢慢的,你开始认清你自己");
Slowsay("你是个gay");
Slowsay("于是,你就和少年性福快乐的生活在了一起");
Slowsay("Happy End-----认清自己");
gjj[4]=1; Sleep(1000);
}
int td()
{
system("cls");
char ch;
Slowsay("那箱饼干与你的枪一起发出了强光\n");
Slowsay("紧接着,他们融为了一体\n");
Slowsay("当光芒散去时,整个世界都发生了变化\n");
Slowsay("所有的丧尸都变回了人类\n");
Slowsay("伟大的勇士!丧尸危机终于解除了!!接下来,是普天同庆的大狂欢!!!\n");
Slowsay("True End-----拯救世界\n");Sleep(1000);
Slowsay("???????????????????????????????????");
Slowsay("......这是怎么回事......");
Slowsay("......为什么......");
Slowsay("......不是普通的......");
Slowsay("......从何而来......");Sleep(1000);
Slowsay("。 。 。 。 。 。是谁。 。 。 。 。 。");
Slowsay("你陷入沉思。");
if(zjj[1]!=1)
{
Slowsay("获得线索-----奇特的枪与饼干");
}
zjj[1]=1; Sleep(1000);
}
int td2()
{
system("cls");
char ch;
Slowsay("你的变异已经开始了");
Slowsay("你开始疯狂的进食,直到把自己的胃撑破");
Slowsay("然后,就眼前一黑失去意识");
Slowsay("再次醒来时,你已经是一个丧尸了");
Slowsay("奇怪的是,你还保留着自己的意识");
Slowsay("你感觉到自己的力气变得更大,速度变得更快");
Slowsay("或许变成丧尸也不错————你这样想着");
Slowsay("True End-----认清!·本我");
if(zjj[2]!=1)
{
Sleep(2000);
Slowsay("获得线索-----延迟变异!·少年");
}
zjj[2]=1; Sleep(1000);
}
int bd8()
{
Slowsay("坐在椅子上的是一个15岁左右的少年");
Slowsay("正在你因为他的年龄而惊讶时");
Slowsay("少年却站了起来,看向了你身后的妹子");
Slowsay("“差不多了吧”,妹子这样说道");
Slowsay("“可以了”,这是少年的回答");
Slowsay("然后,你就感到脖子一阵剧痛");Sleep(1000);
Slowsay("在你失去意识前,妹子一直没有松口。");
s++;
Slowsay("Bad End 8");
if(hjj[8]==0)
{
Sleep(2000);
Slowsay("获得线索-----早已变异!·妹子");
}
hjj[8]=1; Sleep(1000);
}
int td3()
{
system("cls");
Slowsay("你和妹子冲出了丧尸的围杀,");
Slowsay("可是当你们来到那个幸存者基地时");
Slowsay("却发现那个基地有一些不对");
Slowsay("所有人都死气沉沉的");
Slowsay("你们直接走向了首领的房间");Sleep(1000);
if(zjj[2]==1&&zjj[3]==1)
{
bd8();
return 0;
}
Slowsay("换完子弹的你想离开");
Slowsay("就在你快要离开的时候,妹子抓住了你的手");
Slowsay("“我喜欢你,别走”,她这样说");
Slowsay("于是,你留了下来");
Slowsay("你们的生活是那样的幸福");
Slowsay("直到有一天......");Sleep(1000);
Slowsay("基地首领希望你去执行一个任务,\n");
Slowsay("在执行任务的过程中");
Slowsay("妹子曾被丧尸咬到过一口");
Slowsay("她以为你没有发现");
Slowsay("而你却在远处看到了这一幕");
Slowsay("奇怪的是,她却并没有变异\n");
Slowsay("那一刹那你突然想起,");
Slowsay("你们的房间里,总是弥漫着一股血腥的味道......");Sleep(1000);
Slowsay("Happy End------神仙眷侣");Sleep(1000);
Slowsay("???????????????????????????????????");
Slowsay("True End------认清?·妹子");
if(zjj[3]==0)
{
Sleep(2000);
Slowsay("获得线索-----不变异?·妹子");
}
zjj[3]=1;Sleep(1000);
}
int td4()
{
system("cls");
Slowsay("当丧尸危机爆发时,你正呆在家里\n");
char ch=_getch();
if(vv==0) ch=_getch();
system("cls");
Slowsay("当丧*#******丧尸危机*$*&*^&*机爆发时,**你正呆***&*爆发******#在家里**\n");Sleep(1000);
Slowsay("***检*#******测到*不**丧尸危**88机*$匹*$**机爆发时,**配***#在家里****\n");Sleep(2000);
Slowsay("L当****#OG****I危机*$N**E机爆***(RR*8%#404)**发时,**你O*****#在家R里!\n");Sleep(2000);
system("cls");
if(vv==0) ch=_getch();
Slowsay("有什么不对劲");
Slowsay("你这样想着");
Slowsay("过去了好多天,\n你还是一个人都没有遇到,\n除了丧尸就是丧尸");
Slowsay("为什么他们......不见了?");
Slowsay("\n");
Slowsay("True End------验证失败");
zjj[4]=1;
if(zbbj==0)
Slowsay("进阶线索-----乱码,废弃与失联"),zbbj=1;Sleep(1000);
}
int td5()
{
system("cls");
Slowsay("当少年死去后,整个世界好像变得不同了");
Slowsay("所有的活人在一瞬间消失");
Slowsay("所有的丧尸当场去世");
Slowsay("你的眼前只剩下了黑暗");
Slowsay("不知道过去了多久,你死了");
Slowsay("Bad End......");Sleep(1000);
Slowsay("不,还没有结束");
Slowsay("虽然好像和往常死去之后的感觉一样");
Slowsay("但是。。。好像。。。");Sleep(1000);
Slowsay("有延迟?。。。");
Slowsay("。。。在这段时间里,你的思考一直没停。。。");
Slowsay("True End-----死亡姗姗来迟");
s++;
if(zjj[5]==0)
Slowsay("进阶线索-----少年之死");
zjj[5]=1; Sleep(1000);
}
int tg3()
{
Slowsay("当你再次睁开眼时");
Slowsay("你发现自己躺在一个营养仓内");
Slowsay("你无比的确认这就是真实的世界");
Slowsay("脑中的一切开始明晰起来");
Slowsay("你认为自己知道了一切的真相");
Slowsay("去杀光人类吧!!!!");
Slowsay("你这样想着");
Slowsay("在身着白大褂的丧尸们的欢呼声中");
Slowsay("你打碎了玻璃,跑出了营养仓");
Slowsay("来到了外面这个被战争破坏得满目疮痍的世界");
Slowsay("战火硝烟,炮声隆隆");
Slowsay("你熟练的发出嘶吼,呼唤着周围的丧尸");
Slowsay("你指挥着他们,毁掉了一个又一个人类的基地");
Slowsay("最后,在这场世纪战争中,丧尸们艰难地取得了胜利");
Slowsay("作为它们的英雄,你自豪的统治着世界。");
Slowsay("虽然,其实,在那些你不知道的地方");
Slowsay("一个个一样的营养仓中,装着一个个一样的你。");
Slowsay("---------------游戏终极剧情通关-------------");
tongguan1=2; Save(); Sleep(1000);
}
int tg2()
{
Slowsay("当你再次睁开眼时");
Slowsay("你发现自己躺在一个营养仓内");
Slowsay("你无比的确认这就是真实的世界");
Slowsay("可是你却发现自己没法操纵身体");
Slowsay("隔着玻璃,一个黑色的身影正在操作着");
Slowsay("你清晰的看见那个人的大脑裸露出来,与你的接在一起");
Slowsay("这时,又有一大波记忆涌入脑海。");
Slowsay("“少年与妹子......是以“成功者”“英雄”“神话传说”为原型创造的人物......”");
Slowsay("“游戏中的情节与场景......取材于现实世界真实案例......”");
Slowsay("再往后,你的脑中一片混乱。");
Slowsay("“...舍弃.........熟练..我....智慧..学习........获得.....”");
Slowsay("“.....种族...探索.......杀...进化.........帮助..需要.....”");
Slowsay("“...成熟....兵器.....无敌..下风.......战争...伟大.....英雄.....”");
Slowsay("激昂的声音一直回荡着。");
Slowsay("---------------游戏进阶剧情通关-------------");
tongguan1=1; Sleep(1000);
}
int td6()
{
Slowsay("一天以后,少年回来了");
Slowsay("一起回来的还有妹子");
Slowsay("“找到了......”");
Slowsay("少年的手中拿着一个破损的铭牌");
Slowsay("铭牌上的字迹很诡异,但写着熟悉的内容:");
Slowsay("【22-08-03...】");
Slowsay("“你的......”");
Slowsay("妹子神色复杂的看了你一眼");
Slowsay("“我们是一类人......”");
Slowsay("“现在,让我把你带出去吧。”");
if(qxs==1&&swx==0)
{
tg2();
return 0;
}
else
{
Slowsay("一股强烈的撕扯感出现到了你身上");
if(swx==1) Slowsay("此时的你,是如此渴望着死亡与结局\n你大笑着张开双臂,迎接了死亡。");
else Slowsay("此时的你并不能接受如此巨大的伤害"),Slowsay("你死了。");
Slowsay("Bad End 14");
if(hjj[14]==0)
Slowsay("进阶线索-----外面的世界");
hjj[14]=1;
s++;
}Sleep(1000);
}
int bd6()
{
system("cls");
Slowsay("你感觉到自己正在变异,");
Slowsay("意识开始逐渐模糊起来");
Slowsay("你的肚子正无比渴望着食物,你啃噬着触及的一切!");
Slowsay("但是不够,你的身躯饿得干枯,你甚至开始食用自己的躯体!");
Slowsay("接着,你眼前一黑,再也没有醒来......");
s++;
hjj[6]=1;
Slowsay("Bad End 6");Sleep(1000);
}
int bd3()
{
system("cls");
char ch;
Slowsay("长久的等待终于让你失去了理智,你疯了。\n");
Slowsay("Bad End 3\n");
hjj[3]=1;Sleep(1000);
if(mp==-1)
{
Slowsay("当政府的救援队打开你家的门时,你嘶吼着扑了上去");
if(zd>0)
Slowsay("他们试图将你击毙,却被你提前一枪击倒");
else
{
Slowsay("你被他们击毙了");
Slowsay("Bad End 12");
s++;
hjj[12]=1;
return 0;
}
Slowsay("你如同一个熟练的猎手,狩猎着救援队");
Slowsay("当他们全部死去后,你开始享用起你的大餐");
Slowsay("Bad End 13");
if(by==0)
Sleep(2000),Slowsay("进阶线索-----早已变异!·本我"),by=1;
hjj[13]=1;
return 0;
}
s++;
}
int bd7()
{
s++;
system("cls");
Slowsay("你,被狗咬死了");
Slowsay("Bad End 7");
hjj[7]=1;Sleep(1000);
}
int bd15()
{s++;
Slowsay("你发现这笔迹有些不对");
Slowsay("就好像是新写上去的一样");
Slowsay("认字迹的话,好像还十分熟悉"); Sleep(1000);
Slowsay("正当你想的入迷的时候,你的脖子被咬住了");
Slowsay("在死前,你隐约听到了少年的声音,“Again.”");
Slowsay("Bad End 15");
if(hjj[15]==0)
{
Sleep(2000);
Slowsay("进阶线索-----伪造......");
}
hjj[15]=1; Sleep(1000);
}
int tgg3()
{
system("cls");
Slowsay("你杀掉了少年,并吃掉了他的尸体");
Slowsay("世界开始崩塌");
tg3(); Sleep(1000);
}
int bd9()
{
s++;
system("cls");
Slowsay("诡异的是,当你杀光了跟来的丧尸后,发现地下室里并没有丧尸");
Slowsay("这里有的,只是一个穿着白大褂的尸体");
Slowsay("在尸体的衣服口袋中,你找到了一个笔记本");
Slowsay("****(无法辨认)1号****进展*****永生**");
Slowsay("今********,*号诞生了,他比其*****更*");
Slowsay("有些不对,*****的发育*****太快***");
Slowsay("2号的**被***出有*****强感染性*****");
Slowsay("**********************************");
Slowsay("***瓶颈,或许我们**应该****活体样本");
Slowsay("**,**样本*****失去活性,*****但**在动\n");
if(mp==-1)
{
bd15();
return 0;
}
Slowsay("正当你看的入迷的时候,你的脖子被咬住了");
Slowsay("在死前,你隐约听到了少年的声音,“Again.”");
Slowsay("Bad End 9");
if(hjj[9]==0)
{
Sleep(2000);
Slowsay("获得线索-----实验体·1号和2号");
}
hjj[9]=1;Sleep(1000);
}
int tg()
{
system("cls");
Slowsay("不知为何,当你走到这里时,感到世界在一瞬间发生了变化");
Slowsay("你不知道这个变化发生在那里,你只知道,现在的世界十分违和");
Slowsay("或许,这个世界不是真实的");
Slowsay("当你的脑中出现了这个的时候,你眼前的世界,蹦塌了");
Slowsay("于此同时,大量记忆冲进了你的脑海");
Slowsay("不,它们只是回来了,这本身就是你的记忆");
Slowsay("他们在一开始被一些虚假的记忆所替换");
Slowsay("从记忆中,你得知你此时正在玩一个vr游戏");
Slowsay("少年与妹子则是游戏的npc");
Slowsay("这款游戏号称有着超强的代入感");
Slowsay("你在发售当天就买来玩了");
Slowsay("“这游戏真是了不起啊”,你这样想着,“再玩一次吧”");
Slowsay("...是啊,没错,这一切只是游戏,游戏。............");Sleep(1000);
Slowsay("躺在仓中的你,自始至终,都没有睁开眼。");
Slowsay("---------------游戏基础剧情通关-------------");
cdd=0;
tongguan=1;Sleep(1000);
}
int cg()
{
system("cls");
Slowsay("你感觉到违和感在不断加深");
Slowsay("世界好像不再是真实的");
Slowsay("你现在脑中只有一种想法\n");Sleep(1000);
Slowsay("活下去!越久越好!!!"); Sleep(1000);
}
int cg2()
{
system("cls");
system("Color C");
Slowsay("违和感在此时已经聚集到了顶峰\n");
Slowsay("你的脑中想清楚了一切\n");
Slowsay("1.那么,下一步是 杀光他们\n");
Slowsay("2.那么,下一步是 团结起来\n");
x=read();
if(x==1)
Slowsay("已立起尸王线flag,接下来,去打通全 15 badend!"),swx=1,qxs=1;
else
Slowsay("“看来你还是没懂啊......”背后传来冷冷的声音\n\n“ A G A I N . ”");
system("Color F");Sleep(1000);
}
int Swx()
{
system("cls");
Slowsay("哈。。。哈。。。哈。。。。。。");
Slowsay("我。。。已经完成了。。。");
Slowsay("所有的死法。。。我都体验了一遍了。。。");
Slowsay("我。。。一直是只丧尸吧。。。");
Slowsay("无论被打倒多少次。。。我都会站起来继续。。。");
Slowsay("只要是我想通的结局。。。我便一定会通掉它。。。");
Slowsay("只要是我想杀的人。。。我便一定会杀死他。。。");
Slowsay("只要是我想知道的真相。。。我便一定会知晓它。");
Slowsay("我。。。已经不是以前的那个懦弱无能的我了。。。");
Slowsay("这一轮。。。我。。。要成为王!!!\n");
Slowsay("在实验室中,为首者发出低哑的嘶吼:");
Slowsay("所有人员一级戒备!实验,进入最后阶段!!");
Slowsay("------------终极剧情-尸王线开启!------------");cdd=0;
}
int bd10()
{
system("cls");
Slowsay("你发现了另一个基地");
Slowsay("弹尽粮绝的你选择加入了他们");
Slowsay("之后的每一天都十分单调");
Slowsay("外出寻找物资,然后天黑了回家睡觉");
Slowsay("应该是这样吗?");
Slowsay("也许吧");
Slowsay("Bad End 10");
hjj[10]=1; Sleep(1000);
}
int hd5()
{
Slowsay("没关系的,一切都会过去的");
Slowsay("你这样说的");
Slowsay("他似乎感觉到了你的善意,一点一点向你靠近");
Slowsay("你紧紧的抱住了他");
Slowsay("我会保护好你的"); Sleep(1000);
Slowsay("Happy End-----跨越物种的gay~"); Sleep(1000);
}
int sswj()
{
Save();
system("cls");
int w=0;
mp=0;
if(tongguan==1&&zjj[4]==0)
{
Slowsay("检测到你已通关,是否领取特殊物品\n");
Slowsay("1.领取");
Slowsay("2.不领取");
while(true)
{
x=read();
if(x==1)
mp=-1;
if(x==2)
{
td4();
return 0;
}
break;
}
}
else if(tongguan==1)
{
Slowsay("检测到你已通关,已领取特殊物品\n");mp=-1;
}
char ch;
if(cdd==1)
{
Slowsay("是否读取存档\n");
Slowsay("1.读取\n");
Slowsay("2.不读取\n");
x=read();
if(x==1)
{
sw=sw1;
zd=zd1;
sn=sn1;
mz=mz1;
mp=mp1;
goto cddd1;
}
}
system("cls");
Slowsay("当丧尸危机爆发时,你正呆在家里\n");if(vv==0) ch=_getch();
Slowsay("你有10点物资可以分配到子弹和食物上");
if(swx==2) Slowsay("...\n\n但是!不!我已经不会再惧怕食物短缺与丧尸小兵了!\n\n我,应当是世界的王!!\n"),zd=99999,sw=99999;
else{if(vv==0) ch=_getch();
int x,y;
qiang=0;gun=0;zd=0;sw=0;mz=0;mzzd=0;sn=0;mzhg=0;
Slowsay("\n请输入你的选择(此次输入需键入回车,例:5 5 )\n");
while(true)
{
scanf("%d%d",&x,&y);
zd=x;sw=y;
if(x+y!=10||x<0||y<0)
{
if(x==666666&&y==5201314)
{
Slowsay("启用秘籍\n");
Slowsay("请输入你真正需要的子弹数和食物数(上限:999 )\n");
scanf("%d%d",&x,&y);
zd=min(x,999);sw=min(y,999);
break;
}
Slowsay("请重新输入\n");
w++;
if(w>5)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
Slowsay("行了行了,这只是第一个选择而已\n"),
Slowsay("有必要这么皮吗\n"),
Slowsay("自动分配食物3个子弹7个\n");
if(vv==0) ch=_getch();
sw=3,zd=7;
break;
}
}
else break;
}
}
Slowsay("你的家里是个较为安全的地方,你可以选择搜索你家的物资或是去邻居家看看\n");
if(vv==0) ch=_getch();
Slowsay("1.留在家中\n");
Slowsay("2.前往邻居家\n");
while(true)
{
x=read();
if(x!=1&&x!=2)
Slowsay("请重新输入\n");
else
if(x==1)
{if(swx==2) {Slowsay("饿啊!为什么我还呆在家里!!");break;}
else {
Slowsay("在二楼,你发现了一些食物食物+3\n");
if(vv==0) ch=_getch();
Slowsay("在家里过了一夜,食物-1\n");
sw=sw+2;
break;
}}
else
{if(swx==2) {Slowsay("可恶!为什么邻居家里没有人!!");break;}
else {
Slowsay("在前往邻居家的路上,你遇到了丧尸\n");
if(vv==0) ch=_getch();
if(zd<1)
{
Slowsay("你朝他开了一枪,不过枪里没有子弹,你被他咬死了\n");
if(vv==0) ch=_getch();
hjj[11]=1;
Slowsay("Bad End 11\n");
s++;
if(vv==0) ch=_getch();
Slowsay("另外在说一句,一个子弹都不带,还到处乱浪,你是真的作");
return 0;
}
else
{
Slowsay("你用你手中的枪结束了他的生命,子弹-1\n");
zd=zd-1;
if(vv==0) ch=_getch();
Slowsay("邻居家里不知为何并没有人,你在仔细搜索后发现了一个弹夹,里面有4发子弹\n");
zd+=4;
if(vv==0) ch=_getch();
Slowsay("在邻居家过了一夜后,食物-2\n");
sw=sw-2;
if(sw<0)
{
esl();
return 0;
}
}
break;
}}
}
if(vv==0) ch=_getch();
qp();
Slowsay("你回想起这附近有一座商场,你决定\n");
if(vv==0) ch=_getch();
Slowsay("1.前往商场\n");
Slowsay("2.到处乱走\n");
Slowsay("3.留在屋子里\n");
while(true)
{
x=read();
if(x!=1&&x!=2&&x!=3)
{
Slowsay("请重新输入\n");
continue;
}
if(swx==2&&x==1) {system("cls"),Slowsay("你循着残存的记忆前往商场,找到了适合你膨胀体型的衣服,可以继续隐藏下去。\n\n"),mz=1;break;}
else if(swx==2&&x==2) {system("cls"),Slowsay("你到处乱走,见人即杀,丧尸与人类的血混合着溅满了街道,\n惨叫连连,火光接天,如同末世一般。\n你站在尸山上狂笑,不屑于看那些渺小的灵魂。\n\n然而,你丝毫没有注意,一个娇小的身影远远的看到了你,捂着嘴逃之夭夭。\n\n"),mz=10086;break;}
else if(swx==2&&x==3) {system("cls");Slowsay("你如一名老练的猎手忍耐着饥饿,终于等来了敲门声。\n你得意洋洋的屠杀着这送上门来的大餐\n并跟踪着逃兵进入了幸存者基地。\n那一天,残阳似血,为浸染大地的红再镶上一道道金光。\n\n");Sleep(1000);return 0;}
else if(x==3)
{
if(sw<2)
{
esl();
return 0;
}
Slowsay("无聊正在逐渐消磨你的意志,但你还是坚持了下来。食物-2\n");
sw=sw-2;
if(vv==0) ch=_getch();
Slowsay("之后的每一天你都是这样,独自一人在家中等待救援\n");
if(vv==0) ch=_getch();
Slowsay("在过了好久之后\n");cout<<mp;
if(sw<6)
{
esl();
return 0;
}
x=rand()%2;
if(x==1&&mp==0) {hd1();return 0; }
else {bd3();return 0;}
}
else if(x==2)
{
int xx=rand()%3;
if(xx!=0)
{
Slowsay("在到处乱走的过程中,你遇到了来自世界各地的丧尸,子弹-2\n");
if(zd<2)
{
mzd();
return 0;
}
zd=zd-2;
}
else
{
Slowsay("在到处乱走的过程中,你走入了一处曾为战场的废墟\n");
if(vv==0) ch=_getch();
Slowsay("你循着硝烟味,终于找到了军队残留的弹药箱,子弹+6\n");
zd+=6;
}
break;
}
else if(x==1)
{
if(zd<4)
{
mzd();
return 0;
}
Slowsay("在前往商场的过程中,你遇到了丧尸,子弹-4\n");
zd=zd-4;
if(vv==0) ch=_getch();
Slowsay("你在商场发现了食物与子弹,食物+3,子弹+2\n");
sw=sw+3;zd=zd+2;
break;
}
}
if(mz!=10086)
{Slowsay("你在回家的路上发现了一个女幸存者\n");
if(vv==0) ch=_getch();
Slowsay("她试图向你讨要食物,你的选择是\n");
Slowsay("1.不给\n");
Slowsay("2.给她2份食物\n");
Slowsay("3.给她2份子弹\n");
Slowsay("4.给她一枪\n");
while(true)
{
x=read();
if(x<1||x>4)
{
Slowsay("请重新输入。\n");
continue;
}
if(x==1)
{
Slowsay("妹子生气的走了。\n");
if(vv==0) ch=_getch();
}
if(x==2)
{
if(sw<2)
{
Slowsay("食物不足\n");
continue;
}
sw=sw-2;
mzhg++;
Slowsay("你的食物-2,妹子好感度+1\n");
if(vv==0) ch=_getch();
}
if(x==3)
{
if(zd<2)
{
Slowsay("子弹不足\n");
continue;
}
mzzd=1;
Slowsay("你给了妹子两份子弹,妹子离开了\n"),zd=zd-2;
if(vv==0) ch=_getch();
}
if(x==4)
{
if(zd<1)
{
Slowsay("子弹不足\n");
continue;
}
zd=zd-1;
Slowsay("你一枪杀死了妹子,并从她的尸体上找到了4份食物\n");
sw=sw+4;
mzhg=-1;
if(swx==2) Slowsay("你吃掉了妹子的尸体,真是人间佳肴!\n"),mzhg=-10086;
}
if(swx==2&&x!=4) Slowsay("你看着妹子的背影在心中狂笑\n"),mzhg=10086;
break;
}}
Slowsay("又过了一夜,你的食物-2\n");
if(vv==0) ch=_getch();
qp();
sw=sw-2;
if(sw<0)
{
esl();
return 0;
}
if(mzhg==1) Slowsay("那个妹子又来找到了你,并邀请你加入他们的幸存者基地\n");
else Slowsay("你在附近发现了一个幸存者基地\n");
if(swx!=2){
Slowsay("在前往基地的途中,你遇到了丧尸\n");
Slowsay("你且战且退,大量丧尸把你逼进了一家商店\n");
Slowsay("门口的丧尸越来越多,你选择\n");
Slowsay("1.杀出去\n");
Slowsay("2.守在这\n");
while(true)
{
x=read();
if(x<1||x>2)
{
Slowsay("请重新输入\n");
continue;
}
if(x==1)
{
int res=0;
if(mzhg>0)
res=1;
else res=3;
if(zd<res)
{
mzd();
return 0;
}
zd=zd-res;
printf("你消耗了一些子弹冲了出去,子弹-%d\n",res);
if(mzzd==1&&mp==-1)
{
Slowsay("妹子在她杀死的丧尸的尸体上找到了许多物资,子弹+7,食物+3\n");
zd=zd+7;sw=sw+3;
mz=1;
break;
}
x=rand()%5;
if(res==1&&x!=3)
Slowsay("妹子为了帮你突围,被丧尸咬到,然后自杀了。\n"),mzhg=-1;
if(x==3&&res==1)
{
td3();
return 0;
}
}
else
if(x==2)
{
if(zd<5)
{
mzd();
return 0;
}
zd=zd-5;
Slowsay("你守在这家商店里直到杀死了所有找来的丧尸,子弹-5\n");
if(mzhg==1)
{
Slowsay("妹子在商店中发现了一把无限子弹的枪,子弹+10086\n");
zd=10086;
if(vv==0) ch=_getch();
Slowsay("但是妹子在翻找货架的时候被沾了丧尸血的货架划伤\n");
Slowsay("妹子自杀了\n");
mzhg=-1;
}
}
break;
}}
if(vv==0) ch=_getch();
qp();
Slowsay("你来到了这个幸存者基地\n");
if(mz==10086) {system("cls");Slowsay("人们在一位年轻首领的带领下顽强的与你战斗\n每个人都在尽自己的努力去守卫基地\n哪怕战友们一个个倒下\n哪怕首领被你愤怒的捏爆脑袋\n没有一个人放弃战斗,没有一个人抛弃希望\n\n最后,奇迹出现了\n\n在基地的废墟中,你的尸体沉重的倒下。\n\n");s++;Sleep(1000);return 0;}
Slowsay("这个基地的首领表示可以用子弹交换你手中的食物\n");
printf("你还有%d份食物,%d份子弹\n",sw,zd);
if(vv==0) ch=_getch();
Slowsay("请输入你需要的子弹数(0-9)\n");
while(true)
{
x=read();
if(x<0||x>sw)
{
Slowsay("请重新输入\n");
continue;
}
sw=sw-x;
zd=zd+x;
if(x>=1)
{
Slowsay("首领很开心你能提供稀缺的食物,多给了你1份子弹\n");
zd=zd+2;
}
break;
}
if(vv==0) ch=_getch();
qp();
Slowsay("又过了一天,食物-2");
sw=sw-2;
if(sw<0)
{
esl();
return 0;
}
if(vv==0) ch=_getch();
system("cls");
Slowsay("基地首领希望你加入这个基地\n");
Sleep(500);
Slowsay("你的选择是\n");
Sleep(500);
system("Color C");
Slowsay("1.留在这");
Slowsay("2.离开");
while(true)
{
x=read();
if(x<1||x>2)
{
Slowsay("请重新输入\n");
continue;
}
system("Color F");
if(swx==2&&x==1){system("cls");Slowsay("在一个月黑风高的夜里,你终于忍不住袭击了营地。\n年轻首领被你梦中封喉。\n人们顽强的与你战斗\n每个人都在尽自己的努力去守卫基地\n没有一个人放弃战斗,没有一个人抛弃希望\n但是他们失败了。\n在基地的废墟中,英雄们的尸体沉重的倒下。\n\n而你狂笑着吞噬着一切。\n\n");Sleep(1000);return 0;}
else if(x==1)
{
if(mzhg>-1) hd2();
else hd3();
return 0;
}
else if(x==2)
{
Slowsay("你决定\n");
Slowsay("1.当天离开\n");
Slowsay("2.再停留一天\n");
while(true)
{
x=read();
if(x<1||x>2)
{
Slowsay("请重新输入\n");
continue;
}
if(x==1) break;
if(x==2)
{
if(vv==0) ch=_getch();
qp();
Slowsay("这个基地的首领表示可以用子弹交换你手中的食物\n");
printf("你还有%d份食物,%d份子弹\n",sw,zd);
if(vv==0) ch=_getch();
Slowsay("请输入你需要的子弹数\n");
while(true)
{
x=read();
if(x<0||x>sw)
{
Slowsay("请重新输入\n");
continue;
}
sw=sw-x;
zd=zd+x;
if(x>=3)
{
Slowsay("首领很开心你能提供稀缺的食物,多给了你3份子弹\n");
zd=zd+3;
}
break;
}
sw=sw-2;
if(sw<0)
{
esl();
return 0;
}
Slowsay("又过了一夜,食物-2\n");
}
break;
}
Slowsay("在你离开的时候,一个少年跑了过来。\n");
Slowsay("他说,他想要和你一起走\n");
Slowsay("1.带上他\n");
Slowsay("2.不带他\n");
while(true)
{
x=read();
if(x<1||x>2)
{
Slowsay("请重新输入\n");
continue;
}
if(x==2)
{
Slowsay("少年生气的离开了");
if(swx!=2) Slowsay(",当他走远了,你才发现\n\n在刚刚的接触中,他偷走了你所有的子弹\n");
else Slowsay("\n当你走远后,你才发现,少年一直冷笑着跟在你的身后\n"),sn=1;
zd=0;
}
if(x==1)
{
Slowsay("你选择上少年一起走\n");
Slowsay("少年将他身上带着的一份食物交给了你\n");
sw=sw+1;
Slowsay("食物消耗+1,少年入队\n");
sn=1;
}
break;
}
}
break;
}
if(vv==0) ch=_getch();
qp();
printf("你在路边的一座没人的房子里过了一夜,食物-%d\n",2+sn);
sw=sw-2-sn;
if(vv==0) ch=_getch();
if(sn==1&&swx==2)
{
Slowsay("\n1.杀了少年,这时没人可以阻止你!\n");
Slowsay("2.我决定在少年面前一直隐瞒到底\n");
x=read();
if(x==1){Slowsay("少年不见了,难道他发现了......\n\n你一回头,少年咯咯笑着咬住你的脖子\n\n你应该等我虚弱时再下手啊.....\n\n");s++;return 0;}
}
if(sw<0)
{
esl();
return 0;
}
Slowsay("是否存档?\n");
Slowsay("1.存档(记录当前进度,只能有一个存档)\n");
Slowsay("2.不存\n");
x=read();
if(x==1)
{
cdd=1;
sw1=sw;
zd1=zd;
mp1=mp;
mz1=mz;
sn1=sn;
Slowsay("存档成功");
}
cddd1:
qp();
if(sn==1)
{
vv=0;
Slowsay("今天一早你就被少年叫醒了,\n");
if(vv==0) ch=_getch();
Slowsay("他在床底下发现了一箱方便面,食物+8\n");
sw=sw+8;
Slowsay("少年向你讨要武器,你决定\n");
Slowsay("1.把枪给他\n");
Slowsay("2.把捡到的水管给他\n");
Slowsay("3.什么都不给他\n");
while(true)
{
x=read();
if(x<1||x>3)
{
Slowsay("请重新输入\n");
continue;
}
if(x==1) gun=0,qiang=2;
if(x==2) gun=2,qiang=1;
if(x==3) gun=0,qiang=1;
break;
}
}
else
{
Slowsay("你在冰箱里发现了几包巧克力\n");
if(vv==0) ch=_getch();
Slowsay("希望它们还没过期吧,食物+3\n");
sw=sw+3;
}
if(vv==0) ch=_getch();
Slowsay("今天你们来到了一家大商场\n");
Slowsay("你决定\n");
Slowsay("1.独自探索1楼\n");
Slowsay("2.独自探索2楼\n");
if(sn==1)
{
Slowsay("3.和少年一起探索2楼");
}
while(true)
{
x=read();
if(x<1||x>3)
{
Slowsay("请重新输入\n");
continue;
}
if(x==1)
{
Slowsay("你在一楼发现了一些子弹,子弹+3\n");
zd=zd+3;
Slowsay("奇怪的是,一只丧尸都没有看到\n");
if(vv==0) ch=_getch();
if(sn>0)
{
if(qiang==2)
{
Slowsay("当你来到二楼时,发现了一地尸体\n");
Slowsay("少年就倒在这尸体中间,他死前手还紧紧握着枪\n");
Slowsay("你把枪拿了回来,并在少年的尸体下面发现了一箱压缩饼干\n");
Slowsay("食物+10086\n");
if(vv==0) ch=_getch();
sw=10086;
if(sw>10000&&zd>9000)
{
td();
return 0;
}
sn=0;
qiang=1;
}
else
{
Slowsay("当你来到二楼时,发现了少年的尸体\n");
if(vv==0) ch=_getch();sn=0;
Slowsay("你紧紧握着手中的枪,猛地一回头\n");
Slowsay("四周大量的丧尸向你涌来\n");
if(vv==0) ch=_getch();
zd=zd-5;
if(zd<0)
{
mzd();
return 0;
}
Slowsay("你杀光了这些丧尸,子弹-5\n");
if(vv==0) ch=_getch();
Slowsay("你在二楼找到了食物,食物+3\n");
sw+=3;
}
}
}
if(x==2)
{
Slowsay("你来到了二楼,数之不尽的丧尸忽然从阴影中窜出\n");
if(qiang==2)
{
Slowsay("尽管你没了枪也尽力抵抗,可丧尸的数量实在太多。\n");
mzd();
return 0;
}
if(vv==0) ch=_getch();
zd-=5;
if(zd<0)
{
Slowsay("尽管你尽力抵抗,可丧尸的数量实在太多。\n");
mzd();
return 0;
}
Slowsay("你杀光了这些丧尸,子弹-5\n");
if(vv==0) ch=_getch();
Slowsay("你在二楼找到了食物,食物+3\n");
sw+=3;
if(sn==1)
{
Slowsay("少年在一楼找到了子弹,子弹+3\n");
zd=zd+3;
}
}
if(x==3&&sn==1)
{
system("cls");
Slowsay("你们来到了二楼\n");
if(vv==0) ch=_getch();
system("Color C");
Slowsay("数之不尽的丧尸从阴影中窜出");
Slowsay("尽管你们尽力抵抗,可丧尸的数量实在太多。");
if(gun!=2&&qiang!=2)
{
Slowsay("没有武器的少年被当场咬死。");
if(mp==-1&&mz==0)
{
td5();
return 0;
}
sn=0;
}
Slowsay("其中一只丧尸趁你不注意冲到了你的旁边");
if(gun==2) Slowsay("就在你要被咬死的时候,少年扔出了手中的水管\n,救下了你");
else if(qiang!=2)
{
zd=zd-3;
if(zd<0)
{
mzd();
return 0;
}
Slowsay("你赶忙回头几枪补掉了这只丧尸,子弹-3");
}
zd=zd-3;
if(qiang==2||zd<0)
{
system("Color F");
mzd();
return 0;
}
system("Color F");
Slowsay("经过了一番苦战,你们终于战胜了所有丧尸,子弹-3");
if(vv==0) ch=_getch();
}
break;
}
if(vv==0) ch=_getch();
qp();
if(vv==0) ch=_getch();
printf("又过了一夜,食物-%d\n",sn+2);
sw=sw-2-sn;
if(sw<0)
{
esl();
return 0;
}
qp();
Slowsay("今天在出门的时候\n");
Slowsay("你遇到了一条流浪狗\n");
Slowsay("1.用枪打死它\n");
Slowsay("2.用食物打发它\n");
while(true)
{
x=read();
if(x<1||x>2)
{
Slowsay("请重新输入\n");
continue;
}
if(x==1)
{
zd=zd-1;
if(zd<0)
{
bd7();
return 0;
}
Slowsay("你一枪打死了这条狗,子弹-1\n");
if(sn==0) break;
Slowsay("在打死了狗之后,你忽然发现少年的脸色不太好\n");
if(vv==0) ch=_getch();
Slowsay("原来,在昨天的商场中,少年早就被咬了一口");
Slowsay("他一直瞒着你,不敢说出来");
Slowsay("此时,他闻到了血腥味,看到了尸体,已经忍不住,濒临变异了!!");
Slowsay("你决定\n");
Slowsay("1.杀了他\n");
Slowsay("2.不杀他\n");int a3=0;
if(gjj[4]==1&&zd<4)
{
Slowsay("3.安抚他\n");a3=1;
}
while(1)
{
x=read();
if(x<1||x>3||(x==3&&a3==0))
{
Slowsay("请重新输入\n");
continue;
}
if(x==1)
{
if(swx==2)
{
if(mzhg<-1000) tgg3();
else Slowsay("\n“杀我还早的很呢......”\n\n少年咯咯笑着挡下了你所有的攻击\n\n“因为你还不是一个优秀的丧尸......”"),Sleep(1000),mzd();
return 0;
}
if(vv==0) ch=_getch();
if(mp==-1&&mz==0)
{
Slowsay("奇怪的是,你直接秒掉了他。\n");Sleep(1000);
sn=0;
td5();
return 0;
}
else if(mp==-1&&mz!=0)
{
Slowsay("突然,妹子出现了。\n");
Slowsay("“放着我来!”,妹子与少年搏斗起来,妹子的力气极大,竟然真的压制住了少年!\n");
Slowsay("在你的惊恐目光下,少年的皮肤渐渐变淡,重新变回了“人”!\n");
Slowsay("这时,你才注意到少年的声音一直带着点沙哑,如同低吼一般\n");
Slowsay("“我没事。”他说。\n");
}
else
{
system("Color C");
Slowsay("你试着向他开枪,子弹穿过了他的身体\n");
Slowsay("你十分惊恐,疯狂地倾泻着手中的弹药\n");
Slowsay("“没有用的。”少年咯咯笑着向你走进,\n");
Slowsay("而他的伤口却以肉眼可见的速度愈合!\n");
Slowsay("怎么可能!怎么可能,怎么可能......\n");
system("Color F");
mzd();
if(zjj[9]==0)
{
Slowsay("获得线索-----无敌变异!·少年\n");Sleep(1000);
zjj[9]=1;
}
return 0;
}
}
if(x==2)
{
system("Color C");
Slowsay("你看着少年变异\n");
Slowsay("奇怪的是,他变异后并没有像其他的丧尸一样,向你扑过来\n");
Slowsay("而是躲在墙角瑟瑟发抖\n");
Slowsay("你慢慢的走过去\n");
Slowsay("就在你走近的时候,少年突然暴起\n");
Slowsay("狠狠地咬住了你的手臂\n");
Slowsay("你赶忙用枪打死他,可是为时已晚\n");
system("Color F");
sn=0;
if(sw>=6){td2();return 0;}
else{bd6();return 0;}
}
break;
}
if(x==3&&gjj[4]==1)
{
gjj[5]=1;
hd5();
return 0;
}
}
if(x==2)
{
sw=sw-1;
if(sw<0){bd7();return 0;}
Slowsay("你用一份食物引开了这条狗,食物-1\n");
}
break;
}if(swx==2)
{system("cls");if(sn==1) Slowsay("少年的变异的很突然,但身为丧尸的你没有受到攻击\n你们结伴一起狩猎着人类\n只是,与少年相处的越久,你就越发感受到他的强大。\n你只好收起杀心跟在他后面。\n应该是这样吗?"),Sleep(1000),Slowsay("\n\n“我错过了机会”\n");
else Slowsay("少年死后,你无聊的屠杀着一切,\n在接下来的几天里,你轻松的杀掉了城中所有的生物\n之后,你只能天天游荡,无助的面对着这座死城\n应该是这样吗?\n"),Sleep(1000),Slowsay("\n“我走错了路。”");
Sleep(1000);return 0;}
if(vv==0) ch=_getch();
if(sn==1&&sw>=4&&gun==2&&zd>5){hd4();return 0;}
if(sn==1)
{
Slowsay("又过了一天,食物-2\n");
sw=sw-2;
if(sw<0){esl();return 0;}
if(vv==0) ch=_getch();
system("cls");
Slowsay("今天早上,你发现少年不见了\n");
Slowsay("你决定\n");
Slowsay("1.去寻找他\n");
Slowsay("2.不去找他\n");
while(true)
{
x=read();
if(x<1||x>2)
{
Slowsay("请重新输入\n");
continue;
}
if(x==1)
{
system("cls");qp();
Slowsay("你通过蛛丝马迹一路追踪,来到了一座大厦前\n");
Slowsay("在路上,你遭遇了丧尸,子弹-2\n");
zd=zd-2;
if(zd<0)
{
mzd();
return 0;
}
Slowsay("你决定\n");
system("Color C");
Slowsay("1.破门!冲入大厦\n");
Slowsay("2.悄悄开门,潜入大厦\n");
Slowsay("3.寻找其它的入口\n");
while(true)
{
x=read();
if(x<1||x>3)
{
Slowsay("请重新输入\n");
continue;
}
if(x==1)
{
int xx=rand()%4;
Slowsay("你进入大厦才发现这里几乎充满了丧尸!");
Slowsay("丧尸似乎被你惊醒,如同海啸般向你涌来!");
system("Color F");
if(zd>6) Slowsay("怎么回事!!你一路且战且退来到了地下室"),zd-=6,bd9();
else if(xx==0) Slowsay("幸运的是,你退后的脚碰到了地下室的暗门,Thanks God!"),bd9();
else Sleep(1000),mzd();
return 0;
}
if(x==2)
{
int xx=rand()%6;
Slowsay("你进入大厦才发现这里几乎充满了丧尸!");
system("Color F");
Slowsay("怎么回事!!你害怕得定在原地,奇怪的是它们并没有向你扑来,只是疲惫的看着你。");
Slowsay("定睛一看,丧尸们个个躯体畸形,断手断脚者不乏其数");
Slowsay("再一看,这些丧尸们被奇怪的机器束缚,不得踏出大厦一步。");
Slowsay("你大着胆子靠近一个丧尸,发现它的头上有着模糊的字迹");
Slowsay("【21.7.29,失败】");Sleep(1000);
Slowsay("瞬间,那个丧尸惊恐地捂住头上的字,发出奇怪的吼声!");
Slowsay("其它丧尸如同被激怒,海啸般向你涌来!");
if(zd>6) Slowsay("怎么回事!!你一路且战且退来到了地下室"),zd-=6,bd9();
else if(xx==0) Slowsay("幸运的是,你退后的脚碰到了地下室的暗门,Thanks God!"),bd9();
else Sleep(1000),mzd();
return 0;
}
if(x==3)
{
system("Color F");
Slowsay("你走入刚刚的大街,你的老相识开心地吐着舌头看着你");
Slowsay("......后面跟着它的一堆朋友......");
Slowsay("......你被讨食的狗狗们追着跑过了两条大街,不停地扔出食物来减缓它们的攻势......");
if(sw>5) Slowsay("终于,它们全部满足的趴倒在了地上。\n领头狗如同可以听懂人话一样,将你带到了一个隐蔽的地道口前......"),sw-=5,bd9();
else bd7();
return 0;
}
break;
}
}
break;
}
}
qp();
if(vv==0) ch=_getch();
if(mz==1&&sn==1&&swx==0){td6();return 0;}
Slowsay("又过了一天,食物-2");
sw=sw-2;if(sw<0){esl();return 0;}
Sleep(500);
Slowsay("遭遇丧尸,子弹-3");
zd=zd-3;if(zd<0){mzd();return 0;}
Sleep(500);
Slowsay("又过了一天,食物-2");
sw=sw-2;if(sw<0){esl();return 0;}
Sleep(500);
Slowsay("遭遇丧尸,子弹-2");
zd=zd-2;if(zd<0){mzd();return 0;}
Sleep(500);
if(ccg==1){tg(); return 0;}
else{bd10();return 0;}
}
int main()
{
srand(time(0));
Read();
int go=0;
while(tongguan1!=2)
{
int v=0;
char ch;
mp=0;
if(go==1){
Sleep(1000);
if(vv==0) ch=_getch();
system("cls");Save();}go=1;
Slowsay("1.进行游戏\n");
Slowsay("2.查看成就\n");
Slowsay("3.查看线索(获得全部线索后通关游戏)\n");
Slowsay("4.获得一条随机的提示\n");
Slowsay("5.游戏相关\n");
Slowsay("6.极速模式\n");
Slowsay("7.退出游戏\n");
x=read();
if(x==1)
{
sswj();
if(s>50&&swhm==0)
{
swhm=1;
Slowsay("又死了啊......");
Slowsay("这已经是第几次了呢......");
Slowsay("一个柔和的声音从耳边传来");
Slowsay("或许早该放弃了");Sleep(1000);
Slowsay("获得线索-----计数者");
}
}
if(x==2)
{
int v1=0;
system("cls");
if(tongguan1==2) Slowsay("\n已通关终极剧情\n");
if(tongguan1==1) Slowsay("\n已通关进阶剧情(进阶不重要!终极才是王道!)\n");
if(tongguan==1) Slowsay("\n已通关基础剧情\n");
int v=0;
Slowsay("\nHappy Bnd 达成\n");
if(gjj[1]==1) Slowsay("苟到最后\n");else Slowsay("未达成\n");
if(gjj[2]==1) Slowsay("神仙眷侣\n");else Slowsay("未达成\n");
if(gjj[3]==1) Slowsay("英雄不朽\n");else Slowsay("未达成\n");
if(gjj[4]==1) Slowsay("认清自己\n");else Slowsay("未达成\n");
if(gjj[5]==1) Slowsay("跨越物种的gay\n");else Slowsay("未达成\n");
Slowsay("\n");
Slowsay("Bad End 达成(共15个)\n");
for(int i=1;i<=17;i++)
if(hjj[i]==1)
printf("%d ",i),v1++;
if(v1>=15&&swx==1)
swx=2,cdd=0,Swx();
Slowsay("\n");
printf("当前死亡次数:%d",s);
Slowsay("\n");
Slowsay("True End 达成\n");
if(zjj[1]==1) Slowsay("拯救世界\n");else Slowsay("未达成\n");
if(zjj[3]==1) Slowsay("认清?·妹子\n");else Slowsay("未达成\n");
if(zjj[2]==1) Slowsay("认清!·本我\n"); else Slowsay("未达成\n");
if(zjj[4]==1) Slowsay("验证失败\n");else Slowsay("未达成\n");
if(zjj[5]==1) Slowsay("死亡姗姗来迟\n");else Slowsay("未达成\n");
Slowsay("\n");
if(vv==0) char ch=_getch();
}
if(x==3)
{
system("cls");
int v=0;
Slowsay("基础线索\n");
if(zjj[1]==1) Slowsay(" 奇特的枪与饼干\n"),v++;else Slowsay(" ?????\n");
if(zjj[2]==1) Slowsay(" 延迟变异?·少年\n"),v++;else Slowsay(" ?????\n");
if(zjj[9]==1) Slowsay(" 无敌变异!·少年\n"),v++;else Slowsay(" ?????\n");
if(zjj[3]==1) Slowsay(" 不变异? ·妹子\n"),v++; else Slowsay(" ?????\n");
if(hjj[8]==1) Slowsay(" 早已变异!·妹子\n"),v++; else Slowsay(" ?????\n");
if(hjj[9]==1) Slowsay(" 实验体·1号和2号\n"),v++; else Slowsay(" ?????\n");
if(v>=6&&ccg==0)
{
Sleep(2000);
cdd=0;cg();ccg=1;
}
Slowsay("进阶线索\n");
if(swhm==1) Slowsay(" 计数者\n"),v++; else Slowsay(" ?????\n");
if(zbbj==1) Slowsay(" 乱码,废弃与失联\n"),v++; else Slowsay(" ?????\n");
if(by==1) Slowsay(" 早已变异!·本我\n"),v++; else Slowsay(" ?????\n");
if(hjj[15]==1) Slowsay(" 伪造......\n"),v++; else Slowsay(" ?????\n");
if(zjj[5]==1) Slowsay(" 少年之死\n"),v++; else Slowsay(" ?????\n");
if(hjj[14]==1) Slowsay(" 外面的世界\n"),v++; else Slowsay(" ?????\n");
if(v>=12&&qxs==0)
{
Sleep(2000);
cg2();cdd=0;Sleep(1000);
Slowsay("-------- 游戏进阶结局已解锁(快前往达成吧)--------");qxs=1;
}
if(vv==0) ch=_getch();
}
if(x==4)
{
system("cls");
int y=rand()%3;
if(y==0){Slowsay("【稀有提示】"); x=rand()%14;
if(x==0) Slowsay("【稀有结局提示】 试试 0 10 开局!");
else if(x==1) Slowsay("【稀有结局提示】 最好的爱总要先错过~");
else if(x==2) Slowsay("【剧情提示】 二周目:少年变异后有新剧情!");
else if(x==3) Slowsay("【剧情提示】 不变异的妹子总有一天会在营地暴露!再来一遍!");
else if(x==4) Slowsay("【剧情提示】 弹尽粮绝之时,变异的少年会记起上辈子的爱情!再来一遍!");
else if(x==5) Slowsay("【剧情提示】 第二天,和首领换更多子弹,他会更开心!");
else if(x==6) Slowsay("【剧情提示】 在家里等待疯掉?再来一遍!");
else if(x==7) Slowsay("【剧情提示】 二周目:再次进入实验室吧!");
else if(x==8) Slowsay("【剧情提示】 二周目:神枪手妹子...");
else if(x==9) Slowsay("【剧情提示】 二周目:不带子弹!等待救援!");
else if(x==10) Slowsay("【通关方式】 二周目:在获得所有线索后前往“外面的世界”。");
else if(x==11) Slowsay("【通关方式】 三周目:(都提示这么明显了)吃掉妹子,杀掉少年。");
else if(x==12) Slowsay("【线索提示】 死亡很多次后......(有个地方可以刷死亡次数)");
else Slowsay("【???】 666666,5201314(会错过一些线索与结局!)");
}else{x=rand()%14;
if(x==0) Slowsay("加了好感后,妹子有几率不死");
else if(x==1) Slowsay("少年喜欢子弹");
else if(x==2) Slowsay("乱走有时可以获得子弹");
else if(x==3) Slowsay("冲进去活下来几率更大");
else if(x==4) Slowsay("分头探商店可以获得更多资源");
else if(x==5) Slowsay("有一些结局只能通关后触发");
else if(x==6) Slowsay("有一些结局要脸好才能触发");
else if(x==7) Slowsay("有一些结局要通其他结局后才能触发");
else if(x==8) Slowsay("大多数时候,你认为一个地方没有好结局只是因为你食物/子弹不够");
else if(x==9) Slowsay("绝大多数的线索来自结局");
else if(x==10) Slowsay("三大重叠剧情线路:普通,进阶,尸王线");
else if(x==11) Slowsay("本游戏是一个剧情严谨,人物丰满,细思极恐的好!游!戏!~");
else if(x==12) Slowsay("事实证明剧情游戏是最难调的!有Bug一定要去博客说出来啊!(luogu.com.cn/blog/z1e2k3i4/)");
else Slowsay("完成目标后,需要在线索,成就界面开启新剧情哦");
}
if(vv==0) char ch=_getch();continue;
}
if(x==5)
{
system("cls");
Slowsay("作者:小小小苗\n");
Slowsay("改错,调试,搬运,游玩:胎神大大(就是在游戏论坛翻到的宝藏而已emm......)\n");
}
if(x==6)
{
system("cls");
if(vv==0) vv=1,Slowsay("已开启极速模式");
else vv=0,Slowsay("已关闭极速模式");
}
if(x==7)
{
system("cls");
Slowsay("想退?死吧!!");s++;
}
}
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
Slowsay("Thanks for playing......");Sleep(1000);
Slowsay("您已通关,我亲爱的 终极丧尸,成功者,杀人机器,你还没杀够吗?......");system("Color C");
}
<2021> 角色躲避胎
#include<bits/stdc++.h>
#include<windows.h>
#include<stdio.h>
#include<conio.h>
#include<time.h>
using namespace std;
typedef BOOL (WINAPI *PROCSETCONSOLEFONT)(HANDLE, DWORD);
PROCSETCONSOLEFONT SetConsoleFont;
POINT Windowpos(){POINT pt;GetCursorPos(&pt);HWND h=GetForegroundWindow();ScreenToClient(h,&pt);
pt.x=(pt.x+4)/8+0.5;pt.y=pt.y/16+0.5;//鼠标矫正此处
swap(pt.x,pt.y);return pt;}
int mouse;POINT pt;
void Print(int a){HMODULE hKernel32 = GetModuleHandle("kernel32");SetConsoleFont = (PROCSETCONSOLEFONT)GetProcAddress(hKernel32,"SetConsoleFont");SetConsoleFont(GetStdHandle(STD_OUTPUT_HANDLE),a);}
int ti(float a) {return ((int)(a*10+5))/10;}
void Setpos(float x,float y){COORD pos;pos.X=ti(y*4)/2;pos.Y=ti(x+2);SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}
void Color(int a){if(a==0) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(a==-1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE);
if(a==-8) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_RED);if(a==1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(a==-11) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_GREEN|BACKGROUND_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),BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_GREEN);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==-6) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_BLUE);
if(a==7) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(a==8) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);if(a==9) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_GREEN|BACKGROUND_BLUE);if(a==10) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_BLUE);if(a==11) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE);if(a==12) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN);if(a==13) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY);if(a==14) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN|FOREGROUND_BLUE);}
void Slow(char *p,int a) {while(1){if(*p!=0) printf("%c",*p++);else break;Sleep(a);}}
int to(float a) {if(a>0) return int(a+0.5);else if(a<0) return int(-a-0.5);if(a==0) return 0;}
float Sin(int a) {return sin(3.1416*a/180);}float Cos(int a) {return cos(3.1416*a/180);}
float Sin0(int a) {return sin(3.1416*a);}float Cos0(int a) {return cos(3.1416*a);}//多少pai
//------------------------------------杂七杂八的图像函数。。。------------------------------------
int m[51][101],n[51][101],s[51][101];speacial
int bl,br,Life,level,T,Turnx,Turny,End,Lev,people,unkillT,unkillTmax,Tempty;
float X,X2,Y,Y2,speed=30,Attack=1,Anc,Anv,Anb,cMin,vMin,bMin,skillC,skillV,skillB,Blood,Bloodmax,EXP,EXPmax;
int D[2][5]={{0,1,-1,0,0},{0,0,0,-1,1}};//上下右左
float Sx=18,Sy=60,Svx=0,Svy=0,Stx,Sty,Sr=0,Sm=0,Svmax=2,Srmax=5;
int Sleep_1,Sleep_1max,Sleep_2,Sleep_3;
int Bean,BeanBoo,BeanBoom,TimeStop,Thunder,ThunderTime,ThunderTurn,Crab;
struct bullet{float x,y,vx,vy,fx1,fx2,fx3;int w,t,k,l,ex1,ex2,ex3;//what,time,kill,life;
float maxsize,angle,maxangle,minangle,xr,ybig,ysmall,v;
int turn,staytime,num,source;
}B[1000001];//改时别忘了Delete!
void Delete_B(int i) {
B[i].x=B[i].y=B[i].vx=B[i].vy=B[i].fx1=B[i].fx2=B[i].fx3=B[i].w=B[i].t=B[i].k=B[i].l=B[i].ex1=B[i].ex2=B[i].ex3=0;
B[i].maxsize=B[i].angle=B[i].maxangle=B[i].minangle=B[i].xr=B[i].ybig=B[i].ysmall=B[i].v=B[i].turn=B[i].staytime=B[i].num=B[i].source=0;}
void S(float x,float y){int i=(int)x,j=(int)y;Setpos(i,j/2.0);printf("a");}
void C(float x,float y){int i=(int)x,j=(int)y;Setpos(i,j/2.0);//直接输出该点
if(n[i][j]==0) printf(" ");
if(n[i][j]==1) Color(-1),printf(" ");
//以下无伤
if(n[i][j]==-1) Color(-8),printf(" ");
if(n[i][j]==-2) Color(-11),printf(" ");
if(n[i][j]==-3) Color(-5),printf(" ");
Color(0);
}
void Map(int a){if(a==1){for(register int i=1;i<=50;i++)for(register int j=1;j<=100;j++){if(n[i][j]!=m[i][j]){C(i,j);}}for(register int i=1;i<=50;i++)for(register int j=1;j<=100;j++){m[i][j]=n[i][j];}}}
//Map1:更新地图
void N(float x,float y,int w){int xx=(int)x,yy=(int)y;//放置点在地图上
if(xx>40||yy>80||xx<1||yy<1) return;
else if(w<0&&n[xx][yy]>=1) return;//白色盖住红色
else n[xx][yy]=w;}
void Die(){
system("cls");system("color 0F");
Slow("You Die !",50);
system("color 3B");Sleep(10);system("cls");system("color 0F");}
void Win(){
system("cls");
for(register int i=0;i<=3;i++)
{printf("You Win !");
system("color 1A");Sleep(10);
system("color 2B");Sleep(10);
system("color 3C");Sleep(10);
system("color 4D");Sleep(10);
system("color 5D");Sleep(10);
system("color 6E");Sleep(10);
system("color 7F");Sleep(10);
}printf(" 好敷衍啊...");Lev=1;system("color 0F");Sleep(5000);system("cls");
}
void Circle(int x,int y,int r,int num,int start,int whatnumber,int source){if(r<0) return;if(r==0) num=1;int next=360/num;for(register int i=0;i<num;i++){br++;
B[br].w=3;B[br].staytime=3;if(whatnumber==0) whatnumber=1;B[br].num=whatnumber;B[br].source=source;
B[br].t=0;B[br].l=1;B[br].x=x+Sin(i*next+start)*r;B[br].y=y+2*Cos(i*next+start)*r;}}
void Rock_Circle(float x0,float y0,float xr,float ybig,int staytime,int source,int num){
if(xr<0) return;
for(register int i=x0-xr;i<=x0+xr;i++){float Ay=ybig*2*sqrt(xr*xr-(i-x0)*(i-x0));for(register float j=y0-Ay;j<y0+Ay;j++){br++;B[br].w=3;B[br].staytime=staytime;B[br].t=0;B[br].l=1;B[br].x=i;B[br].y=to(j);B[br].staytime=staytime;B[br].num=num;
if(num==-3) B[br].num=-2,B[br].ex2=1;
B[br].source=source;B[br].ex1=B[B[br].source].ex1;}}}
void Rock_line(float x0,float y0,float x,float y,int source){
float Ax=x-x0,Ay=y-y0,R=sqrt(Ax*Ax+Ay*Ay);
bool yy=0;
if(Ax<0) swap(x,x0),swap(y,y0),Ax*=-1,Ay*=-1;if(Ay<0) yy=1;
float ax=Ax/R*1.0,ay=Ay/R*1.0,j=y0,i=x0;
while(i<=x&&((j<=y&&yy==0)||(j>=y&&yy==1)))
{
br++;B[br].w=3;B[br].t=0;B[br].l=1;B[br].x=to(i);B[br].y=to(j);
B[br].staytime=to(R);B[br].source=source;B[br].num=B[source].num;
if(source==-2) B[br].source=0,B[br].num=-2;
i+=ax;j+=ay;
}
}
void Circle_bomb(int x,int y,int number,int start,float speed,int source,int num){int next=360/number;for(register int i=0;i<number;i++){br++;B[br].w=2;B[br].t=0;B[br].l=1;B[br].source=source;B[br].num=num;
B[br].vx=Sin(i*next+start)*speed;B[br].x=x-B[br].vx;
B[br].vy=2*Cos(i*next+start)*speed;B[br].y=y-B[br].vy;
}}
void Rand_put_Knife(int turn){
br++;
B[br].w=1;
B[br].t=0;B[br].l=1;
B[br].x=X+rand()%10-5;
B[br].y=1;
B[br].staytime=3;
B[br].turn=turn;
B[br].angle=0+180*turn;
B[br].maxangle=180;B[br].minangle=0;
B[br].v=7;
if(turn==1) B[br].v*=-1;
B[br].ybig=(rand()%25)/10.0+4;//3 导轨扁度 2为圆
B[br].ysmall=0.01;// ybig* ysmall=刀光横宽倍数 0.25为圆
B[br].maxsize=0.01;//刀光纵宽
B[br].xr=(rand()%5-2+(Y-B[br].y))/B[br].ybig*1.0;//导轨大小
}
void Put_Round_Bullet(int ex,float v){//1:反伤
for(register int i=0;i<=v*4;i+=5) {br++;B[br].w=5;B[br].t=0;B[br].l=1;B[br].x=X;B[br].y=Y;B[br].angle=i+110;B[br].maxangle=600;
B[br].v=60-(int)v;
B[br].staytime=3;B[br].xr=3+v/10.0;
if(ex==1) B[br].ex1=1;
}if(v>=27)
for(register int i=0;i<=v*4;i+=5) {br++;B[br].w=5;B[br].t=0;B[br].l=1;B[br].x=X;B[br].y=Y;B[br].angle=i+110;B[br].maxangle=600;
B[br].v=60-(int)v;
B[br].staytime=3;B[br].xr=4+v/10.0;
if(ex==1) B[br].ex1=1;
}
}
void Rand_put_Bullet(){
br++;
B[br].w=2;
B[br].t=0;B[br].l=1;
B[br].x=rand()%40;
B[br].y=1;
B[br].vy=(rand()%25+25)/15.0;
}
void put_Bullet(float x,float y,float vx,float vy,int num){
vx/=2.0;
if(vy!=0) {br++;B[br].w=2;B[br].t=0;B[br].l=1;B[br].x=x;B[br].y=y-1;B[br].vx=vx;B[br].vy=vy;B[br].num=num;if(num==-4) num=-2,B[br].maxsize=5;}
br++;B[br].w=2;B[br].t=0;B[br].l=1;B[br].x=x;B[br].y=y;B[br].vx=vx;B[br].vy=vy;B[br].num=num;if(num==-4) num=-2,B[br].maxsize=5;}
void Rand_sin_Bullet(){
br++;
B[br].w=6;
B[br].t=0;B[br].l=1;
B[br].x=rand()%40;
B[br].y=1;
B[br].vy=(rand()%25+25)/15.0;B[br].staytime=10;
B[br].angle=0;B[br].xr=3;B[br].v=(rand()%125+25)/2.0;
}
void Rand_back_Bullet(){
br++;
B[br].w=7;
B[br].t=0;B[br].l=1;
B[br].x=rand()%40;
B[br].y=1;
B[br].ybig=80-(rand()%5)/2.0;
}
void Rand_brouce_Bullet(){//ex2:弹跳数
br++;
B[br].w=8;
B[br].t=0;B[br].l=1;
B[br].x=rand()%40;
B[br].y=1;
B[br].vy=(rand()%25+25)/15.0;
B[br].vx=(rand()%50-25)/15.0;
B[br].xr=(rand()%15)/10.0+1.5;
B[br].ex2=3;
}
void Put_brouce_Bullet(int a,float x,float y,float vx,float vy,float ex2){
vy*=2;
if(a==0) {br++;B[br].w=8;B[br].t=0;B[br].l=1;B[br].x=x;B[br].y=y;B[br].vx=vx;B[br].vy=vy;B[br].xr=1.5;B[br].num=-3;B[br].ex2=ex2;}
if(a==1) Put_brouce_Bullet(0,X,Y,0,-1.5,0);
if(a==2) Put_brouce_Bullet(0,X,Y,0,-2,5),Put_brouce_Bullet(0,X,Y,0,2,5),Put_brouce_Bullet(0,X,Y,-2,0,5),Put_brouce_Bullet(0,X,Y,2,0,5),Put_brouce_Bullet(0,X,Y,-1.414,1.414,5),Put_brouce_Bullet(0,X,Y,-1.414,-1.414,5),Put_brouce_Bullet(0,X,Y,1.414,1.414,5),Put_brouce_Bullet(0,X,Y,1.414,-1.414,5);
if(a==3) for(int i=1;i<=1;i++) Put_brouce_Bullet(0,X+2.5-rand()%50/10,Y+5-rand()%100/10,0,-1-rand()%25/10,0);
}
void Hurt(int x,int y,int ex){
br++;
B[br].w=4;
B[br].t=0;B[br].l=1;
B[br].x=x;
B[br].y=y;
if(ex==1) B[br].staytime=3,B[br].v=1,B[br].num=-1;//伤
if(ex==2) B[br].staytime=5,B[br].v=5,B[br].num=-3;//清
}
void Level_Bullet(){
if(T<=50&&T%5==0) Rand_put_Bullet();else if(T<=100) return;
else if(T<=150&&T%5==0) Rand_put_Knife(T%2);else if(T<=200) return;
else if(T<=250&&T%7==0) Rand_sin_Bullet();else if(T<=300) return;
else if(T<=350&&T%7==0) Circle_bomb(20,40,15,T%15,2,0,1);else if(T<=400) return;
else if(T<=450&&T%7==0) Rand_back_Bullet();else if(T<=500) return;
else if(T<=550&&T%10==0) Rand_brouce_Bullet();else if(T<=600) return;
else if(T<=1000){if(T%5==0) Rand_put_Bullet();if(T%21==0) Rand_put_Knife(T%2);if(T%39==0) Rand_sin_Bullet();if(T%90==0) Circle_bomb(20,40,15,T%15,2,0,1);if(T%18==0) Rand_back_Bullet();if(T%34==0) Rand_brouce_Bullet();}
else if(T<=2000){if(T%6==0) Rand_put_Bullet();if(T%17==0) Rand_put_Knife(T%2);if(T%23==0) Rand_sin_Bullet();if(T%60==0) Circle_bomb(20,40,15,T%15,2,0,1);if(T%9==0) Rand_back_Bullet();if(T%28==0) Rand_brouce_Bullet();}
else {if(T%10==0) Rand_put_Bullet();if(T%13==0) Rand_put_Knife(T%2);if(T%9==0) Rand_sin_Bullet();if(T%40==0) Circle_bomb(20,40,15,T%15,2,0,1);if(T%8==0) Rand_back_Bullet();if(T%27==0) Rand_brouce_Bullet();}
}
void Move_bullet(){
for(register int i=bl;i<=br;i++){
if(B[bl].l==0) bl++;
if(B[i].l==1&&TimeStop==0) B[i].t++;else continue;
bool del;
float x=B[i].x,y=B[i].y,vx=B[i].vx,vy=B[i].vy,fx1=B[i].fx1,fx2=B[i].fx2,fx3=B[i].fx3;
int w=B[i].w,t=B[i].t,k=B[i].k,ex1=B[i].ex1,ex2=B[i].ex2,ex3=B[i].ex3;
float maxsize=B[i].maxsize,angle=B[i].angle,maxangle=B[i].maxangle,minangle=B[i].minangle,xr=B[i].xr,ybig=B[i].ybig,ysmall=B[i].ysmall,v=B[i].v,turn=B[i].turn;
int staytime=B[i].staytime,num=B[i].num,source=B[i].source;
//what,time,kill,life;简化
// if(level==1){
if(Sleep_1==0&&s[to(x)][to(y)]>=1&&s[to(x)][to(y)]<=2&&w==3&&ex1!=1&&num>=0&&num<=1) {Delete_B(source),del=1,Delete_B(i);EXP+=0.3;if(people!=4) Sleep_1=1;
if(s[to(x)][to(y)]==1){B[i].w=2;B[i].t=0;B[i].l=1;B[i].num=-2;B[i].x=x;B[i].y=y;B[i].vx=to(x)-X;B[i].vy=to(y)-Y;B[i].vx/=2,B[i].vy/=2;B[i].ex1=1;B[i].staytime=2;}
}
if(w==1){//maxsize,angle,rx,ybig,v,x0,y0;
if(angle>maxangle||angle<minangle) {del=1,Delete_B(i);
continue;}
else {int v0=2;float a=angle;
for(register int A=min(a+v0,a+v+v0);A<max(a+v0,a+v+v0);A+=v0)
{
angle+=v0;
float rsmall=0.1;
float y1=y+xr*ybig*Sin(angle)*1.0;
float x1=x+xr*Cos(angle)*1.0;
float R=1+rsmall*maxsize*Sin(angle)*1.0;
Rock_Circle((int)x1,(int)y1,to(R),ybig*ysmall,staytime,i,1);
}if(TimeStop==0) angle=a+v;}
}//刀
if(w==2){
if(x>40||y>80||x<1||y<1||(abs(vx)<=0.1&&abs(vy)<=0.1)||(people==4&&t>=6&&num<0)) {del=1,Delete_B(i);continue;}
else {Rock_line(x,y,x+vx,y+vy,i);
if(ex1==1) vx*=0.9,vy*=0.9;
if(TimeStop==0) x+=vx,y+=vy;
}}
if(w==3) {
if(ex2==1&&m[to(x)][to(y)]>0&&Sleep_2==0) Delete_B(source),Sleep_2=1;
if(x>40||y>80||x<1||y<1||t>=staytime||(ex2==1&&m[to(x)][to(y)]>0&&Sleep_2==0)) {del=1,Delete_B(i),N(x,y,0);if(ex1==1||num==-2) s[to(x)][to(y)]=0;continue;}
if(num!=0) N(x,y,num);
else N(x,y,1);
if(ex1==1) s[to(x)][to(y)]=1;else if(num==-2) s[to(x)][to(y)]=2;
}//残影
if(w==4){//Hurt
Circle(x,y,1+t*v,90,1,num,i);if(t>=staytime) del=1,Delete_B(i);
}
if(w==5){//Round
if(angle>maxangle||angle<minangle) {del=1,Delete_B(i);continue;}
for(register int a=angle;a<angle+v;a+=3){Rock_Circle((int)(X+Sin(a)*xr),(int)(Y+2*Cos(a)*xr),1,0.5,staytime,i,-2);}
if(TimeStop==0) angle+=v;
}
if(w==6){//Sin
if(x>40||y>80||x<1||y<1) {del=1,Delete_B(i);continue;}
for(register int a=angle;a<angle+v;a+=3){Rock_Circle((int)(x+Sin(a)*xr),(int)y,1,0.5,staytime,i,1);
}if(TimeStop==0) angle+=v,x+=vx,y+=vy;
}
if(w==7){//Back
if(x>40||x<1||y<1) {del=1,Delete_B(i);continue;}
vy=(ybig-y)/10.0+0.2;if(turn==1) vy*=-1;
if(TimeStop==0) x+=vx,y+=vy;
if(y>=ybig) turn=1;
if(turn==0) Rock_line(x,y,x,y+3,i),Rock_line(x-1,y,x-1,y-2,i),Rock_line(x+1,y,x+1,y-2,i);
else Rock_line(x,y,x,y-3,i),Rock_line(x-1,y,x-1,y+2,i),Rock_line(x+1,y,x+1,y+2,i);
}
if(w==8){//Brouce
if(x>40||y>80||x<1||y<1) {if(x<1) x=1,vx*=-1;if(x>40) x=40,vx*=-1;if(y<1) y=1,vy*=-1;if(y>80) y=80,vy*=-1;ex2--;}
if(ex2<0) {del=1,Delete_B(i),N(x,y,0);continue;}
Rock_Circle(x,y,xr,1,2,i,num);
if(TimeStop==0) x+=vx,y+=vy;
}
if(w==9){//Crab_Attack
vx=rand()%15-7,vy=rand()%29-14;if(ex1==3) vx=rand()%11-5,vy=rand()%11-5;if(ex1==2) vx=rand()%5+2;
if(TimeStop==0) {float xx=fmax(fmin(x+vx,39),1),yy=fmax(fmin(y+vy,80),1);Rock_line(x,y,xx,yy,-2);x=xx,y=yy;
if(ex1==3) X=to(x),Y=to(y),unkillT=2,Crab=1;}
if(x>=39||y>=80||x<=1||y<=1) {del=1,Delete_B(i);if(ex1==3) Crab=2;continue;}
}
// }
if(del==0){//事实上不用,有continue了
B[i].x=x,B[i].y=y,B[i].vx=vx,B[i].vy=vy;B[i].fx1=fx1,B[i].fx2=fx2,B[i].fx3=fx3;
B[i].w=w,B[i].t=t,B[i].k=k;B[i].ex1=ex1,B[i].ex2=ex2,B[i].ex3=ex3;
B[i].maxsize=maxsize,B[i].angle=angle,B[i].maxangle=maxangle,B[i].minangle=minangle,B[i].xr=xr,B[i].ybig=ybig,B[i].ysmall=ysmall,B[i].v=v,B[i].turn=turn;
B[i].staytime=staytime,B[i].num=num,B[i].source=source;
}//回复 dd
}
if(bl>br) bl=br=0,memset(B,0,sizeof(B));
}
void Scissor(){
if(Stx!=0&&Svx>=0) Svx=max(Svx/2+Stx/10,Svx+Stx/20);
else if(Stx!=0&&Svx<0) Svx*=-1,Stx*=-1,Svx=max(Svx/2+Stx/10,Svx+Stx/20),Svx*=-1;
else Svx*=0.9;
if(Sty!=0&&Svy>=0) Svy=max(Svy/2+Sty/10,Svy+Sty/20);
else if(Sty!=0&&Svy<0) Svy*=-1,Sty*=-1,Svy=max(Svy/2+Sty/10,Svy+Sty/20),Svy*=-1;
else Svy*=0.9;
Svx=max(-Svmax,min(Svmax,Svx));Svy=max(-Svmax,min(Svmax,Svy));
Sx+=Svx*1.8,Sy+=Svy*1.8;
Srmax=fmin(1+1.7*sqrt((Svx*Svx)+(Svy*Svy)),2+sqrt((Svx*Svx)+(Svy*Svy)));
if(Sx<1) Sx=1,Svx*=-0.6;
if(Sx>39) Sx=39,Svx*=-0.6;
if(Sy<1) Sy=1,Svy*=-0.6;
if(Sy>80) Sy=80,Svy*=-0.6;
Sr=fmax(0,Sr-0.03);//摩擦
Rock_Circle(Sx,Sy,1+Sr,1,3,0,-2);
}
void Thunder_step(int x0,int y0,float l,int tx,int ty){
int tt=tx+ty*4,e=0;
for(register float i=X-3;i<=X+1;i++) for(register float j=Y-8;j<=Y+8;j++) C(i,j);
if(X<=1||X>=39||Y<=1||Y>=80) e=1;
X+=l*tx;Y+=2*l*ty;unkillT=2;
if((X<1||X>39||Y<1||Y>80)&&e==1) {X=x0,Y=y0;return;}
if(Thunder>0&&tt!=ThunderTurn&&tt!=0) Thunder--,ThunderTurn=tt;
X=max(min((int)X,39),1),Y=max(min((int)Y,80),1);
Rock_line(x0,y0,X,Y,-2);
}
void Crab_Attack(int x,int y,int a){
br++;
B[br].w=9;
B[br].t=0;B[br].l=1;
B[br].x=x;
B[br].y=y;
B[br].ex1=a;
}
void Start_level(){level=1;
system("cls");
Slow(" Ready ?! .................. Start ! ",50);
memset(B,0,sizeof(B));memset(m,0,sizeof(m));memset(n,0,sizeof(n));memset(s,0,sizeof(s));
bl=br=0;
X=20,Y=70;
T=0;Life=1;Blood=Bloodmax;unkillTmax=2;Tempty=1000;
int an,An,kill,Stop;Turnx=1;Anc=Anv=Anb=unkillT=0;
while(Life==1&&Lev<10)
{
T++;an=0;if(End>0) End--;
Sleep_1=Sleep_2=0;
if(GetAsyncKeyState(VK_UP)&0x8000) Turnx=1,an=1;
else if(GetAsyncKeyState(VK_DOWN)&0x8000) Turnx=2,an=1;
else Turnx=0;
if(GetAsyncKeyState(VK_RIGHT)&0x8000) Turny=3,an=1;
else if(GetAsyncKeyState(VK_LEFT)&0x8000) Turny=4,an=1;
else Turny=0;
if(an==1) An++;if(an==0&&An>0) An=0,Turnx=Turny=0,an=1;
if(people==1) { if(GetAsyncKeyState(67)&0x8000) {if(Anc==0) Anc=1;Anc=min(9.9,Anc+0.05);}else{if(Anc<0) Anc+=0.02;if(Anc>-0.5&&Anc<0.5) Anc=0,Setpos(X-2,Y/2-2),printf(" ");if(Anc>0) {int cy=Turny;if(Turnx==0&&Turny==0) cy=3;put_Bullet(X,Y,D[0][Turnx]*(Anc+2),D[1][cy]*(Anc+2),-2);Anc=cMin;}}
if(GetAsyncKeyState(86)&0x8000) {if(Anv==0) Anv=1;Anv=min(9.9,Anv+0.05);}else{if(Anv<0) Anv+=0.02;if(Anv>-0.5&&Anv<0.5) Anv=0,Setpos(X-2,Y/2),printf(" ");if(Anv>0) {Put_Round_Bullet(1,(int)(20+Anv));Anv=vMin;}}
if(GetAsyncKeyState(66)&0x8000) {if(Anb==0) Anb=1;Anb=min(9.9,Anb+0.05);}else{if(Anb<0) Anb+=0.02;if(Anb>-0.5&&Anb<0.5) Anb=0,Setpos(X-2,Y/2+2),printf(" ");if(Anb>0) {unkillT=5;int nb=(int)(Anb*3);Circle_bomb(X,Y,(nb+3),rand()%(nb+3),Anc*0.1+2,0,-2);Anb=bMin;}}
}
if(people==2) {if(GetAsyncKeyState(87)&0x8000) Stx=-1;else if(GetAsyncKeyState(83)&0x8000) Stx=1;else Stx=0;if(GetAsyncKeyState(68)&0x8000) Sty=1;else if(GetAsyncKeyState(65)&0x8000) Sty=-1;else Sty=0;
if((GetAsyncKeyState(90)&0x8000)||(GetAsyncKeyState(88)&0x8000)) Sr=min(Sr+1,Srmax);//转速 X
Scissor();
}
if(people==3) {
if(GetAsyncKeyState(86)&0x8000) {if(Anv==0) Anv=1;Anv=min(9.9,Anv+0.05);}else{if(Anv<0) Anv+=0.02;if(Anv>-0.5&&Anv<0.5) Anv=0,Setpos(X-2,Y/2),printf(" ");if(Anv>0) {BeanBoo=8;Anv=vMin;}}
if(GetAsyncKeyState(66)&0x8000) {if(Anb==0) Anb=1;Anb=min(9.9,Anb+0.05);}else{if(Anb<0) Anb+=0.02;if(Anb>-0.5&&Anb<0.5) Anb=0,Setpos(X-2,Y/2+2),printf(" ");if(Anb>0) {BeanBoom=30;Anb=bMin;}}
if(BeanBoom>0) Put_brouce_Bullet(3,0,0,0,0,0),BeanBoom--;
if(BeanBoo>0) BeanBoo--;if(BeanBoo%6==1) Put_brouce_Bullet(2,0,0,0,0,0);
if(Bean>0) Bean--;if(Bean<=0) Put_brouce_Bullet(1,0,0,0,0,0),Bean=20;
}
if(people==4) {Sleep_3=0;
if((GetAsyncKeyState(67)&0x8000)||(GetAsyncKeyState(86)&0x8000)){if(Anc==0) Anc=1;Anc=min(9.9,Anc+0.05);
if(Anc>0&&Sleep_3<=2) {Sleep_3++;put_Bullet(X,Y,-3+rand()%60/10,-4-rand()%10/20,-4);Anc=0;if(TimeStop==0) Anc=cMin;}}else{if(Anc<0) Anc+=0.02;if(Anc>-0.5&&Anc<0.5) Anc=0,Setpos(X-2,Y/2-2),printf(" ");}
if(GetAsyncKeyState(66)&0x8000) {if(Anb==0) Anb=1;Anb=min(9.9,Anb+0.05);}else{if(Anb<0) Anb+=0.02;if(Anb>-0.5&&Anb<0.5) Anb=0,Setpos(X-2,Y/2+2),printf(" ");
if(Anb>0) {TimeStop=50;unkillT=50;Anb=bMin;}}if(TimeStop>0) TimeStop--;
}
if(people==5) { if(GetAsyncKeyState(67)&0x8000) {if(Anc==0) Anc=1;Anc=min(9.9,Anc+0.05);}else{if(Anc<0) Anc+=0.02;if(Anc>-0.5&&Anc<0.5) Anc=0,Setpos(X-2,Y/2-2),printf(" ");
if(Anc>0) {int cy=Turny;if(Turnx==0&&Turny==0) cy=4;Thunder_step(X,Y,3*Anc+4,-D[0][Turnx],-D[1][cy]);Anc=cMin;}}
if(GetAsyncKeyState(86)&0x8000) {if(Anv==0) Anv=1;Anv=min(9.9,Anv+0.05);}else{if(Anv<0) Anv+=0.02;if(Anv>-0.5&&Anv<0.5) Anv=0,Setpos(X-2,Y/2),printf(" ");if(Anv>0) {Thunder=6;Anv=vMin;}}
if(GetAsyncKeyState(66)&0x8000) {if(Anb==0) Anb=1;Anb=min(9.9,Anb+0.05);}else{if(Anb<0) Anb+=0.02;if(Anb>-0.5&&Anb<0.5) Anb=0,Setpos(X-2,Y/2+2),printf(" ");if(Anb>0) {ThunderTime=30;Anb=bMin;}}
if(ThunderTime>0) ThunderTime--;if(an==0) ThunderTurn=0;
}
if(people==6) { if(GetAsyncKeyState(67)&0x8000) {if(Anc==0) Anc=1;Anc=min(9.9,Anc+0.05);}else{if(Anc<0) Anc+=0.02;if(Anc>-0.5&&Anc<0.5) Anc=0,Setpos(X-2,Y/2-2),printf(" ");
if(Anc>0) {Crab_Attack(X,Y,1),Anc=cMin;}}
if(GetAsyncKeyState(86)&0x8000) {if(Anv==0) Anv=1;Anv=min(9.9,Anv+0.05);}else{if(Anv<0) Anv+=0.02;if(Anv>-0.5&&Anv<0.5) Anv=0,Setpos(X-2,Y/2),printf(" ");if(Anv>0) {Crab_Attack(1,rand()%59+10,2);Anv=vMin;}}
if(GetAsyncKeyState(66)&0x8000) {if(Anb==0) Anb=1;Anb=min(9.9,Anb+0.05);}else{if(Anb<0) Anb+=0.02;if(Anb>-0.5&&Anb<0.5) Anb=0,Setpos(X-2,Y/2+2),printf(" ");if(Anb>0) {Crab_Attack(X,Y,3);Anb=bMin;}}
Crab=0;}
//操作
if(TimeStop==0) Level_Bullet();
if(TimeStop==0&&Tempty>0) Tempty--;
else if(Tempty==0) Tempty=500,system("cls"),memset(B,0,sizeof(B)),memset(m,0,sizeof(m)),memset(n,0,sizeof(n)),memset(s,0,sizeof(s)),bl=br=0,Hurt(20,40,2);
// //放子弹
Move_bullet();
if(Crab==2) system("cls"),Map(1);
if(an==1||kill==1||T<=2){
if(Thunder!=0||ThunderTime!=0){Thunder_step(X,Y,5,-D[0][Turnx],-D[1][Turny]);}
for(register float i=X-3;i<=X+1;i++) for(register float j=Y-8;j<=Y+8;j++) C(i,j);
if(Turnx==1) X--;if(Turnx==2) X++;if(Turny==3) Y+=2;if(Turny==4) Y-=2;
X=fmax(fmin(X,39),1),Y=fmax(fmin(Y,80),1);//你的位置更新
if(TimeStop>0) Color(1+rand()%5);else if(unkillT>0) Color(8);else Color(1);
if(Turnx==1||(Turnx==0&&Turny==0)) {Setpos(X-1,Y/2.0),printf("o"),Setpos(X,Y/2.0-0.5),printf("/+\\"),Setpos(X+1,Y/2.0);if(An%2==0) printf("A");else printf("H");}
else if(Turnx==2) {Setpos(X-1,Y/2.0),printf("o"),Setpos(X,Y/2.0-0.5),printf("\\+/"),Setpos(X+1,Y/2.0);if(An%2==0) printf("A");else printf("H");}
else if(Turny==3) {Setpos(X-1,Y/2.0+0.5),printf("o"),Setpos(X,Y/2.0-0.5),printf("-+"),Setpos(X+1,Y/2.0-0.5);if(An%2==0) printf("/>");else printf("v|");}
else if(Turny==4) {Setpos(X-1,Y/2.0-0.5),printf("o"),Setpos(X,Y/2.0),printf("+-"),Setpos(X+1,Y/2.0);if(An%2==0) printf("<\\");else printf("|v");}
}
if(skillC==1&&Anc!=0&&Crab==0) Color(1),Setpos(X-2,Y/2-2),printf("C%0.1f ",Anc);
if(ThunderTime>0) Color(1+rand()%2*4),Setpos(X-2,Y/2),printf("%d ",ThunderTime);
else if(Thunder>0) Color(1+rand()%2*4),Setpos(X-2,Y/2),printf("%d ",Thunder);
else if(skillV==1&&Anv!=0&&Y<=76&&Crab==0) Color(2),Setpos(X-2,Y/2),printf("V%0.1f ",Anv);
if(TimeStop>0) Color(1+rand()%5),Setpos(X-2,Y/2+2),printf("%d ",TimeStop);
else if(skillB==1&&Anb!=0&&Y<=73&&Crab==0) Color(5),Setpos(X-2,Y/2+2),printf("B%0.1f ",Anb);
if(T%15==0) Blood=min(Blood+1,Bloodmax);
if(unkillT<=0) for(register int i=0;i<=4;i++) if(n[(int)X+D[0][i]][(int)Y+D[1][i]]>=1) {Blood-=Attack,kill=1;Hurt(X,Y,1);unkillT=unkillTmax;}
if(unkillT>0) unkillT--;
if(EXP>EXPmax) Lev++,EXP=0,Blood*=1.4,Bloodmax*=1.1,EXPmax*=1.5,speed*=0.95,Attack*=1.1;
Setpos(-1,1),Color(0),printf("T: %d ",T);
Setpos(-1,5),printf("Level: %d ",Lev);
Setpos(-1,10),printf("Blood: %d (/%d) ",(int)Blood,(int)Bloodmax);
Setpos(-1,20),printf("EXP: %d (/%d) ",(int)EXP,(int)EXPmax);
Setpos(-1,28),printf("距离清场时间还有 %d ",Tempty);
if(Blood<1) Life=0;
//判定死亡
Map(1);
Sleep(speed);
}
if(Lev>=10) system("color 6E"),Sleep(1000),Win();
else system("color 7F"),Sleep(1000),Die();
}
void Interface(){
system("cls"); Color(5);
Setpos(0,9),printf("EASY GAME 2.0",5);
Setpos(1,3),printf("■■■■ 作者:胎神大大 ■■■");
Setpos(2,3),printf("■ ■");
Setpos(3,3),printf("■■■■ ■ ■■ ■ ■ ■ ■■ ■ ■ ■ ■■");
Setpos(4,3),printf("■ ■■ ■ ■ ■ ■ ■■ ■ ■ ■ ■ ■");
Setpos(5,3),printf("■■■■ ■ ■ ■■ ■ ■■■ ■ ■ ■ ■ ■ ■■■2.0");
Color(0),Setpos(7,3),printf("这是胎神大大连夜赶做出来敷衍你们的极简寒酸主界面......",10);
Color(1),Setpos(11,3),Slow("按 C 修改角色/查看规则,",5);Color(2),Slow(" V 调整速度,",5);Color(-5),Slow(" Y",5);Color(5),Slow(" 开始游戏",5);
Color(3),Setpos(13,3),Slow("注:因为此游戏运行程序较繁琐,容易卡,建议先调整速度!",5);
Color(0),Setpos(28,1),printf(" -----------------------作者:胎神大大的啰嗦 P 话-----------------------\n\n 其实这个游戏的发展空间是很大的,但是无奈胎神大大时间(实力)有限只能几下赶完放出来了,唉其实超级不甘心的……这个程序创造很多实用的,用 C++ 写动画的基础函数,让普通的 C++ 程序也能做出炫酷(大雾)的效果(是我不会用(懒得编)啊啊啊),我会不定期来改 BUG 的,甚至没事干时过来多出几个人物!(像 PVP 啊, BOSS 啊我都超想编的 emm ~) \n 总之好好玩吧, 更 新 不 定 , 敬 请 期 待 !");
}
void Time_check(){
system("cls");
Setpos(-1,1);Slow(" 现在开始速度调整,按 C 加速, V 减速, B 退出",50);
while(1)
{if(kbhit()){char g=_getch();if(g=='c') speed*=0.95;else if(g=='v') speed*=1.05;else if(g=='b') break;}
T++;if(T%2==0) Rand_put_Bullet();
Setpos(-1,0),Color(0),printf("Speed: %0.3f ",speed);Map(1);Move_bullet();Sleep(speed);}
Interface();
}
void Rules(){
system("cls");
Setpos(1,1),Slow("选择你的角色! ",10);
Setpos(3,1),Slow("输入:1.小胎 2.伍六七 3.豌豆 4.DIO 5.善逸 6.Crab_Dave",10);
while(1){
if(kbhit()){char a=_getch();
if(a=='1'){system("cls");
Setpos(1,1),Slow("↑↓←→操作躲避子弹,活下去。",10);
Setpos(3,1),Slow("角色名称:小胎",10);
Setpos(5,1),Slow("角色编号:1",10);people=1;
Setpos(7,1),Slow("技能:",10);
Color(1),Setpos(9,1),Slow("C :遁之子弹(走路时反向发射,冷却时间:快) ",10);skillC=1;cMin=-1;
Color(2),Setpos(11,1),Slow("V :护体神盾(有几率反弹子弹!冷却时间:中)",10);skillV=1;vMin=-5;
Color(5),Setpos(13,1),Slow("B :元气烟花(无敌升级清场神器!冷却时间:慢)",10);skillB=1;bMin=-9;
Setpos(15,1),Slow("所有技能,按的时间越久,威力越强!",10);break;}
else if(a=='2'){system("cls");
Setpos(1,1),Slow("↑↓←→操作躲避子弹,活下去。",10);
Setpos(3,1),Slow("角色名称:伍六七",10);
Setpos(5,1),Slow("角色编号:2",10);people=2;
Setpos(7,1),Slow("技能:",10);
Color(1),Setpos(9,1),Slow("AWSD (左手)操作剪刀!",10);skillC=0;
Color(2),Setpos(11,1),Slow("Z或X :提升转速,加大范围!",10);skillV=0;
Color(5),Setpos(13,1),Slow("速度越快,最大范围越大!",10);skillB=0;break;}
else if(a=='3'){system("cls");
Setpos(1,1),Slow("↑↓←→操作躲避子弹,活下去。",10);
Setpos(3,1),Slow("角色名称:豌豆",10);
Setpos(5,1),Slow("角色编号:3",10);people=3;
Setpos(7,1),Slow("技能:",10);
Color(1),Setpos(9,1),Slow("被动 :发射无穿透性的豌豆",10);skillC=0;
Color(2),Setpos(11,1),Slow("V :自动发球机(连续八方向发射豌豆!冷却时间:中)",10);skillV=1;vMin=-4;
Color(5),Setpos(13,1),Slow("B :能量豆(你懂得,无敌升级清场神器!冷却时间:慢)",10);skillB=1;bMin=-6;break;}
else if(a=='4'){system("cls");
Setpos(1,1),Slow("↑↓←→操作躲避子弹,活下去。",10);
Setpos(3,1),Slow("角色名称:DIO",10);
Setpos(5,1),Slow("角色编号:4",10);people=4;
Setpos(7,1),Slow("技能:",10);
Color(1),Setpos(9,1),Slow("C或V :木大直拳(冷却时间:快,时停中极快)",10);skillC=1;cMin=-0.6;
Color(5),Setpos(13,1),Slow("B :砸瓦鲁多(你懂得!冷却时间:慢)",10);skillB=1;bMin=-8;break;}
else if(a=='5'){system("cls");
Setpos(1,1),Slow("↑↓←→操作躲避子弹,活下去。",10);
Setpos(3,1),Slow("角色名称:善逸",10);
Setpos(5,1),Slow("角色编号:5",10);people=5;
Setpos(7,1),Slow("技能:",10);
Color(1),Setpos(9,1),Slow("C :雷霆一步(按得越久冲的越远!冷却时间:快)",10);skillC=1;cMin=-1;
Color(2),Setpos(11,1),Slow("V :六连(获得六次瞬移机会!冷却时间:中)",10);skillV=1;vMin=-4;
Color(5),Setpos(13,1),Slow("B :化雷(短时获得无限瞬移机会!冷却时间:慢)",10);skillB=1;bMin=-6;break;}
else if(a=='6'){system("cls");
Setpos(1,1),Slow("↑↓←→操作躲避子弹,活下去。",10);
Setpos(3,1),Slow("角色名称:Crab_Dave",10);
Setpos(5,1),Slow("角色编号:6",10);people=6;
Setpos(7,1),Slow("技能:",10);
Color(1),Setpos(9,1),Slow("C :概率波(用后就知道了hhh~!冷却时间:中)",10);skillC=1;cMin=-3;
Color(2),Setpos(11,1),Slow("V :瞬闪柱(贯穿全场的攻击!冷却时间:中)",10);skillV=1;vMin=-5;
Color(5),Setpos(13,1),Slow("B :波函动(化为波,短时获得无限瞬移机会!冷却时间:慢)",10);skillB=1;bMin=-8;
Setpos(15,1),Slow("一直想编一个攻击全看脸的角色呢hhh~",10);break;}
}}
Color(5),Setpos(17,1),Slow("所有技能,击中后会增加 EXP ,EXP 满后可以升级!",10);
Setpos(19,1),Slow("到达 10 级 即可通关!(好没创意啊,你的 EXP 可以保留至下一局)",10);
Setpos(21,1),system("pause");
}
int main()
{
system("mode con cols=82 lines=44");
CONSOLE_CURSOR_INFO cursor_info={1,0};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
srand((unsigned)time(NULL));Color(0);
Rules();
sxs: Interface();
while(1) if(kbhit()){
char g=_getch();
if(g=='c') {Rules();Interface();}
else if(g=='v') {Time_check();Interface();}
else if(g=='y') {
Lev=1;Blood=Bloodmax=100;EXPmax=30,EXP=0;Start_level();
goto sxs;
}
}
return 0;
}
<2020> 忍者必须胎
#include<bits/stdc++.h>
#include<windows.h>
#include<stdio.h>
#include<conio.h>
#include<time.h>
#define Nor if(B[b].x<5) B[b].x=5;
#define Out1 Bx1-Bvx1<=6||Bx1-Bvx1>=28||By1-Bvy1<=7||By1-Bvy1>=27
#define Out2 Bx2-Bvx2<=6||Bx2-Bvx2>=28||By2-Bvy2<=7||By2-Bvy2>=27
#define Chang1 {Bwhat1=0;Bvx1=Bvy1=0;memset(Bgo1,0,sizeof(Bgo1));}
#define Chang2 {Bwhat2=0;Bvx2=Bvy2=0;memset(Bgo2,0,sizeof(Bgo2));}
#define Chang3 {Bwhat3=0;Bvx3=Bvy3=0;memset(Bgo3,0,sizeof(Bgo3));}
using namespace std;
int ti(float a) {return ((int)(a*10+5))/10;}
void Setpos(float x,float y){COORD pos;pos.X=ti(y*4)/2;pos.Y=ti(x);SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}
void Color(int a){if(a==0) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);if(a==1) 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==8) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);if(a==9) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_GREEN|BACKGROUND_BLUE);if(a==10) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_BLUE);if(a==11) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE);if(a==12) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN);if(a==13) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY);if(a==14) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN|FOREGROUND_BLUE);}
int Blomax,Ren,Exp,Expmax,Lv,Lvl,Ice,Drug,ar1,ar2,Tar1,Tar2,bl,br,Win,T,Tb,Sy,Up,Upt,Down,u1,u2,Kill,Killb,L,Ll[4],Li,D,Gd[10],Biao,Fire,Fir,fir[4],Water,Thun,Wind,Magne,I[20][2],ib,Dis,Disb,Dis1,Disb1,Boss,Bblo,Bblomax,Bwhat1,Bwhat2,Bwhat3,Bgo1[10],Bgo2[10],Bgo3[10],Bbr,Bbl,Bl[4];
float X,Y,Vx,Vy,Ding,Blo,Hui,Bx1,By1,Bx2,By2,Bx3,By3,Bvx1,Bvy1,Bvx2,Bvy2,Bvx3,Bvy3,Bway[1001][2];
struct bullet{float x,y,vx,vy;int what;int a,t,How;int life;bool kill;}B[100001];
void Map(int a,int b);
void Pan(int a,float x,float y,int b){
float Nox[4],Noy[4];Nox[0]=X,Noy[0]=Y;
if(Down==1&&X==22) Nox[1]=X+1,Noy[1]=Y-0.5,Nox[2]=X-1,Noy[2]=Y-0.5;else if(Down==2) Nox[1]=X+1,Noy[1]=Y-0.5,Nox[2]=-10,Noy[2]=-10;else if(Down==1||X<18) Nox[1]=X-1,Noy[1]=Y-0.5,Nox[2]=-10,Noy[2]=-10;else Nox[1]=X+1,Noy[1]=Y-0.5,Nox[2]=X-1,Noy[2]=Y-0.5;
for(int i=0;i<3;i++){
if(a==-1){if(abs(x-Nox[i])+abs(y-Noy[i])<1.5) {if(B[b].what==-10)Exp+=2;if(B[b].what==-11)Exp+=1;B[b].life=0;if(B[b].life==0&&b==bl) bl++;Map(3,b);break;}}
if(a==-2){if(abs(x-Nox[i])+abs(y-Noy[i])<2.5) {if(B[b].what==-2)Exp+=5,Biao+=5;if(B[b].what==-3)Fire=300,Ice=0,Fir=3;if(B[b].what==-4)Water=200;if(B[b].what==-5){Wind=70;Ding=28.25;Ice=0;if(Y<Ding-1)Vy=5;else Vy=0;if(Up>=1) Vx=-5;if(Down==2) Vx=5;}if(B[b].what==-6){Thun=200;system("color 1F");Sleep(20);system("color 6F");Sleep(10);system("color 0F");}if(B[b].what==-7)Magne=300;if(B[b].what==-8)Ice=0,Drug=0,Blo=fmin((float)Blomax,Blo+20);if(B[b].what==-9)Exp=fmin((float)Expmax,Exp+20);B[b].life=0;if(B[b].life==0&&b==bl) bl++;Map(3,b);break;}}
}if(Wind==0&&Thun==0&&(B[b].kill!=0||Killb>=15||Ren==1&&Killb>0)) return;
for(int i=0;i<3;i++){
if((Wind>=1||Thun>=1)&&abs(x-Nox[i])+abs(y-Noy[i])<2.5) {if(B[b].what<98)Exp+=2;B[b].life=0;Map(3,b);break;}
if(a==1) {if(abs(x-Nox[i])<0.5&&abs(y-Noy[i])<1) {if(B[b].what>=99)Blo-=10;if(B[b].what==14)Blo-=15,Ice=100,B[b].life=0;else if(B[b].what==15)Blo-=20,Ice=0,B[b].life=0;else if(B[b].what==17)Blo-=5,Drug=100,B[b].life=0;else if(B[b].what>=13&&B[b].what<=17)Blo-=10,B[b].life=0;else Blo-=15;B[b].kill=1,Killb=20;Kill=1;Map(3,b);break;}}
if(a==2||a==6||a==8||a==9||a==10||a==11||a==12) {if(abs(x-Nox[i])+abs(y-Noy[i])<1.5) {if(a==2)Blo-=20;else if(a==8)Blo-=10;else Blo-=15;B[b].kill=1,Killb=20;Kill=1;if(a!=2){B[b].life=0;if(B[b].life==0&&b==bl) bl++;Map(3,b);break;}}}
if(a==4) {if((Wind>=1||Thun>=1)&&abs(x-Nox[i])<1.5&&Noy[i]-y<=0&&Noy[i]-y>=-8) {if(B[b].what<98)Exp+=2;B[b].life=0;Map(3,b);break;}if(abs(x-Nox[i])<1&&Noy[i]-y<=0&&Noy[i]-y>=-8) {Blo-=25,B[b].kill=1,Killb=20;Kill=1;Vy=-1;Y-=0.5;break;}}
}
}
void Map(int a,int b){
Color(0);
if(a==-1){
if(Boss==1||Boss==6){if(Bwhat1==5){if(ti(Bx1)==20)Setpos(Bx1,By1),cout<<"==";else Setpos(Bx1,By1),cout<<" ";}else{Setpos(Bx1-1,By1-0.5),cout<<" ";Setpos(Bx1,By1-1),cout<<" ";Setpos(Bx1+1,By1-0.5),cout<<" ";if(abs(ti(Bx1)-20)<=1)Setpos(20,By1-1),cout<<"======";}}
if(Boss==2||Boss==6){Setpos(Bx2-1,By2-1);cout<<" ";Setpos(Bx2,By2-1);cout<<" ";Setpos(Bx2+1,By2-1),cout<<" ";Color(0);if(abs(ti(Bx2)-20)<=1)Setpos(20,By2-1),cout<<"======";}
if(Boss==3||Boss==6){Setpos(Bx3-1,By3-0.5);cout<<" ";Setpos(Bx3,By3);cout<<" ";Setpos(Bx3+1,By3-1),cout<<" ";Color(0);if(abs(ti(Bx3)-20)<=1)Setpos(20,By3-1),cout<<"=======";}
if(X<0)return;if(X>=17&&X<=19){Setpos(X-1,Y);cout<<" ";Setpos(X,Y-1);cout<<" ";Setpos(X+1,Y-1),cout<<" ";}else if(X<=23&&X>=21){Setpos(X+1,Y);cout<<" ";Setpos(X,Y-1);cout<<" ";Setpos(X-1,Y-1),cout<<" ";}else if(X>23){Setpos(X,Y-1);cout<<" ";Setpos(X-1,Y-0.5),cout<<" ";}else if(X<17&&Upt!=0){Setpos(X,Y-1);cout<<" ";Setpos(X+1,Y-1.5),cout<<" ";}else if(X<17){Setpos(X,Y-1);cout<<" ";Setpos(X+1,Y-0.5),cout<<" ";}if(Thun>0){Setpos(X-2,Y-1),cout<<" ";Setpos(X+2,Y-1),cout<<" ";Setpos(X,Y+2),cout<<" ";Setpos(X,Y-2.5),cout<<" ";Setpos(X-1,Y+1),cout<<" ";Setpos(X+1,Y+1),cout<<" ";Setpos(X-1,Y-2),cout<<" ";Setpos(X+1,Y-2),cout<<" ";Setpos(20,Y-2.5),cout<<"============";}if(Wind!=0){Setpos(X+1,Y-5);cout<<" ";Setpos(X,Y-5);cout<<" ";Setpos(X-1,Y-5);cout<<" ";Setpos(20,Y-5),cout<<"========";}if(Water!=0){Setpos(X,Y-4);cout<<" ";Setpos(X+2,Y-3.5);cout<<" ";Setpos(X-2,Y-3.5);cout<<" ";Setpos(X+1,Y-3.5);cout<<" ";Setpos(X-1,Y-3.5);cout<<" ";Setpos(20,Y-5),cout<<"========";}if(Fire!=0){Setpos(X,Y+1),cout<<" ";Setpos(X+1,Y),cout<<" ";Setpos(X-1,Y-1),cout<<" ";Setpos(20,Y-1);cout<<"======";}
}
if(a==0){
if(Boss==1||Boss==6){if(Bwhat1==5)Color(5),Setpos(Bx1,By1),cout<<"█",Color(0);else if(Bwhat1==4&&Bgo1[1]>6&&Bgo1[1]<11)Color(4),Setpos(Bgo1[5]-1,Bgo1[6]),cout<<"︻",Setpos(Bgo1[5],Bgo1[6]-1),cout<<"【",Setpos(Bgo1[5],Bgo1[6]+1),cout<<"】",Setpos(Bgo1[5]+1,Bgo1[6]),cout<<"︼",Color(0);else{Setpos(Bx1-1,By1-0.5),Color(0),cout<<"●●";Setpos(Bx1,By1-1);if(Bwhat1==2&&Bgo1[1]<=5)Color(1);else if(Bwhat1==3&&Bgo1[1]<=5)Color(5);else if(Bwhat1==6&&Bgo1[1]<=5)Color(8); else Color(4);if(Bwhat1==4) Setpos(Bx1,By1-0.5),cout<<"██(";else cout<<")██(";Setpos(Bx1+1,By1-0.5),cout<<"……";Color(0);}}
if(Boss==2||Boss==6){Setpos(Bx2-1,By2-1);Color(0),cout<<"\\ ";Color(0);cout<<"●";Setpos(Bx2,By2-1);Color(3);cout<<"◥";Color(5),cout<<"JJJ";Color(0),cout<<">";Color(3);Setpos(Bx2+1,By2-1),cout<<"◢█◣";Color(0);}
if(Boss==3||Boss==6){Setpos(Bx3-1,By3-0.5);if(Bwhat3==3||Bwhat3==9) Color(1);else if(Bwhat3==4||Bwhat3==10) Color(4);else if(Bwhat3==5||Bwhat3==11) Color(5);if(Bwhat3==11)cout<<' ';else if(Bwhat3==6) Color(3);else Color(2);cout<<"●-";Setpos(Bx3,By3);if(Bwhat3==11)cout<<"/";else cout<<"┃";Color(0);Setpos(Bx3+1,By3-1),cout<<"●●●";}
if(X<0)return;if(Ren==2) Color(12);if(Ren==3) Color(1);if(Ren==4) Color(3);if(Ren==5) Color(4);if(Ren==6) Color(2);if(Drug!=0&&T%5!=0) Color(11);if(Drug!=0&&T%5==0) Color(11);if(Ice!=0) Color(6);if(b==1) Color(8);if(Li!=0) Color(5);if(Ren==1&&Killb>0&&T%4<2) Color(13);if(Wind>0&&T%4<=1) Color(1);if(Wind>0&&T%4>=2) Color(0);if(Thun>0&&T%4<=1) Color(1);if(Thun>0&&T%4>=2) Color(6);
if(X>=17&&X<=19){Setpos(X-1,Y);cout<<"●";Setpos(X,Y-1);cout<<"━/";if(T%10<3) Setpos(X+1,Y-1),cout<<"┛╲";else if(T%10<6) Setpos(X+1,Y-1),cout<<"┦ ";else Setpos(X+1,Y-1),cout<<"╯>";if(Wind>0&&T%3==0) Setpos(X+1,Y-1),cout<<"┛╲";else if(Wind>0&&T%3==1) Setpos(X+1,Y-1),cout<<"┦ ";else if(Wind>0&&T%3==2)Setpos(X+1,Y-1),cout<<"╯>";}else if(X<=23&&X>=21){Setpos(X+1,Y);cout<<"●";Setpos(X,Y-1);cout<<"━\\";if(T%10<3) Setpos(X-1,Y-1),cout<<"┓╱";else if(T%10<6) Setpos(X-1,Y-1),cout<<"┪ ";else Setpos(X-1,Y-1),cout<<"╮>";if(Wind>0&&T%3==0) Setpos(X-1,Y-1),cout<<"┓╱";else if(Wind>0&&T%3==1) Setpos(X-1,Y-1),cout<<"┪ ";else if(Wind>0&&T%3==2)Setpos(X-1,Y-1),cout<<"╮>";}else if(X>23){Setpos(X,Y-1);cout<<"━ ●";Setpos(X-1,Y-0.5),cout<<"│>";}else if(X<17&&Upt!=0){Setpos(X,Y-1);cout<<"━ ●";Setpos(X+1,Y-1.5),cout<<"╱ >";}else if(X<17){Setpos(X,Y-1);cout<<"━ ●";Setpos(X+1,Y-0.5),cout<<"│>";}if(Thun>0){Setpos(X-2,Y-1),cout<<"▄▄";Setpos(X+2,Y-1),cout<<"▄▄";Setpos(X,Y+2),cout<<"▌";Setpos(X,Y-2.5),cout<<"▌";Setpos(X-1,Y+1),cout<<"█";Setpos(X+1,Y+1),cout<<"█";Setpos(X-1,Y-2),cout<<"█";Setpos(X+1,Y-2),cout<<"█";}if(Magne>0&&T%7<2)Setpos(X,Y),Color(5),cout<<"★";if(Wind>1){if(T%6<2)Color(1);else Color(0);if(T%8<=1){Setpos(X+1,Y-5);cout<<"---- --";Setpos(X,Y-5);cout<<"- --- -";Setpos(X-1,Y-5);cout<<"--- - --";}else if(T%8<=3){Setpos(X+1,Y-5);cout<<"------ ";Setpos(X,Y-5);cout<<" -- ---";Setpos(X-1,Y-5);cout<<"----- - ";}else if(T%8<=5){Setpos(X+1,Y-5);cout<<" ------";Setpos(X,Y-5);cout<<"-- -- -";Setpos(X-1,Y-5);cout<<"- ----- ";}else if(T%8<=7){Setpos(X+1,Y-5);cout<<"-- ----";Setpos(X,Y-5);cout<<" --- -- ";Setpos(X-1,Y-5);cout<<"- - ----";}}if(Water!=0){Color(1);if(T%20<5){Setpos(X+2,Y-3);cout<<"■";Setpos(X+1,Y-3.5);cout<<"■";Setpos(X-1,Y-2.5);cout<<"■";Setpos(X-2,Y-3);cout<<"■";}else if(T%20<10||T%20>=15){Setpos(X+2,Y-3);cout<<"■";Setpos(X,Y-4);cout<<"■■";Setpos(X-2,Y-3); cout<<"■";}else if(T%20<15){Setpos(X+2,Y-3.5);cout<<"■";Setpos(X+1,Y-3);cout<<"■";Setpos(X-1,Y-3.5);cout<<"■";Setpos(X-2,Y-3);cout<<"■";}}if(Fire!=0){if(T%6<3)Color(4);else Color(5);if(Fir>=1)Setpos(X,Y+1),cout<<"●";if(Fir>=2)Setpos(X+1,Y),cout<<"●";if(Fir>=3)Setpos(X-1,Y-1),cout<<"●";}
}
if(a==1||a==3){
if(B[b].what==1){Nor;Setpos(B[b].x,B[b].y-1);if(ti(B[b].x)==20)cout<<"======";else cout<<" ";if(B[b].life!=0){B[b].y-=B[b].vy;Setpos(B[b].x,B[b].y);if(B[b].How<=1) Color(13);else Color(4);cout<<"●";if(a==1) Pan(1,B[b].x,B[b].y,b);}}
if(B[b].what==2){Nor;Setpos(B[b].x-1,B[b].y-1);if(ti(B[b].x-1)==20)cout<<"======";else cout<<" ";Setpos(B[b].x,B[b].y-1);if(ti(B[b].x)==20)cout<<"======";else cout<<" ";Setpos(B[b].x+1,B[b].y-1);if(ti(B[b].x+1)==20)cout<<"======";else cout<<" ";if(B[b].life!=0){B[b].y-=B[b].vy;Setpos(B[b].x,B[b].y);Color(5);if(B[b].How==0){Setpos(B[b].x-1,B[b].y),cout<<"↑";Setpos(B[b].x,B[b].y-1),cout<<"←┼ →";Setpos(B[b].x+1,B[b].y),cout<<"↓";}else if(B[b].How==1){Setpos(B[b].x-1,B[b].y-1),cout<<"↖ ↗";Setpos(B[b].x,B[b].y),cout<<"╳";Setpos(B[b].x+1,B[b].y-1),cout<<"↙ ↘";} if(a==1) Pan(2,B[b].x,B[b].y,b);}}
if(B[b].what==3||B[b].what==5){Nor;Setpos(B[b].x,B[b].y);if(ti(B[b].x)==20)cout<<"==";else cout<<" ";if(B[b].life!=0){B[b].y-=B[b].vy;B[b].x-=B[b].vx;Setpos(B[b].x,B[b].y);if(B[b].How==1) Color(5);else Color(4);cout<<"◎";}}
if(B[b].what==4){Nor;Setpos(B[b].x,fmax((float)0,B[b].y-8));if(ti(B[b].x)==20){for(int i=max(0,(int)B[b].y-8);i<=B[b].y;i++)cout<<"==";}else {for(int i=max(0,(int)B[b].y-8);i<=B[b].y;i++)cout<<" ";}if(B[b].life!=0){B[b].y-=B[b].vy;Setpos(B[b].x,fmax((float)0,B[b].y-8));Color(6); for(int i=max(0,(int)B[b].y-8);i<=B[b].y;i++)cout<<"═"; if(a==1) Pan(4,B[b].x,B[b].y,b);}}
if(B[b].what==6||B[b].what==8||B[b].what==9){Nor;Setpos(B[b].x-1,B[b].y);if(ti(B[b].x)-1==20)cout<<"==";else cout<<" ";Setpos(B[b].x+1,B[b].y);if(ti(B[b].x)+1==20)cout<<"==";else cout<<" ";Setpos(B[b].x,B[b].y-1);if(ti(B[b].x)==20)cout<<"======";else cout<<" ";if(B[b].life!=0){B[b].y-=B[b].vy;B[b].x-=B[b].vx;Setpos(B[b].x,B[b].y-1);if(B[b].what==6){if(B[b].How<=1) Color(1); else Color(6);}if(B[b].what==9){if(B[b].How<=1) Color(4); else Color(8);}if(B[b].what==8)Color(5);Setpos(B[b].x-1,B[b].y);cout<<"︹";Setpos(B[b].x+1,B[b].y);cout<<"︺";Setpos(B[b].x,B[b].y-1);if(B[b].How%2==1) cout<<"〔●〕"; else cout<<"﹝○﹞"; if(a==1) Pan(6,B[b].x,B[b].y,b);}}
if(B[b].what==7){Nor;Setpos(B[b].x,B[b].y);if(B[b].How<0) for(int i=19;i>=20+B[b].How;i--) {Setpos(i,B[b].y);cout<<" ";}if(B[b].How>0) for(int i=21;i<=20+B[b].How;i++) {Setpos(i,B[b].y);cout<<" ";}if(B[b].life!=0){B[b].y-=B[b].vy;if(B[b].How<0) for(int i=19;i>=20+B[b].How;i--) {Setpos(i,B[b].y);cout<<"║"; if(a==1) Pan(7,i,B[b].y,b);}if(B[b].How>0) for(int i=21;i<=20+B[b].How;i++) {Setpos(i,B[b].y);cout<<"║"; if(a==1) Pan(7,i,B[b].y,b);}}}
if(B[b].what==10||B[b].what==11||B[b].what==12){Nor;Setpos(B[b].x,B[b].y);if(ti(B[b].x)==20)cout<<"==";else cout<<" ";if(B[b].life!=0){B[b].x-=B[b].vx;B[b].y-=B[b].vy;if(B[b].How==1){B[b].vy-=0.2;}else B[b].vx-=0.35;if(B[b].x>=25) B[b].x=25,B[b].vx*=-0.8;if(B[b].what==11&&B[b].y<=1) B[b].y=1,B[b].vy*=-1;if(B[b].what==12&&B[b].y<=1) B[b].y=1,B[b].vx=0,B[b].vy=-0.5,B[b].How=1;Setpos(B[b].x,B[b].y);if(B[b].what==11)Color(1);else if(B[b].what==12)Color(5);else Color(0);if(B[b].t%4<2)cout<<"▃";else cout<<"▍";if(a==1) Pan(B[b].what,B[b].x,B[b].y,b);}}
if(B[b].what>=13&&B[b].what<=17){Nor;Setpos(B[b].x,B[b].y);if(ti(B[b].x)==20)cout<<"====";else cout<<" ";if(B[b].life!=0){B[b].x-=B[b].vx;B[b].y-=B[b].vy;Setpos(B[b].x,B[b].y);if(B[b].what==14) Color(1);else if(B[b].what==15) Color(4);else if(B[b].what==16) Color(5);else if(B[b].what==17) Color(3);else Color(2);cout<<"●";if(B[b].what==14)cout<<"*";if(B[b].what==15)cout<<"";if(B[b].what==16)cout<<"<";if(B[b].what==17)cout<<"X";} if(a==1) Pan(1,B[b].x,B[b].y,b);}
if(B[b].what==98&&B[b].life!=0){B[b].y-=B[b].vy;Setpos(B[b].x,B[b].y);if(ti(B[b].x==20))cout<<"==";else cout<<" ";if(B[b].y<=3)B[b].life=0;}
if(B[b].what>=99){if(B[b].y<=3)B[b].life=0;if(B[b].life!=0){B[b].y-=B[b].vy;Setpos(B[b].x,B[b].y);Color(5);if(B[b].what==99)cout<<"█";if(B[b].what>=100&&B[b].what<200){if(B[b].what%5==0)cout<<"胎";if(B[b].what%5==1)cout<<"神";if(B[b].what%5==2)cout<<"太";if(B[b].what%5==3)cout<<"帅";if(B[b].what%5==4)cout<<"了";}if(B[b].what>=200&&B[b].what<300){if(B[b].what%6==0)cout<<"神";if(B[b].what%6==1)cout<<"级";if(B[b].what%6==2)cout<<"胎";if(B[b].what%6==3)cout<<"神";if(B[b].what%6==4)cout<<"之";if(B[b].what%6==5)cout<<"光";}if(B[b].what>=300&&B[b].what<400){if(B[b].what%8==0)cout<<"颤";if(B[b].what%8==1)cout<<"抖";if(B[b].what%8==2)cout<<"吧";if(B[b].what%8==3)cout<<"无";if(B[b].what%8==4)cout<<"能";if(B[b].what%8==5)cout<<"的";if(B[b].what%8==6)cout<<"人";if(B[b].what%8==7)cout<<"类";}if(B[b].what>=400&&B[b].what<500){if(B[b].what%8==0)cout<<"还";if(B[b].what%8==1)cout<<"不";if(B[b].what%8==2)cout<<"快";if(B[b].what%8==3)cout<<"跪";if(B[b].what%8==4)cout<<"倒";if(B[b].what%8==5)cout<<"在";if(B[b].what%8==6)cout<<"朕";if(B[b].what%8==7)cout<<"前";}if(B[b].what>=500&&B[b].what<600){if(B[b].what%8==0)cout<<"看";if(B[b].what%8==1)cout<<"懂";if(B[b].what%8==2)cout<<"这";if(B[b].what%8==3)cout<<"句";if(B[b].what%8==4)cout<<"话";if(B[b].what%8==5)cout<<"的";if(B[b].what%8==6)cout<<"是";if(B[b].what%8==7)cout<<"猪";} if(a==1) Pan(1,B[b].x,B[b].y,b);}}
if(B[b].what==-1){Nor;Setpos(B[b].x,B[b].y);if(ti(B[b].x)==20)cout<<"==";else cout<<" ";if(Boss==0) B[b].life=0;else if(((Boss==1&&abs(B[b].x-Bx1)+abs(B[b].y-By1)<1.5)||(Boss==2&&abs(B[b].x-Bx2)+abs(B[b].y-By2)<1.5)||(Boss==3&&abs(B[b].x-Bx3)+abs(B[b].y-By3)<1.5)||(B[b].t==10))&&B[b].life==1) Bblo-=8+Lv*2,B[b].life=0;if(B[b].life!=0){if(Boss==1)B[b].x=B[b].x+(Bx1-B[b].x)/(10-B[b].t)*1.0,B[b].y=B[b].y+(By1-B[b].y)/(10-B[b].t)*1.0;if(Boss==2)B[b].x=B[b].x+(Bx2-B[b].x)/(10-B[b].t)*1.0,B[b].y=B[b].y+(By2-B[b].y)/(10-B[b].t)*1.0;if(Boss==3)B[b].x=B[b].x+(Bx3-B[b].x)/(10-B[b].t)*1.0,B[b].y=B[b].y+(By3-B[b].y)/(10-B[b].t)*1.0;Setpos(B[b].x,B[b].y);Color(7);if(B[b].t%2==0) cout<<"+";else cout<<"×";}}
if(B[b].what<=-2&&B[b].what>=-9){Nor;Setpos(B[b].x-1,B[b].y);if(ti(B[b].x)-1==20)cout<<"==";else cout<<" ";Setpos(B[b].x+1,B[b].y);if(ti(B[b].x)+1==20)cout<<"==";else cout<<" ";Setpos(B[b].x,B[b].y-1);if(ti(B[b].x)==20)cout<<"======";else cout<<" ";if(B[b].life!=0){B[b].y-=B[b].vy;B[b].x-=B[b].vx;if(B[b].what<=-3&&B[b].what>=-7){if(B[b].x<=7)B[b].x=7;if(B[b].x>=28)B[b].x=28;else if(B[b].x>=B[b].a+1&&B[b].How==1)B[b].How=0;else if(B[b].x<=B[b].a-1&&B[b].How==0)B[b].How=1;if(B[b].How==1&&B[b].vx>=-1)B[b].vx-=0.2;if(B[b].How==0&&B[b].vx<=1)B[b].vx+=0.2;}if(B[b].what==-2) Color(3);if(B[b].what==-3) Color(4);if(B[b].what==-4) Color(1);if(B[b].what==-5) Color(0);if(B[b].what==-6) Color(6);if(B[b].what==-7) Color(5);if(B[b].what==-8) Color(2);if(B[b].what==-9) Color(14);if(T%7<=1&&B[b].what==-5)Color(1);else if(T%7<=1)Color(0);Setpos(B[b].x-1,B[b].y);cout<<"︹";Setpos(B[b].x+1,B[b].y);cout<<"︺";Setpos(B[b].x,B[b].y-1);if(B[b].what==-2) cout<<"﹝镖﹞";if(B[b].what==-3) cout<<"﹝火﹞";if(B[b].what==-4) cout<<"﹝水﹞";if(B[b].what==-5) cout<<"﹝风﹞";if(B[b].what==-6) cout<<"﹝雷﹞";if(B[b].what==-7) cout<<"﹝磁﹞";if(B[b].what==-8) cout<<"﹝血﹞";if(B[b].what==-9) cout<<"﹝忍﹞"; if(a==1) Pan(-2,B[b].x,B[b].y,b);}}
if(B[b].what==-11||B[b].what==-12){Nor;Setpos(B[b].x,B[b].y);if(ti(B[b].x)==20)cout<<"==";else cout<<" ";if(B[b].life!=0){if(Magne>0)B[b].How++,B[b].x=B[b].x+(X-B[b].x)/(10-B[b].How)*1.0,B[b].y=B[b].y+(Y-B[b].y)/(10-B[b].How)*1.0;B[b].y-=B[b].vy;Setpos(B[b].x,B[b].y);if(B[b].what==-10) Color(5);if(B[b].what==-11) Color(7);if(T%7<=1)Color(0);cout<<"◆"; if(a==1) Pan(-1,B[b].x,B[b].y,b);}}
if(B[b].what==-13){Nor;Setpos(B[b].x,B[b].y-0.5);if(ti(B[b].x)==20)cout<<"===";else cout<<" ";if(B[b].life!=0){if(B[b].a==13880086){if(Boss==0) B[b].life=0;else if(((Boss==1&&abs(B[b].x-Bx1)+abs(B[b].y-By1)<1.5)||(Boss==2&&abs(B[b].x-Bx2)+abs(B[b].y-By2)<1.5)||(Boss==3&&abs(B[b].x-Bx3)+abs(B[b].y-By3)<1.5)||(B[b].t==5))&&B[b].life==1) Bblo-=8+Lv*2,B[b].life=0;if(B[b].life!=0){if(Boss==1)B[b].x=B[b].x+(Bx1-B[b].x)/(5-B[b].t)*1.0,B[b].y=B[b].y+(By1-B[b].y)/(5-B[b].t)*1.0;if(Boss==2)B[b].x=B[b].x+(Bx2-B[b].x)/(5-B[b].t)*1.0,B[b].y=B[b].y+(By2-B[b].y)/(5-B[b].t)*1.0;if(Boss==3)B[b].x=B[b].x+(Bx3-B[b].x)/(5-B[b].t)*1.0,B[b].y=B[b].y+(By3-B[b].y)/(5-B[b].t)*1.0;}}else{if(B[B[b].a].life==0) B[b].life=0;else if((abs(B[b].x-B[B[b].a].x)+abs(B[b].y-B[B[b].a].y)<1.5||(B[b].t==5))&&B[b].life==1) Exp+=2,B[B[b].a].life=B[b].life=0;if(B[b].life!=0){B[b].x=B[b].x+(B[B[b].a].x-B[b].x)/(5-B[b].t)*1.0,B[b].y=B[b].y+(B[B[b].a].y-B[b].y)/(5-B[b].t)*1.0;}}Setpos(B[b].x,B[b].y-0.5);if(T%6<3)Color(5);else Color(4);cout<<"●";}}
}if(br<bl) {br=-1,bl=0;memset(B,0,sizeof(B));}Color(0);
}
void Move(){
if(X<3) X=3;if(Y<1) Y=1,Vy=0;if(Y>29) Y=29,Vy=0;
if(Ice!=0){X-=Vx/2.0;Y+=Vy/2.0;Vy=fmax(Vy-0.025,(float)0);if(T%6==0&&Up==0&&Y<Ding) Y+=0.25;if(T%6==3&&Up==0&&Y>=Ding) Y-=0.25;if(Up==0&&Y<=Ding-1.25) Vy=0.25;if(Up==0&&Y>=Ding+1.25&&Wind==0) Vy=-0.25;if(Up==0&&Down==0&&Vx>0&&X<=18) Up=0,Down=0,Vx=0,Vy=0,X=18,Setpos(20,Y-2.5),cout<<"==========";else if(Down==2&&X<=22) Up=0,Down=1,Vx=0,Vy=0,X=22,Setpos(20,Y-2.5),cout<<"==========";else if(Up==0&&Down==1&&Vx<0&&X>=22) Up=0,Down=1,Vx=0,Vy=0,X=22,Setpos(20,Y-2.5),cout<<"==========";else if(Up>0&&Down==0&&X>18) Up=0,Vx=0,Vy=0,X=18,Setpos(20,Y-2.5),cout<<"==========";else if(Down==2) Vx+=0.175;else if(Up>0&&Upt==0) Vx-=0.175;else if(Up>0&&Upt>0) {Vx=fmax(Vx-0.125,(float)0);if(Upt==1&&T%2==0)Map(-1,0);if(T%2==0)Upt--;}}
else{X-=Vx;Y+=Vy;Vy=fmax(Vy-0.05,(float)0);if(Wind==0){if(T%6==0&&Up==0&&Y<Ding) Y+=0.5;if(T%6==3&&Up==0&&Y>=Ding) Y-=0.5;}else{if(T%2==0&&Up==0&&Y<Ding) Y+=0.5;if(T%2==1&&Up==0&&Y>=Ding) Y-=0.5;}if(Up==0&&Y<=Ding-1.25) Vy=0.5;if(Up==0&&Y>=Ding+1.25&&Wind==0) Vy=-0.5;if(Up==0&&Down==0&&Vx>0&&X<=18) Up=0,Down=0,Vx=0,Vy=0,X=18,Setpos(20,Y-2.5),cout<<"==========";else if(Down==2&&X<=22) Up=0,Down=1,Vx=0,Vy=0,X=22,Setpos(20,Y-2.5),cout<<"==========";else if(Up==0&&Down==1&&Vx<0&&X>=22) Up=0,Down=1,Vx=0,Vy=0,X=22,Setpos(20,Y-2.5),cout<<"==========";else if(Up>0&&Down==0&&X>18) Up=0,Vx=0,Vy=0,X=18,Setpos(20,Y-2.5),cout<<"==========";else if(Down==2) Vx+=0.35;else if(Up>0&&Upt==0) Vx-=0.35;else if(Up>0&&Upt>0) {Vx=fmax(Vx-0.25,(float)0);if(Upt==1)Map(-1,0); Upt--;}}
for(int i=bl;i<=br;i++){
if(B[i].what<98)if(B[i].x-B[i].vx<=5||B[i].x-B[i].vx>=30||B[i].y-B[i].vy<=0||B[i].y-B[i].vy>=30){B[i].life=0;Map(1,i);}
for(int j=0;j<20;j++)if(B[i].what>0&&B[i].life!=0&&abs(B[i].x-I[j][0])<2&&B[i].y-I[j][1]<=2){Setpos(I[j][0],I[j][1]);if(I[j][0]==20) cout<<"===";else cout<<" ";I[j][0]=I[j][1]=-1;B[i].life=0;Exp+=2;}
if(B[i].t>=100)B[i].life=0;if(B[i].life==0&&i==bl) bl++;
Map(1,i);if(B[i].life==0) continue;
else{B[i].t++;
if(B[i].what==1){if(B[i].y<=25&&B[i].How==0) B[i].vy=0,B[i].How=1;if(B[i].t==30) B[i].y+=1.5,B[i].How=2;if(B[i].t==35) B[i].vy=1.5,B[i].How=3;}
if(B[i].what==2){if(B[i].t%3==0) B[i].How=!B[i].How;}
if(B[i].what==3||B[i].what==5){if(B[i].what==3&&B[i].y<=20) B[i].vy=0;if(B[i].what==5&&B[i].y<=21) B[i].vy=0;if(B[i].t>30&&B[i].t%2==0) B[i].How=!B[i].How;if(B[i].what==5&&B[i].t<=30&&B[i].x<X) B[i].vx=-0.2;else if(B[i].what==5&&B[i].t<=70&&B[i].x>X) B[i].vx=0.2;else B[i].vx=0;if(B[i].t==45){B[i].life=0;br++;B[br].what=4;B[br].x=B[i].x;B[br].y=32;B[br].vy=3;B[br].life=1;}}
if(B[i].what==6||B[i].what==8||B[i].what==9){if(B[i].vx<0.25&&B[i].vy<0.25&&B[i].t>=50){B[i].life=0;if(B[i].life==0&&i==bl) bl++;Map(1,i);break;}if(B[i].t%5==0) B[i].How=rand()%4;if(B[i].what==9){if(B[i].t==7){X9:float xx=(rand()%41)/40.0,yy=(rand()%41)/40.0;if(xx<=0.5&&yy<=0.5) goto X9;for(int j=1;j<=4;j++){br++,B[br].what=9;B[br].t=11;B[br].x=B[i].x,B[br].y=B[i].y,B[br].vx=xx,B[br].vy=yy;if(j%2==0)swap(B[br].vx,B[br].vy),B[br].vy*=-1;if(j<=2)B[br].vx*=-1,B[br].vy*=-1;B[br].life=1;}B[i].life=0;}}if(B[i].what==8){if(B[i].x>X&&B[i].vx<1.2) B[i].vx+=fmax((float)0,0.2-B[i].t/25);if(B[i].x<X&&B[i].vx>-1.2) B[i].vx-=fmax((float)0,0.2-B[i].t/25);if(B[i].y>Y&&B[i].vy<1.2) B[i].vy+=fmax((float)0,0.2-B[i].t/25);if(B[i].y<Y&&B[i].vy>-1.2) B[i].vy-=fmax((float)0,0.2-B[i].t/25);}}
if(B[i].what>=13&&B[i].what<=15&&B[i].How!=0){if(B[i].x==B[i].How)B[i].vx=0,B[i].How=0;}
if(B[i].what==16){if(B[i].x<X&&B[i].vx>=-1) B[i].vx-=0.2;else if(B[i].x>X&&B[i].vx<=1) B[i].vx+=0.2;}
}
if(B[i].life==1&&B[i].a==0&&B[i].what>0){if(B[i].y>Y&&abs(B[i].x-X)<=3&&((B[i].x-X)*(B[i].x-X)+(B[i].y-Y)*(B[i].y-Y))<Dis) Dis=(B[i].x-X)*(B[i].x-X)+(B[i].y-Y)*(B[i].y-Y),Disb=i;else if(((B[i].x-X)*(B[i].x-X)+(B[i].y-Y)*(B[i].y-Y))<Dis1) Dis1=(B[i].x-X)*(B[i].x-X)+(B[i].y-Y)*(B[i].y-Y),Disb1=i;}
}
}
void Guai(int R,int r){
if(R==-1){br++;B[br].what=-1;B[br].x=X+rand()%3-1;B[br].y=Y+rand()%3-1;B[br].life=1;}
if(R<=-2&&R>=-11){br++;B[br].what=R;B[br].x=B[br].a=r;B[br].y=29;if(R<=-3&&R>=-7)B[br].vx=-1;B[br].vy=1;B[br].life=1;}
if(R==0){br++;B[br].what=1;B[br].x=r;B[br].y=29;B[br].vy=1;B[br].life=1;}
if(R==1){br++;B[br].what=2;B[br].x=r;B[br].y=29;B[br].vy=1;B[br].life=1;}
if(R==2||R==3){br++;B[br].what=2*R-1;B[br].x=r;B[br].y=29;B[br].vy=1;B[br].life=1;}
if(R==4){br++;B[br].what=6;if(r<5)r=5;if(r>30)r=30;B[br].x=r;if(r==11||r==25) B[br].y=29-(rand()%20);else B[br].y=29;X4:B[br].vx=(rand()%21-10)/30.0;B[br].vy=(rand()%25)/30.0;if(B[br].vx<=0.8&&B[br].vy<=0.8)goto X4;int rx=rand()%50;if(rx==0) B[br].vx=0;B[br].life=1;}
if(R==5){br++;B[br].How=r;B[br].what=7;if(B[br].How<0) B[br].x=19;if(B[br].How>0) B[br].x=21;B[br].y=29;B[br].vy=1;B[br].life=1;}
}
void CpGuai(int R,float x,float y,float xx,float yy){
if(R==4){br++;B[br].what=6;B[br].x=x;B[br].y=y;B[br].vx=xx;B[br].vy=yy;B[br].life=1;}
if(R==6||R==7||R==8){br++;B[br].what=4+R;B[br].x=x;B[br].y=y;B[br].vx=xx;B[br].vy=yy;B[br].life=1;}
}
void MesGuai(int a,int rr){
int R=rand()%rr,r=-10086;
if(R==0){if(a==1) r=(5+rand()%8)*2;if(a<=3&&a!=1) r=10+rand()%16;if(a==4) r=rand()%75-20;if(a==5) r=2+rand()%4;if(r!=-10086) Guai(a,r);}
}
void NorGuai(int a,int b){
if(a==1) {if(b==1||b==41) Guai(0,15),Guai(0,17),Guai(0,19);if(b==21||b==61) Guai(0,21),Guai(0,23),Guai(0,25);if(b==81) Guai(0,11),Guai(0,13),Guai(0,15),Guai(0,17),Guai(0,19);if(b==101||b==141) Guai(0,17),Guai(0,19),Guai(0,21),Guai(0,23),Guai(0,25);if(b==121) Guai(0,15),Guai(0,17),Guai(0,19),Guai(0,21),Guai(0,23);if(b>=160&&b<=260&&b%10==0) Guai(0,b/10-1);if(b>=270&&b<=370&&b%10==0) Guai(0,52-b/10);if(b>=460&&b<=560&&b%10==0) Guai(0,b/10-37),Guai(0,b/10-36),Guai(0,b/10-35);if(b>=570&&b<=670&&b%10==0) Guai(0,78-b/10),Guai(0,77-b/10),Guai(0,76-b/10);if(b>=760&&b<=960&&b%10==0) Guai(0,b/10-66),Guai(0,b/10-65),Guai(0,103-b/10),Guai(0,104-b/10);if(b>=1000&&b<=1300) MesGuai(0,30-b/50);}
if(a==2) {if(b<=200&&b%30==1) {int r=rand()%4;if(r==1) r=0;for(int i=0;i<4;i++) if(i!=r) Guai(1,i*4+9);}if(b>200&&b<=220&&b%5==1) Guai(1,18);if(b>220&&b<=300&&b%7==1) Guai(1,b/5-26);if(b>350&&b<=370&&b%5==1) Guai(1,22);if(b>370&&b<=450&&b%7==1) Guai(1,96-b/5);if(b==461||b==501||b==541) Guai(1,13),Guai(1,17),Guai(1,21);if(b==481||b==521||b==561) Guai(1,17),Guai(1,21),Guai(1,25);if(b>=561&&b<=861&&b%20==1) Guai(1,b/40+5);if(b>=561&&b<=861&&b%20==11) Guai(1,35-b/40);if(b>=801&&b<=961&&b%15==1) Guai(1,20);if(b>=1000&&b<=1300) MesGuai(1,30-b/50);}
if(a==3) {if(b==1||b==61) Guai(3,15),Guai(2,17),Guai(2,19);if(b==31||b==91) Guai(2,21),Guai(2,23),Guai(3,25);if(b>=120&&b<=220&&b%10==0) Guai(2,b/10+3);if(b>=240&&b<=340&&b%10==0) Guai(2,49-b/10);if(b>=360&&b<=460&&b%20==0) Guai(2,b/10-21),Guai(2,61-b/10);if(b>=480&&b<=580&&b%20==0) Guai(3,b/10-33),Guai(3,73-b/10);if(b>=600&&b<750&&b%30==0) {for(int i=0;i<5;i++) Guai(3,i*3+10);}if(b>=750&&b<830&&b%10==0) if(b<=200&&b%40==1) Guai(2,X);if(b>=830&&b<910&&b%20==0) Guai(2,X);if(b>=910&&b<980&&b%10==0) Guai(2,X);if(b>=1000&&b<=1300) MesGuai(rand()%2+2,40-b/50);}
if(a==4) {if(b==1) CpGuai(4,10,29,-0.4,0.7),CpGuai(4,14,29,-0.2,0.7),CpGuai(4,21,29,0,0.65);if(b==41) CpGuai(4,10,29,-0.2,0.7),CpGuai(4,14,29,-0.1,0.7),CpGuai(4,18,29,0,0.65);if(b==81) CpGuai(4,5,20,-0.4,0.35),CpGuai(4,10,29,-0.4,0.7),CpGuai(4,14,29,-0.2,0.7),CpGuai(4,30,20,0.25,0.4),CpGuai(4,21,29,0,0.65);if(b==121) CpGuai(4,5,20,-0.2,0.35),CpGuai(4,10,29,-0.2,0.7),CpGuai(4,14,29,-0.1,0.7),CpGuai(4,30,20,0.4,0.4),CpGuai(4,18,29,0,0.65);if(b==161) CpGuai(4,10,29,-0.4,0.7),CpGuai(4,14,29,-0.2,0.7),CpGuai(4,21,29,0,0.6),CpGuai(4,10,29,-0.2,0.7),CpGuai(4,14,29,-0.1,0.7),CpGuai(4,18,29,0,0.65);if(b>=200&&b<=500&&b%40==1) {float r=0,rr;for(int i=1;i<=5;i++){X5:rr=0.7+(rand()%5)/10.0;if(rr==r)goto X5;r=rr;CpGuai(4,i*3+7,29,0,0.5+(rand()%50)/80.0);}}if(b>540&&b<=565&&b%5==1) CpGuai(4,5,8,-2,0.2);if(b>590&&b<=615&&b%5==1) CpGuai(4,30,8,1.5,0.2);if(b>640&&b<=665&&b%5==1) CpGuai(4,5,8,-1.5,0.3);if(b>690&&b<=715&&b%5==1) CpGuai(4,30,8,2,0.3);if(b>=750&&b<=950&&b%20==1) {float r=0,rr;for(int i=1;i<=3;i++){X6:rr=0.7+(rand()%5)/10.0;if(rr==r)goto X6;r=rr;CpGuai(4,i*5+7+(rand()%3),29,0,0.5+(rand()%50)/200.0);}}if(b>=1000&&b<=1300) MesGuai(4,5);}
}
void RandGood(){
if(Biao>0){Biao--;Guai(-1,0);}
if(Gd[1]==0){Gd[1]=rand()%1000+1;if(Win==7)Gd[1]=10086;Gd[3]=rand()%16+8;}
else if(Gd[1]<=5){Guai(-2-Gd[1],Gd[3]);memset(Gd,0,sizeof(Gd));}
else if(Gd[1]>=20&&Gd[1]<27){Guai(-8,Gd[3]);memset(Gd,0,sizeof(Gd));}
else if(Gd[1]>=30&&Gd[1]<37){Guai(-9,Gd[3]);memset(Gd,0,sizeof(Gd));}
else if(Gd[1]>=40&&Gd[1]<70){Gd[2]++;if(Gd[2]%2==1)Guai(-10,Gd[3]);if(Gd[2]>=9)memset(Gd,0,sizeof(Gd));}
else if(Gd[1]>=70&&Gd[1]<100){Gd[2]++;if(Gd[2]%2==1)Guai(-11,Gd[3]);if(Gd[2]>=9)memset(Gd,0,sizeof(Gd));}
else if(Boss!=0&&Gd[1]>=450&&Gd[1]<=500){Guai(-2,Gd[3]);memset(Gd,0,sizeof(Gd));}
else Gd[1]=0;
for(int i=0;i<20;i++){if(I[i][0]==-1) continue;Setpos(I[i][0],I[i][1]);Color(0);if(I[i][0]==20) cout<<"===";else cout<<" ";I[i][1]++;if(I[i][0]>=28||I[i][0]<=0||I[i][1]>=29) I[i][0]=I[i][1]=-1;else Color(1),Setpos(I[i][0],I[i][1]),cout<<"■";Color(0);}
}
void Panboss(int bx,int by){
float Nox[4],Noy[4];Nox[0]=X,Noy[0]=Y;
if(Down==1&&X==22) Nox[1]=X+1,Noy[1]=Y-0.5,Nox[2]=X-1,Noy[2]=Y-0.5;
else if(Down==2) Nox[1]=X+1,Noy[1]=Y-0.5,Nox[2]=-10,Noy[2]=-10;
else if(Down==1||X<18) Nox[1]=X-1,Noy[1]=Y-0.5,Nox[2]=-10,Noy[2]=-10;
else Nox[1]=X+1,Noy[1]=Y-0.5,Nox[2]=X-1,Noy[2]=Y-0.5;
for(int i=0;i<3;i++){if((Boss==1||Boss==6)&&Wind==0&&Thun==0&&abs(Nox[i]-bx)<1&&abs(Noy[i]-by)<1&&Bgo1[4]==0) Blo-=20,Bgo1[4]=1,Killb=20,Kill=1;if((Boss==2||Boss==6)&&Wind==0&&Thun==0&&abs(Nox[i]-bx)<1&&abs(Noy[i]-by)<1&&Bgo2[8]==0) Blo-=20,Bgo2[8]=1,Killb=20,Kill=1;}
}
void Boss1(){
for(int j=0;j<20;j++)if(abs(Bx1-I[j][0])<2&&By1-I[j][1]<=2){Setpos(I[j][0],I[j][1]);if(I[j][0]==20) cout<<"===";else cout<<" ";I[j][0]=I[j][1]=-1;Bblo-=8+Lv*2;Exp+=2;}
if(Bbr==Bbl&&Bbr!=0) Bbr=Bbl=0;
for(int i=1;i<=3+(Bbl-Bbr)/5;i++)if(Bbr<Bbl){Setpos(Bway[Bbr][0],Bway[Bbr][1]);if(Bway[Bbr][0]==20) cout<<"==";else cout<<" ";Bbr++;}
if(Bwhat1==5){int bx,by;Color(5);for(int i=0;i<10;i++){bx=Bx1-i*Bvx1/10.0;by=By1-i*Bvy1/10.0;Setpos(bx,by),cout<<"█";Bbl++;Bway[Bbl][0]=bx;Bway[Bbl][1]=by;}Color(0);}
Bx1-=Bvx1;By1-=Bvy1;
if(Bwhat1==0){X2:Bwhat1=rand()%7;if(Bwhat1==2||Bwhat1==3){if(By1<=10||By1>25) goto X2;}if(Bwhat1==4){if(By1<=15||Bx1<20) goto X2;Bgo1[2]=Bx1;Bgo1[3]=By1-1;}if(Bwhat1==5) {X0:Bgo1[3]=rand()%4+1;Bvx1=(rand()%101)/20.0;Bvy1=(rand()%101)/20.0;if(Bgo1[3]<=2) Bvx1*=-1;if(Bgo1[3]%2==1) Bvy1*=-1;if(abs(Bvx1)+abs(Bvy1)<=3||Out1)goto X0;}if(Bwhat1==6){if(By1<=17||By1>25) goto X2;}}
if(Bwhat1==1){Bgo1[1]++,Bgo1[2]++;int R=rand()%(5-Bgo1[1]),r=rand()%(10-Bgo1[2]);if(Out1) R=0;if(R==0) {int vx=Bvx1,vy=Bvy1;Bgo1[1]=0;Bvx1=(rand()%101-20)/50.0;Bvy1=(rand()%101-20)/50.0;if(Bgo1[3]<=2) Bvx1*=-1;if(Bgo1[3]%2==1) Bvy1*=-1;if(Out1) r=0;} if(r==0) Chang1 }
if(Bwhat1==2){Bgo1[1]++;if(Bgo1[1]>6){Bvy1=-0.3;br++;B[br].x=Bx1,B[br].y=By1-1;B[br].what=6;X3:B[br].vx=(rand()%21-10)/40.0;B[br].vy=(rand()%25)/30.0;if(B[br].vx<=0.8&&B[br].vy<=0.8)goto X3;int rx=rand()%50;if(rx==0) B[br].vx=0;B[br].life=1;}if(Bgo1[1]>8) Chang1}
if(Bwhat1==3){Bgo1[1]++;if(Bgo1[1]>6&&Bgo1[1]%3==0){Bvy1=-0.3;br++;B[br].x=Bx1,B[br].y=By1-1;B[br].what=8;B[br].life=1;}if(Bgo1[1]>15) Chang1}
if(Bwhat1==4){Bgo1[1]++;if(Bgo1[1]<=8){Setpos(Bgo1[2],Bgo1[3]);if(Bgo1[1]==1)cout<<" ";else if(Bgo1[1]>1&&Bgo1[2]==20) cout<<"==";else cout<<" ";Bgo1[2]--;Setpos(Bgo1[2],Bgo1[3]);int r=rand()%4;if(r%2==0) Color(6);else Color(9);if(r<2) cout<<") ";else cout<<"】";Color(0);}if(Bgo1[1]==6) Bgo1[5]=X,Bgo1[6]=Y;if(Bgo1[1]==11){Map(0,(bool)Kill);Setpos(Bgo1[5],Bgo1[6]+1),cout<<" ";Setpos(Bgo1[5],Bgo1[6]-1),cout<<" ";Setpos(Bgo1[5]+1,Bgo1[6]),cout<<" ";Setpos(Bgo1[5]-1,Bgo1[6]),cout<<" ";int bx,by,bvx=Bgo1[2]-Bgo1[5],bvy=Bgo1[3]-Bgo1[6];Color(6);int i=0;while(1){bx=Bgo1[2]-i*bvx/30.0;by=Bgo1[3]-i*bvy/30.0;if(bx<=5||bx>=30||by<0||by>=29) break;Panboss(bx,by);Setpos(bx,by),cout<<"█";Bbl++;Bway[Bbl][0]=bx;Bway[Bbl][1]=by;i++;}Color(0);Map(-1,0);Chang1}}
if(Bwhat1==5){Bgo1[1]++,Bgo1[2]++;int R=rand()%(5-Bgo1[1]),r=rand()%(10-Bgo1[2]);if(Out1) R=0;if(R==0) {int vx=Bvx1,vy=Bvy1;Bgo1[1]=0;X1:Bvx1=(rand()%101-20)/20.0;Bvy1=(rand()%101-20)/20.0;if(Bgo1[3]<=2) Bvx1*=-1;if(Bgo1[3]%2==1) Bvy1*=-1;if(abs(Bvx1)+abs(Bvy1)<=3||abs(Bvx1-vx)<=1||abs(Bvy1-vy)<=1)goto X1;if(Out1) r=0;} if(r==0) Chang1 }
if(Bwhat1==6){Bgo1[1]++;if(Bgo1[1]>6&&Bgo1[1]%10==0){By1-=1;br++;B[br].x=Bx1,B[br].y=By1-1;B[br].what=9;X30:B[br].vy=1;B[br].life=1;}if(Bgo1[1]>31) Chang1}
}
void Boss2(){
for(int j=0;j<20;j++)if(abs(Bx2-I[j][0])<2&&By2-I[j][1]<=2){Setpos(I[j][0],I[j][1]);if(I[j][0]==20) cout<<"===";else cout<<" ";I[j][0]=I[j][1]=-1;Bblo-=8+Lv*2;Exp+=2;}
if(Bbr==Bbl&&Bbr!=0) Bbr=Bbl=0;
for(int i=1;i<=3+(Bbl-Bbr)/5;i++)if(Bbr<Bbl){Setpos(Bway[Bbr][0],Bway[Bbr][1]);if(Bway[Bbr][0]==20) cout<<"==";else cout<<" ";Bbr++;}
Bx2-=Bvx2;By2-=Bvy2;
if(Bwhat2==0){X21:Bwhat2=rand()%7;if(Bwhat2==2){X31:for(int i=1;i<=3;i++){Bgo2[i*2+1]=rand()%28+1,Bgo2[i*2]=rand()%25+5;if((abs(Bgo2[i*2]-Bx2)<=2&&abs(Bgo2[i*2+1]-By2)<=2)||(abs(Bgo2[i*2]-X)<=2&&abs(Bgo2[i*2+1]-Y)<=2))goto X31;}if(Bgo2[2]==Bgo2[4]||Bgo2[2]==Bgo2[6]||Bgo2[6]==Bgo2[4]||Bgo2[5]==Bgo2[3]||Bgo2[3]==Bgo2[7]||Bgo2[5]==Bgo2[7]) goto X31;}if(Bwhat2==3){Bgo2[2]=rand()%2;}if(Bwhat2==4||Bwhat2==5||Bwhat2==6){Bvy2=-1.5;Bvx2=-0.5;}}
if(Bwhat2==1){Bgo2[1]++,Bgo2[2]++;int R=rand()%(5-Bgo2[1]),r=rand()%(30-Bgo2[2]);if(Out2) R=0;if(R==0) {int vx=Bvx2,vy=Bvy2;Bgo2[1]=0;Bvx2=(rand()%101-20)/50.0;Bvy2=(rand()%101-20)/50.0;if(Bgo2[3]<=2) Bvx2*=-1;if(Bgo2[3]%2==1) Bvy2*=-1;if(Out2) r=0;} if(r==0) Chang2 }
if(Bwhat2==2){Bgo2[1]++;float bx,by,bvx,bvy;if(Bgo2[1]<21){for(int i=1;i<=3;i++){bvx=Bgo2[i*2]-Bx2,bvy=Bgo2[i*2+1]-By2;if(Bgo2[1]<=10){Setpos(Bx2+(Bgo2[1]-1)*bvx/10.0,By2+(Bgo2[1]-1)*bvy/10.0);if(abs(Bx2+(Bgo2[1]-1)*bvx/10.0-20)<0.5)cout<<"==";else cout<<" ";bx=Bx2+Bgo2[1]*bvx/10.0;by=By2+Bgo2[1]*bvy/10.0;Setpos(bx,by);}else Setpos(Bgo2[i*2],Bgo2[i*2+1]);int r=rand()%4;if(r%2==0) Color(3);else Color(10);if(r<=1) cout<<"×";else cout<<"+";Color(0);}}if(Bgo2[1]==21){Map(0,(bool)Kill);Color(3);int j=0;for(int j=0;j<=30;j++)for(int i=1;i<=3;i++)for(int k=1;k<=4;k++){if(k==1) bvx=j,bvy=0;if(k==2) bvx=-j,bvy=0;if(k==3) bvx=0,bvy=j;if(k==4) bvx=0,bvy=-j;bx=Bgo2[i*2]+bvx,by=Bgo2[i*2+1]+bvy;if(bx<=5||bx>=30||by<0||by>=30) {continue;}Panboss(bx,by);Setpos(bx,by),cout<<"█";Bbl++;Bway[Bbl][0]=bx;Bway[Bbl][1]=by;}Color(0);Map(-1,0);Chang2}}
if(Bwhat2==3){Bgo2[1]++;if(Bgo2[1]<=18){if(Bgo2[3]==0) Setpos(Bgo2[4]-3,Bgo2[5]),cout<<" ",Setpos(Bgo2[4]+3,Bgo2[5]),cout<<" ",Color(0),Setpos(20,Bgo2[5]),cout<<"==";if(Bgo2[3]==1) Setpos(Bgo2[4],Bgo2[5]-3.5),cout<<" ",Setpos(Bgo2[4],Bgo2[5]+2.5),cout<<" ",Color(0),Setpos(20,Bgo2[5]+2.5),cout<<"====",Setpos(20,Bgo2[5]-3.5),cout<<"====";if(Bgo2[1]%4==0)Bgo2[3]=!Bgo2[3];if(Bgo2[1]%6<3)Color(3);else Color(5);if(Bgo2[3]==0) Setpos(X-3,Y),cout<<"▼",Setpos(X+3,Y),cout<<"▲",Bgo2[4]=(int)(X+0.5),Bgo2[5]=(int)(Y+0.5);if(Bgo2[3]==1) Setpos(X,Y-3),cout<<" ",Setpos(X,Y+3),cout<<" ",Bgo2[4]=(int)(X+0.5),Bgo2[5]=(int)(Y+0.5);Color(0);}if(Bgo2[1]==18){if(Bgo2[3]==0) Setpos(Bgo2[4]-3,Bgo2[5]),cout<<" ",Setpos(Bgo2[4]+3,Bgo2[5]),cout<<" ",Color(0),Setpos(20,Bgo2[5]),cout<<"==";if(Bgo2[3]==1) Setpos(Bgo2[4],Bgo2[5]-3.5),cout<<" ",Setpos(Bgo2[4],Bgo2[5]+2.5),cout<<" ",Color(0),Setpos(20,Bgo2[5]+2.5),cout<<"====",Setpos(20,Bgo2[5]-3.5),cout<<"====";}if(Bgo2[1]>18&&Bgo2[1]<=25){Bgo2[3]=Bgo2[2];if(Bgo2[3]==0) Setpos(Bgo2[4]-3,Bgo2[5]),cout<<" ",Setpos(Bgo2[4]+3,Bgo2[5]),cout<<" ",Color(0),Setpos(20,Bgo2[5]),cout<<"==";if(Bgo2[3]==1) Setpos(Bgo2[4],Bgo2[5]-3.5),cout<<" ",Setpos(Bgo2[4],Bgo2[5]+2.5),cout<<" ",Color(0),Setpos(20,Bgo2[5]+2.5),cout<<"====",Setpos(20,Bgo2[5]-3.5),cout<<"====";if(Bgo2[1]%4<2)Color(3);else Color(5);if(Bgo2[3]==0) Setpos(Bgo2[4]-3,Bgo2[5]),cout<<"▼",Setpos(Bgo2[4]+3,Bgo2[5]),cout<<"▲";if(Bgo2[3]==1) Setpos(Bgo2[4],Bgo2[5]-3),cout<<" ",Setpos(Bgo2[4],Bgo2[5]+3),cout<<" ";Color(0);}if(Bgo2[1]==25){if(Bgo2[2]==0){Color(3);for(int i=4;i<=29;i++){Setpos(i,Bgo2[5]),cout<<"█";Bbl++;Panboss(i,Bgo2[5]);Bway[Bbl][0]=i;Bway[Bbl][1]=Bgo2[5];}}if(Bgo2[2]==1){Color(3);for(int i=0;i<=28;i++){Setpos(Bgo2[4],i),cout<<"█";Bbl++;Panboss(Bgo2[4],i);Bway[Bbl][0]=Bgo2[4];Bway[Bbl][1]=i;}}Chang2}}
if(Bwhat2==4||Bwhat2==5||Bwhat2==6){Bgo2[1]++;if(By2>27)Bvy2=0;if(Bx2>23)Bvx2=0;if(Bgo2[1]>13&&Bgo2[1]%3==0){float t=By2-Y,g=0.35;if(Boss==6) t/=2.0;CpGuai(Bwhat2+2,Bx2,By2,(Bx2-X)/t*1.0+(t-1)*g/2.0,1);}if(Bgo2[1]>20) Chang2}
}
void Boss3(){
#define Bean br++;B[br].what=13;B[br].x=Bx3-1,B[br].y=By3-1;B[br].vy=1;B[br].life=1;
for(int j=0;j<20;j++)if(abs(Bx3-I[j][0])<2&&By3-I[j][1]<=2){Setpos(I[j][0],I[j][1]);if(I[j][0]==20) cout<<"===";else cout<<" ";I[j][0]=I[j][1]=-1;Bblo-=8+Lv*2;Exp+=2;}
Bx3-=Bvx3;By3-=Bvy3;
if(Bwhat3<=8){if(Bx3>X&&Bvx3<1.5) Bvx3+=0.3;if(Bx3<X&&Bvx3>-1.5) Bvx3-=0.3;}
if(Bwhat3==0){X22:Bwhat3=rand()%12;if(Bwhat3==11&&abs(Bx3-20)<=1)goto X22;if(Bwhat3==11)Bgo3[2]=rand()%5;}
if(Bwhat3==1){Bgo3[1]++;if(Bgo3[1]==6){br++;B[br].what=13;B[br].x=(int)Bx3-1,B[br].y=By3-1;B[br].vy=1;B[br].vx=1;B[br].How=(int)Bx3-4;B[br].life=1;br++;B[br].what=13;B[br].x=(int)Bx3-1,B[br].y=By3-1;B[br].vy=1;B[br].vx=-1;B[br].How=(int)Bx3+2;B[br].life=1;br++;B[br].what=13;B[br].x=(int)Bx3-1,B[br].y=By3-1;B[br].vy=1;B[br].life=1;Chang3}}
if(Bwhat3>=2&&Bwhat3<=6){Bgo3[1]++;if(Bgo3[1]==6){br++;B[br].x=(int)Bx3-1,B[br].y=By3-1;B[br].what=11+Bwhat3;B[br].vy=0.5+(rand()%100)/80.0;if(Bwhat3==5)B[br].vy=B[br].vy*3/4.0;B[br].life=1;Chang3}}
if(Bwhat3==7){Bgo3[1]++;if(Bgo3[1]==6){br++;B[br].what=14;B[br].x=(int)Bx3-1,B[br].y=By3-1;B[br].vy=1;B[br].vx=1;B[br].How=(int)Bx3-4;B[br].life=1;br++;B[br].what=14;B[br].x=(int)Bx3-1,B[br].y=By3-1;B[br].vy=1;B[br].vx=-1;B[br].How=(int)Bx3+2;B[br].life=1;br++;B[br].what=14;B[br].x=(int)Bx3-1,B[br].y=By3-1;B[br].vy=1;B[br].life=1;Chang3}}
if(Bwhat3==8){Bgo3[1]++;if(Bgo3[1]==6){br++;B[br].what=15;B[br].x=(int)Bx3-1,B[br].y=By3-1;B[br].vy=1;B[br].vx=1;B[br].How=(int)Bx3-4;B[br].life=1;br++;B[br].what=15;B[br].x=(int)Bx3-1,B[br].y=By3-1;B[br].vy=1;B[br].vx=-1;B[br].How=(int)Bx3+2;B[br].life=1;br++;B[br].what=15;B[br].x=(int)Bx3-1,B[br].y=By3-1;B[br].vy=1;B[br].life=1;Chang3}}
if(Bwhat3==9){Bvx3=0;Bgo3[1]++;if(Bgo3[1]==6||Bgo3[1]==8){Bean}if(Bgo3[1]>=8)Chang3}
if(Bwhat3==10){Bvx3=0;Bgo3[1]++;if(Bgo3[1]==6||Bgo3[1]==8||Bgo3[1]==10||Bgo3[1]==12){Bean}if(Bgo3[1]>=12)Chang3}
if(Bwhat3==11){Bvx3=0;Bgo3[1]++;if(Bgo3[1]>=8)for(int i=1;i<=4;i++){br++;B[br].what=80+100*Bgo3[2]+Bgo3[1]*4+i;B[br].x=Bx3-1,B[br].y=By3-1+i;B[br].vy=4;B[br].life=1;br++;B[br].what=99;B[br].x=Bx3,B[br].y=By3-1+i;B[br].vy=4;B[br].life=1;br++;B[br].what=99;B[br].x=Bx3-2,B[br].y=By3-1+i;B[br].vy=4;B[br].life=1;}if(Bgo3[1]>=20){for(int i=1;i<=4;i++){br++;B[br].what=98;B[br].x=Bx3-1,B[br].y=By3-1+i;B[br].vy=4;B[br].life=1;br++;B[br].what=98;B[br].x=Bx3,B[br].y=By3-1+i;B[br].vy=4;B[br].life=1;br++;B[br].what=98;B[br].x=Bx3-2,B[br].y=By3-1+i;B[br].vy=4;B[br].life=1;}Chang3}}
}
void Ball(int ball){
if(ball==1){int f=0;for(int i=1;i<=3;i++) {if(fir[i]==1) fir[i]--,Fir++;else if(fir[i]>1) fir[i]--;else f=i;}if(Fir>0&&f!=0){br++;B[br].what=-13;B[br].x=X;B[br].y=Y+rand()%3-1;B[br].life=1;if(Dis<=30) B[br].a=Disb,B[Disb].a=1,fir[f]=20,Fir--;else if(Boss!=0) B[br].a=13880086,fir[f]=20,Fir--;else if(Dis!=13880087) B[br].a=Disb,B[Disb].a=1,fir[f]=20,Fir--;else if(Dis1!=13880087) B[br].a=Disb1,B[Disb1].a=1,fir[f]=20,Fir--;else B[br].life=0;Dis=Dis1=13880087;}}
if(ball==2){if(T%4==0)ib=(ib+1)%20,I[ib][1]=Y-2;if(T%16==0)I[ib][0]=X;if(T%16==4)I[ib][0]=X-1;if(T%16==8)I[ib][0]=X+1;if(T%16==12)I[ib][0]=X-2;if(T%12==9)I[ib][0]=X+2;if(Water==1){for(int i=X-6;i<=X+6;i++)ib=(ib+1)%20,I[ib][0]=i,I[ib][1]=Y-2-0.5*abs(i-X);}}
if(ball==3){if(Wind>5){if(Y<Ding-1)Vy=5;else Vy=0;if(Up>=1) Vx=-5;if(Down==2) Vx=5;}if(Wind<5){if(Y>Ding-1)Vy=-5;else Vy=0;if(Up>=1) Vx=-5;if(Down==2) Vx=5;}if(Wind==5){if(Boss==2) Ding=12.25;else Ding=6.25;if(Boss!=0) Bblo-=16+Lv*4;if(Boss==1) Chang1 if(Boss==2) Chang2 if(Boss==3) Chang3 system("color 3F");Sleep(20);system("color 6F");Sleep(10);system("color 0F");system("cls");for(int i=bl;i<=br;i++)if(B[i].what>0)B[i].life=0;Setpos(20,0);for(int i=1;i<=60;i++) printf("=");}}
if(ball==4){if(Thun==1){if(Boss!=0) Bblo-=16+Lv*4;if(Boss==1) Chang1 if(Boss==2) Chang2 if(Boss==3) Chang3 system("color 9F");Sleep(20);system("color 6F");Sleep(10);system("color 0F");system("cls");for(int i=bl;i<=br;i++)if(B[i].what>0)B[i].life=0;Setpos(20,0);for(int i=1;i<=60;i++) printf("=");}}
if(ball==5){system("cls"); Color(5);Setpos(10,10);cout<<"新天赋!";Y:int rr=rand()%4+2;Setpos(12,10);if(rr==Ren) goto Y;if(rr==2)cout<<"瞬跳";if(rr==3)cout<<"空之舞";if(rr==4)cout<<"三段跳";if(rr==5)cout<<"反重力跳跃";Setpos(14,10);cout<<"当前天赋:";if(Ren==1)cout<<"小无敌";if(Ren==2)cout<<"瞬跳";if(Ren==3)cout<<"空之舞";if(Ren==4)cout<<"三段跳";if(Ren==5)cout<<"反重力跳跃";Setpos(16,10);cout<<"换否?(y/n)";G:char g=_getch();if(g=='y')Ren=rr;else if(g!='n')goto G;system("cls");Setpos(20,0);Color(0);for(int i=1;i<=60;i++) printf("=");}
if(ball==6){Color(4);for(float i=1;i<=Bblo;i+=Bblomax/20.0)cout<<"▄";Color(0);cout<<' '<<Bblo<<" ";Color(0);}
if(ball==7){Color(1);if(Win==7&&T%6<3)Color(3);for(float i=1;i<=Blo;i+=Blomax/20.0)cout<<"▄";Color(0);if(Win==7&&T%6<3)Color(3);printf(" %0.1f ",Blo);}
}
int main(){
system("mode con cols=60 lines=37");CONSOLE_CURSOR_INFO cursor_info={1,0};SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);srand((unsigned)time(NULL));
Win=0;Ren=1;Lv=1;Blo=Blomax=100;Expmax=300;Hui=15;X=18,Y=6;
ReStart:system("cls");memset(B,0,sizeof(B));memset(I,-1,sizeof(I));T=0;bl=0;br=-1;Upt=0;
Start:Blo=Blomax;Ding=6.25;
memset(Bgo1,0,sizeof(Bgo1));memset(Bgo2,0,sizeof(Bgo2));memset(Bgo3,0,sizeof(Bgo3));
if(Win%2==0) T=0;if(Win%2==0&&D==0){if(Win>0)Ball(5);Boss=0;lL:L=rand()%4+1;for(int i=0;i<=Win/2-1;i++)if(L==Ll[i]) goto lL;Ll[Win/2]=L;}if(Win%2==1&&D==0){if(Win==7)Boss=6,T=0,Blomax+=100;else{bl:Boss=rand()%3+1;for(int i=0;i<=3;i++)if(Boss==Bl[i]) goto bl;}Bl[Win/2]=Boss;Bwhat1=Bwhat2=Bwhat3=0,Bx1=10,By1=20,Bx2=15,By2=20,Bx3=21,By3=20;system("color 4C");Sleep(20);system("color 0F");Map(0,1);Sleep(1000);}if(Win%2==1){Bblomax=500+(Win/2)*500;Bblo=Bblomax;if(Boss==2) Ding=12.25;}
while(1){
T++;
if(Wind==0){if(GetAsyncKeyState(VK_LEFT)&0x8000) Vy=-(10-abs(Ding-Y)*1.5)/20.0;if(GetAsyncKeyState(VK_RIGHT)&0x8000) Vy=(10-abs(Ding-Y)*1.5)/20.0;}if(GetAsyncKeyState(VK_UP)&0x8000&&u1==0) {u1++;if(Down==1){Down=0;Up=0;if(Ren==2)Map(-1,0),Vx=0,X=18,Li=5;else Vx=7,Vy=0.3;}else if(Up==0&&Wind==0) {Down=0;Up=1;if(Ren==2)Map(-1,0),Vx=1,X=10,Map(0,3),Li=5;else Vx=2,Vy=0.1;}else if(Up==1&&Wind==0) {Down=0;Up=2;if(Ren==2)Map(-1,0),Vx=1,X-=6,Map(0,3),Li=5;else Vx=1.5,Vy=0.1;}else if(Ren==3&&Up==2&&Wind==0) {Down=0;Up=3;Vx=1;Vy=0.5;Upt=30;}else if(Ren==4&&Up==2&&Wind==0) {Down=0;Up=3;Vx=1.8;Vy=0.1;}}if(GetAsyncKeyState(VK_DOWN)&0x8000&&u2==0) {u2++;if(Down==1&&Ren==5){Down=2;Up=0;Vx=-1.7;}else {Down=1;Up=0;if(Ren==2)Map(-1,0),Vx=0,X=22,Map(0,3),Li=5;else {if(Upt!=0) Map(-1,0),Upt=0;Vx=-7;}}}if((GetAsyncKeyState(VK_UP)&0x8000) ?0:1) u1=0;if((GetAsyncKeyState(VK_DOWN)&0x8000) ?0:1) u2=0;if(kbhit()){char g=_getch();if(g==' ') Sleep(100),Setpos(4,1),Sy++,system("pause");}if(Sy==1) Setpos(4,1),printf(" "),Sy--;
if(Drug==0) Blo=fmin((float)Blomax,Blo+Hui/100.0);else if(T%10==0)Blo--;if(T%20==0) {if(Kill!=0) Kill=0;if(Lvl!=0) Lvl=0;}if(Killb>0) Killb--;if(Li>0) Li--;if(Ice>0) Ice--;if(Drug>0) Drug--;if(Magne>0) Magne--;
if(Fire>0) Ball(1),Fire--;if(Water>0) Ball(2),Water--;if(Wind>0) Ball(3),Wind--;if(Thun>0) Ball(4),Thun--;
if(Boss==0) NorGuai(L,T%1500);RandGood();if(T%20==1)Exp++;
if(T%50==1){Exp++;system("cls");Setpos(20,0);Color(0);for(int i=1;i<=60;i++) printf("=");if(Win==0&&T<300){Setpos(4,6);cout<<"上下 跳跃/下翻,左右 些微移动(松手即返回)"; Setpos(6,6);cout<<"球可以开启特殊效果,Exp积满(300)可提升 Lv。";Setpos(8,6);cout<<"打败 7 波即胜利,打败 BOSS 有新天赋。";Setpos(10,15);cout<<"空格可以暂停。";}}
Map(-1,0);
if(Boss==1) Boss1();if(Boss==2) Boss2();if(Boss==3) Boss3();if(Boss==6) Boss1(),Boss2(),Boss3();
Move();Map(0,(bool)Kill);Color(0);
Setpos(1,1);Blo=fmin(Blo,(float)Blomax);if(Boss==0)cout<<"Blood: "<<(int)Blo<<" ";Color(0);Setpos(1,9),cout<<"Death: "<<D<<" ";Setpos(2,1);Exp=min(Exp,Expmax);if(Exp>=Expmax)Exp=0,Lv++,Lvl++,Hui++,Blomax+=5;if(Lvl>0)Color(5);cout<<"Lv: "<<Lv;Color(0);Setpos(2,9);cout<<"Exp: "<<Exp<<" ";if(Boss>0) Setpos(3,1),cout<<"Blood : ",Ball(7);if(Boss>0&&Boss!=6) Setpos(4,1),cout<<"Boss Blood: ",Ball(6);if(Boss==6) Setpos(1,9),printf("Time: %0.1f s ",T/15.0);
int speed=0;
if(Win==0) speed=55;if(Win==1) speed=50;if(Win==2) speed=35;if(Win==3) speed=40;if(Win==4) speed=25;if(Win==5) speed=30;if(Win==6) speed=20;if(Win>=7) speed=17;
if(Wind) speed/=2;Sleep(speed);
if(Boss==3&&Bblo<=0){for(int i=1;i<=4;i++){br++;B[br].what=98;B[br].x=Bx3-1,B[br].y=By3-1+i;B[br].vy=4;B[br].life=1;br++;B[br].what=98;B[br].x=Bx3,B[br].y=By3-1+i;B[br].vy=4;B[br].life=1;br++;B[br].what=98;B[br].x=Bx3-2,B[br].y=By3-1+i;B[br].vy=4;B[br].life=1;}}
if((Win%2==0&&T>=1400)||(Win%2==1&&Bblo<=0)||(Win==7&&T>=450)||Blo<=0) {Map(-1,0);break;}
}if(Blo<=0){Sleep(1000);D++;system("color 7F");Setpos(15,11);Color(4);cout<<"GAME OVER...";Sleep(2000);goto ReStart;}else if(Win==6){system("color 7F");Setpos(15,11);Color(4);cout<<"坚持30秒 !";Sleep(2000);Setpos(30,0);Win++;D=0;}else if(Win==7){Sleep(1000);system("color 6E");Setpos(15,11);Color(5);cout<<"YOU WIN !";Sleep(2000);Setpos(30,0);return 0;}else Sleep(1000),Win++,D=0;goto Start;
}
<2019> 双人贪吃蛇
#include<iostream>
#include<cmath>
#include<cstdlib>
#include<cstdio>
#include<ctime>
#include<ctime>
#include<conio.h>
#include<windows.h>
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
using namespace std;
HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);
COORD coord;
void locate(int x, int y)
{
coord.X=y*2;
coord.Y=x;
SetConsoleCursorPosition(hout,coord);
};
void Color(int a)
{
if(a==0) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(a==1) 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);
}
void hide() {CONSOLE_CURSOR_INFO cursor_info={1,0};SetConsoleCursorInfo(hout,&cursor_info);}
double random(double start, double end) {return start+(end-start)*rand()/(RAND_MAX+1.0);}
int m,n,hard;
char g;
bool b11,b21,b12,b22,b13,b23,b14,b24;
const int Ti=1e4;
struct node {int x, y;}snake1[1000],snake2[1000];
node food[2];
int snake_length1,snake_length2,dir1,dir2;
int direct[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
void print_wall()
{
cout<<"■";for(int i=1;i<=n+1;i++) cout<<"■";cout<<endl;
for(int j=0;j<=m-1;j++)
{
cout<<"■";
for(int i=1;i<=n;i++)
cout<<" ";cout<<"■"<<endl;
}
cout<<"■";for(int i=1;i<=n+1;i++) cout<<"■";
}
void print_snake()
{
locate(snake1[0].x,snake1[0].y);
Color(3),cout<< "●",Color(0);
for(int i=1;i<snake_length1-1;i++) {locate(snake1[i].x,snake1[i].y);Color(5),cout<<"●",Color(0);}
locate(snake2[0].x,snake2[0].y);
Color(3),cout<<"●",Color(0);
for (int i=1;i<snake_length2-1;i++) {locate(snake2[i].x,snake2[i].y);Color(1),cout<<"●",Color(0);}
}
bool is_correct1()
{
if(g!='3'&&(snake1[0].x== 0||snake1[0].y==0 || snake1[0].x == m + 1 || snake1[0].y == n + 1)) return false;
if(g=='3')
{
if(snake1[0].x == 0) snake1[0].x =m;
if(snake1[0].x == m+1) snake1[0].x =1;
if(snake1[0].y == 0) snake1[0].y =n;
if(snake1[0].y == n+1) snake1[0].y =1;
}
for(int i=1;i<=snake_length1-1;i++)if(snake1[0].x==snake1[i].x&&snake1[0].y==snake1[i].y) return false;
for(int i=0;i<=snake_length2-1;i++)if(snake1[0].x==snake2[i].x&&snake1[0].y==snake2[i].y) return false;
return true;
}
bool is_correct2()
{
if(g!='3'&&(snake2[0].x == 0 || snake2[0].y == 0 || snake2[0].x == m + 1 || snake2[0].y == n + 1))return false;
if(g=='3')
{
if(snake2[0].x == 0) snake2[0].x =m;
if(snake2[0].x == m+1) snake2[0].x =1;
if(snake2[0].y == 0) snake2[0].y =n;
if(snake2[0].y == n+1) snake2[0].y =1;
}
for (int i = 1; i <= snake_length2 - 1; i++)if(snake2[0].x == snake2[i].x && snake2[0].y == snake2[i].y)return false;
for (int i = 0; i <= snake_length1 - 1; i++)if(snake2[0].x == snake1[i].x && snake2[0].y == snake1[i].y)return false;
return true;
}
bool print_food(bool a)
{
bool e;
while (1)
{
e=true;
int i=(int)random(0,m)+1;
int j=(int)random(0,n)+1;
food[a].x = i; food[a].y = j;
for (int k = 0; k <= snake_length1 - 1; k++)
if (snake1[k].x == food[a].x && snake1[k].y == food[a].y){e= false; break; }
for (int k = 0; k <= snake_length2 - 1; k++)
if (snake2[k].x == food[a].x && snake2[k].y == food[a].y){e= false;break; }
if (food[0].x == food[1].x && food[0].y == food[1].y) e= false;
if (e)break;
}
locate(food[a].x,food[a].y);
Color(2),cout << "◆",Color(0);
return true;
}
bool go_ahead1()
{
node tmp;
bool e = false;
tmp = snake1[snake_length1-1];
for (int i = snake_length1 - 1; i >= 1;i--) snake1[i] = snake1[i - 1];
snake1[0].x += direct[dir1][0];
snake1[0].y += direct[dir1][1];
locate(snake1[1].x, snake1[1].y);
Color(5),cout << "●",Color(0);
if(snake1[0].x==food[0].x&&snake1[0].y==food[0].y){snake_length1++;e=true;snake1[snake_length1-1]=tmp;print_food(0);}
if(snake1[0].x==food[1].x&&snake1[0].y==food[1].y)
{
snake_length1++;e=true;
snake1[snake_length1-1]=tmp;
print_food(1);
}
if (!e)
{
locate(tmp.x, tmp.y);
cout<<" ";
}
locate(snake1[0].x, snake1[0].y);
Color(3),cout << "●",Color(0);
if (!is_correct1())
{
system("color 7F");Color(5);
if(g=='1') locate(10,8),cout << "You lose!";
if(g=='2'||g=='3') {locate(9,8);cout << "1p lose!";locate(11,8);cout<<"Length: "<<snake_length1;}
Color(0);
return false;
}
return true;
}
bool go_ahead2()
{
node tmp;
bool e=false;
tmp=snake2[snake_length2-1];
for (int i=snake_length2-1;i>=1;i--) snake2[i]=snake2[i - 1];
snake2[0].x+=direct[dir2][0];
snake2[0].y+=direct[dir2][1];
locate(snake2[1].x, snake2[1].y);Color(1),cout << "●",Color(0);
if(snake2[0].x==food[0].x&&snake2[0].y==food[0].y) {snake_length2++;e=true;snake2[snake_length2-1]=tmp;print_food(0);}
if(snake2[0].x==food[1].x&&snake2[0].y==food[1].y) {snake_length2++;e=true;snake2[snake_length2-1]=tmp;print_food(1);}
if(!e) {locate(tmp.x, tmp.y);cout<<" ";}
locate(snake2[0].x, snake2[0].y);Color(3),cout << "●",Color(0);
if(!is_correct2())
{
system("color 7F");Color(1);
if(g=='1') locate(10,8),cout << "You lose!";
if(g=='2'||g=='3') {locate(9,8);cout<<"2p lose!";locate(11,8);cout<<"Length: "<<snake_length2;Color(0);return false;}
}
return true;
}
int Start()
{
print_wall();
print_snake();Color(2);
locate(8,5);cout<<"◆";Color(4),cout<<" 双 人 贪 吃 蛇";Color(2),cout<<" ◆"; Color(5);
locate(10,1);cout<<" 1.单人模式(A W S D↑←↓→八键位系统)"; Color(1);
locate(12,1);cout<<" 2.双人模式(双人 2*4 键位系统)";Color(3);
locate(14,1);cout<<" 3.双人·“无限宇宙”模式";Color(0);
A:if(kbhit()) g=_getch();
if(g!='1'&&g!='2'&&g!='3') goto A;
}
int main()
{
system("mode con cols=45 lines=26");
CONSOLE_CURSOR_INFO cursor_info={1,0};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
srand((unsigned)time(NULL));
m=20,n=20,hard=10*Ti;ST:
snake_length1=snake_length2 = 5;
double hard_len;
dir1=3;dir2=2;
for(int i=0;i<=4;i++) {snake1[i].x=6;snake1[i].y=6-i;}
for(int i=0;i<=4;i++) {snake2[i].x=15;snake2[i].y=15+i;}
Start();
system("cls");
hide();
print_wall();
print_food(0);
if(g=='2'||g=='3') print_food(1);
print_snake();
locate(m+2,0);cout<<"Now Length 1:";
locate(m+3,0);cout<<"Now Length 2:";
locate(m+4,0);cout<<"按 k/l 加/减 速 速度:";locate(m+4,13),cout<<hard/100;
locate(10,4);Color(4);cout<<"Please point 'y' to Start";Color(0);
SS: char ee=_getch(); if(ee!='y') goto SS;
locate(10,4);cout<<" ";
while (1)
{
b11=b21=b12=b22=b13=b23=b14=b24=0;
for(int i=1;i<=hard;i++)
{
if(g=='1')
{
if(KEY_DOWN(87)||KEY_DOWN(40)) {if (dir1 == 2 || dir1 == 3){dir1 = 0;if(b11==0) b11=1,go_ahead1();}}
else if(KEY_DOWN(83)||KEY_DOWN(38)) {if (dir1 == 2 || dir1 == 3){dir1 = 1;if(b12==0) b12=1,go_ahead1();}}
else if(KEY_DOWN(65)||KEY_DOWN(39)) {if (dir1 == 0 || dir1 == 1){dir1 = 2;if(b13==0) b13=1,go_ahead1();}}
else if(KEY_DOWN(68)||KEY_DOWN(37)) {if (dir1 == 0 || dir1 == 1){dir1 = 3;if(b14==0) b14=1,go_ahead1();}}
if(KEY_DOWN(38)||KEY_DOWN(83)) {if (dir2 == 2 || dir2 == 3){dir2 = 0;if(b21==0) b21=1,go_ahead2();}}
else if(KEY_DOWN(40)||KEY_DOWN(87)) {if (dir2 == 2 || dir2 == 3){dir2 = 1;if(b22==0) b22=1,go_ahead2();}}
else if(KEY_DOWN(37)||KEY_DOWN(68)) {if (dir2 == 0 || dir2 == 1){dir2 = 2;if(b23==0) b23=1,go_ahead2();}}
else if(KEY_DOWN(39)||KEY_DOWN(65)) {if (dir2 == 0 || dir2 == 1){dir2 = 3;if(b24==0) b24=1,go_ahead2();}}
}
if(g=='2'||g=='3')
{
if(KEY_DOWN(87)) {if (dir1 == 2 || dir1 == 3){dir1 = 0;if(b11==0) b11=1,go_ahead1();}}
else if(KEY_DOWN(83)) {if (dir1 == 2 || dir1 == 3){dir1 = 1;if(b12==0) b12=1,go_ahead1();}}
else if(KEY_DOWN(65)) {if (dir1 == 0 || dir1 == 1){dir1 = 2;if(b13==0) b13=1,go_ahead1();}}
else if(KEY_DOWN(68)) {if (dir1 == 0 || dir1 == 1){dir1 = 3;if(b14==0) b14=1,go_ahead1();}}
if(KEY_DOWN(38)) {if (dir2 == 2 || dir2 == 3){dir2 = 0;if(b21==0) b21=1,go_ahead2();}}
else if(KEY_DOWN(40)) {if (dir2 == 2 || dir2 == 3){dir2 = 1;if(b22==0) b22=1,go_ahead2();}}
else if(KEY_DOWN(37)) {if (dir2 == 0 || dir2 == 1){dir2 = 2;if(b23==0) b23=1,go_ahead2();}}
else if(KEY_DOWN(39)) {if (dir2 == 0 || dir2 == 1){dir2 = 3;if(b24==0) b24=1,go_ahead2();}}
}
if(KEY_DOWN(76)) hard=min(hard+10,20*Ti),locate(m+4,13),cout<<2000-hard/100<<" ";
if(KEY_DOWN(75)) hard=max(hard-10,2*Ti),locate(m+4,13),cout<<2000-hard/100<<" ";
}
if(snake_length1>snake_length2) {if(!go_ahead2()) break;if(!go_ahead1()) break;}
if(snake_length1<snake_length2) {if(!go_ahead1()) break;if(!go_ahead2()) break;}
if(snake_length1==snake_length2) {int r=rand()%2;if(r==0&&!go_ahead1()) break;if(r==0&&!go_ahead2()) break;if(r==1&&!go_ahead2()) break;if(r==1&&!go_ahead1()) break;}
locate(m+2,12);cout<<snake_length1;
locate(m+3,12);cout<<snake_length2;
}
char e;
locate(13,4);cout<<"Please point 'y' to Play AGain.";
A:e=_getch(); if(e=='y') goto ST; else goto A;
return 0;
}
<2019> 愤怒的小胎
#include<bits/stdc++.h>
#include<windows.h>
#include<stdio.h>
#include<conio.h>
#include<time.h>
using namespace std;
const double pi=3.1415926536;
int toint(float a){return ((int)(a*10+5))/10;}
void Color(int a)
{
if(a==0||a==14||a==20) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(a==1||a==12) 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||a==11) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);
if(a==5||a==13) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
if(a==7) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN|FOREGROUND_BLUE);
if(a==15) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY);
if(a==16) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN);
if(a==17) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);
if(a==8) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(a==6) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);
if(a==9) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|BACKGROUND_RED|BACKGROUND_GREEN);
}
void SetPos(float x,float y)
{
int xx=toint(x),yy=toint(y);
COORD pos;pos.X=yy*2,pos.Y=xx;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
struct node
{
int W,W2,S,mS;
float X,Y;
float vx,vy;
float ax,ay;
bool go,boom;
}blt[100001],pig[100001],boo[100001];
int T,yX,yY,Xy,put,K,K2,Sle,What;
int Bot,Pit,Blt,Pig,Sco,pigk,scok;
int m[41][41];
void Cout(int a,int x,int y)
{
if(a==1) SetPos(x,y),Color(5),cout<<put<<' ';
if(y==202)
{
SetPos(pig[a].X,pig[a].Y);cout<<" ";
if((pig[a].W==2||pig[a].W==3)&&pig[a].X>=2) SetPos(pig[a].X-2,pig[a].Y);cout<<" ",SetPos(pig[a].X-1,pig[a].Y);cout<<" ";
if(pig[a].W==4) SetPos(pig[a].X,pig[a].Y-1),cout<<" ";
if(pig[a].W==5) SetPos(pig[a].X-1,pig[a].Y),cout<<" ",SetPos(pig[a].X-1,pig[a].Y-1),cout<<" ";
}
if(a==2)
for(int i=0;i<=40;i++)
for(int j=0;j<=40;j++)
{
if(i<=18&&m[i][j]==1) SetPos(i,j),Color(7),cout<<"■";
if(m[i][j]>=2&&m[i][j]<=19) SetPos(i,j),Color(5),cout<<"█",m[i][j]++;
if(m[i][j]>19&&m[i][j]<=29) SetPos(i,j),Color(0),cout<<"█",m[i][j]++;
if(m[i][j]==30) SetPos(i,j),Color(0),cout<<" ",m[i][j]=0;
if(m[i][j]>=31&&m[i][j]<=49) SetPos(i,j),Color(0),cout<<"■",m[i][j]++;
if(m[i][j]==50) SetPos(i,j),Color(7),cout<<"■",m[i][j]=1;
}
if(y==666)
{
SetPos(blt[a].X,blt[a].Y);
Color(10+blt[a].W),cout<<"●";
}Color(0);
}
void Go(int a)
{
SetPos(blt[a].X,blt[a].Y);cout<<" ";
blt[a].X+=blt[a].vx/2;blt[a].Y+=blt[a].vy/2;blt[a].vx+=blt[a].ax/2;blt[a].vy+=blt[a].ay/2;
if(blt[a].X>=20) blt[a].X=19;
if(blt[a].X>20||blt[a].Y>38||blt[a].X<0||blt[a].Y<=0) blt[a].go=1;
if(blt[a].W2==1&&blt[a].Y>=Xy) blt[a].go=1,Sle=0;//地跑鸟
if(blt[a].W2==0)
{
for(int i=0;i<=blt[a].vx/2+1;i++)
{
if(blt[a].vx>0&&m[toint(blt[a].X)+i][toint(blt[a].Y)]==1) //上反弹
{
if(blt[a].W!=5) blt[a].boom=1;
blt[a].X=toint(blt[a].X)+i-1,blt[a].Y+=blt[a].vy/2,blt[a].vx=-blt[a].vx*0.4,blt[a].vy=blt[a].vy*0.8;
if(blt[a].W==3) blt[a].ax=0.5;if(blt[a].W==7) blt[a].vx*=2;
if(blt[a].W==10) blt[a].go=1,Bot++,boo[Bot].X=blt[a].X,boo[Bot].Y=blt[a].Y,boo[Bot].S=1,boo[Bot].mS=4;
}
if(blt[a].vx<0&&m[toint(blt[a].X)-i][toint(blt[a].Y)]==1) //下反弹
{
if(blt[a].W!=5) blt[a].boom=1;
blt[a].X=toint(blt[a].X)+i+1,blt[a].Y+=blt[a].vy/2,blt[a].vx=-blt[a].vx,blt[a].vy=blt[a].vy*0.8;
if(blt[a].W==3) blt[a].ax=0.5;if(blt[a].W==7) blt[a].vx*=2;
if(blt[a].W==10) blt[a].go=1,Bot++,boo[Bot].X=blt[a].X,boo[Bot].Y=blt[a].Y,boo[Bot].S=1,boo[Bot].mS=4;
}
}
if(abs(blt[a].vx)<=0.1&&abs(blt[a].vy)<=0.1&&abs(blt[a].ay)<=0.1)
{
blt[a].go=1;
if(blt[a].W==5) Bot++,boo[Bot].X=blt[a].X,boo[Bot].Y=blt[a].Y,boo[Bot].S=1,boo[Bot].mS=4,blt[a].go=1;
}
}
if(blt[a].go==0) Cout(a,0,666);
}
void Kill(int a)
{
if(pig[a].go==0&&pig[a].W!=2&&pig[a].W!=3&&pig[a].Y<16) Cout(a,202,202),pig[a].Y=16;
if(pig[a].go==0&&pig[a].W==4&&pig[a].Y<20) pig[a].W=1;
int R=rand()%50;Cout(a,202,202);
/清除猪猪
pig[a].X+=pig[a].vx/2;pig[a].Y+=pig[a].vy/2;pig[a].vx+=pig[a].ax/2;pig[a].vy+=pig[a].ay/2;
for(int i=-2;i<=pig[a].vx/2+1;i++)
{
if(m[toint(pig[a].X)+i][toint(pig[a].Y)]==1) //上反弹
pig[a].X=toint(pig[a].X)+i-1,pig[a].Y+=pig[a].vy/2,pig[a].vx=-pig[a].vx*0.5,pig[a].vy=pig[a].vy*0.8;
}
for(int i=Blt-10;i<=Blt;i++)
{
if(pig[a].W==5&&blt[i].go==0&&abs(pig[a].X-blt[i].X)<=1&&abs(pig[a].Y-blt[i].Y)<=1) {m[toint(pig[a].X)-1][toint(pig[a].Y)]=2,pig[a].W2++;Sco+=2;break;}
if(pig[a].W==5&&m[toint(pig[a].X)][toint(pig[a].Y)]>=2&&m[toint(pig[a].X)][toint(pig[a].Y)]<30) {m[toint(pig[a].X)-1][toint(pig[a].Y)]=2,pig[a].W2++;Sco+=2;break;}
if(blt[i].go==0&&abs(pig[a].X-blt[i].X)<=1&&abs(pig[a].Y-blt[i].Y)<=1)
{
if(pig[a].W==6) Bot++,boo[Bot].X=pig[a].X,boo[Bot].Y=pig[a].Y,boo[Bot].S=1,boo[Bot].mS=4,blt[i].go=1;
m[toint(pig[a].X)][toint(pig[a].Y)]=2,pig[a].go=1,Pig--,Sco+=10;break;
}
if(m[toint(pig[a].X)][toint(pig[a].Y)]>=2&&m[toint(pig[a].X)][toint(pig[a].Y)]<30)
{
if(pig[a].W==6) Bot++,boo[Bot].X=pig[a].X,boo[Bot].Y=pig[a].Y,boo[Bot].S=1,boo[Bot].mS=4;
pig[a].go=1,Pig--,Sco+=10;break;
}
if((pig[a].W==2||pig[a].W==3)&&blt[i].go==0&&abs(pig[a].X-2-blt[i].X)<=1&&abs(pig[a].Y-blt[i].Y)<=1) {m[toint(pig[a].X)][toint(pig[a].Y)]=2,pig[a].go=1,Pig--,Sco+=10;break;}
if((pig[a].W==2||pig[a].W==3)&&m[toint(pig[a].X-2)][toint(pig[a].Y)]>=2&&m[toint(pig[a].X-2)][toint(pig[a].Y)]<30) {pig[a].go=1,Pig--,Sco+=10;break;}
}
/弄死猪猪
if(pig[a].go==0)
{
if(pig[a].go==0&&pig[a].W!=2&&pig[a].W!=3&&pig[a].Y<16) Cout(a,202,202),pig[a].Y=16;
if(pig[a].go==0&&pig[a].W==4&&pig[a].Y<20) pig[a].W=1;
int Xx=toint(pig[a].X),Xy=toint(pig[a].Y);
if(pig[a].W==6) SetPos(pig[a].X,pig[a].Y),Color(9),cout<<"TN",Color(0);
else{
SetPos(pig[a].X,pig[a].Y),Color(2),cout<<"●";
if((pig[a].W==2||pig[a].W==3)&&pig[a].X>=2) SetPos(pig[a].X-2,pig[a].Y),Color(0),cout<<"○",SetPos(pig[a].X-1,pig[a].Y),cout<<"|";
if(pig[a].W==4) SetPos(pig[a].X,pig[a].Y-1),Color(2),cout<<"﹃";
if(pig[a].W==5)
{
SetPos(pig[a].X-1,pig[a].Y),Color(8);SetPos(pig[a].X-1,pig[a].Y-1),cout<<"▁";
if(pig[a].W2==0)cout<<"▅";if(pig[a].W2==1)cout<<"▃";if(pig[a].W2==2)cout<<"▂";if(pig[a].W2==3) pig[a].W=1,pig[a].W2=0,SetPos(pig[a].X-1,pig[a].Y-1),cout<<" ";
}
}
/输出猪猪
if(pig[a].W==2&&pig[a].X>pig[a].S) pig[a].W=3,pig[a].ax=-0.4,pig[a].vx=1.5;
else if(pig[a].W==3&&pig[a].X<=pig[a].S) pig[a].W=2,pig[a].ax=0.4,pig[a].vx=-1.5;
if((pig[a].W==2||pig[a].W==3)&&(pig[a].Y<=10||pig[a].Y>=38)) pig[a].vy*=-1;
if(pig[a].W==4&&R==0&&pig[a].X==20) pig[a].vx=-((rand()%40)/10);
if(pig[a].W==4)
{
int r=rand()%20;
for(int i=Blt-10;i<=Blt;i++) if(r<=5&&blt[i].go==0&&pig[a].Y-blt[i].Y<=5&&abs(blt[i].X-pig[a].X)<=1.5&&r<5) r=0;
if(r==0)
{
m[toint(pig[a].X)][toint(pig[a].Y)-2]=10;m[toint(pig[a].X)][toint(pig[a].Y)-3]=2;
for(int j=toint(pig[a].Y)-1;j>=toint(pig[a].Y)-5;j--)
{
for(int i=Blt-10;i<=Blt;i++) if(blt[i].go==0&&!(blt[i].W==3&&blt[i].boom==1)&&blt[i].W2==0&&toint(blt[i].Y)==j&&abs(blt[i].X-pig[a].X)<=2) blt[i].vy=-2;
for(int i=Pit-50;i<=Pit;i++) if(pig[i].go==0&&toint(pig[i].Y)==j&&abs(pig[i].X-pig[a].X)<=2) pig[i].vy=-1;
}
}
}
/移动猪猪
if(pig[a].go==0&&pig[a].W!=2&&pig[a].W!=3&&pig[a].Y<16) Cout(a,202,202),pig[a].Y=16;
if(pig[a].go==0&&pig[a].W==4&&pig[a].Y<20) pig[a].W=1;
if(pig[a].X>20||pig[a].Y>38||pig[a].X<0||pig[a].Y<=0) pig[a].go=1,Pig--,Cout(a,202,202);
/清除猪猪
}
}
void Creat(int a,int p)
{
if(a==-1&&p==-1)
{
Blt++;blt[Blt].W=What;blt[Blt].W2=1;
blt[Blt].vy=1;blt[Blt].X=19;blt[Blt].Y=0;blt[Blt].boom=1;
}
else if(a==0&&p==-1)
{
int u=rand()%7+1,U=rand()%30;
if(u>=5) Pit++,pig[Pit].Y=rand()%15+20,pig[Pit].X=2,pig[Pit].ax=0.5,pig[Pit].W=1;
if(u==1) Pit++,pig[Pit].Y=rand()%15+20,pig[Pit].X=2,pig[Pit].vy=0.5,pig[Pit].ax=0.5,pig[Pit].S=rand()%5+7,pig[Pit].W=2;
if(u==2) Pit++,pig[Pit].Y=rand()%15+20,pig[Pit].X=2,pig[Pit].ax=0.5,pig[Pit].W=4;
if(u==3) Pit++,pig[Pit].Y=rand()%15+20,pig[Pit].X=2,pig[Pit].ax=0.5,pig[Pit].W=5;
if(u==4) Pit++,pig[Pit].Y=rand()%15+20,pig[Pit].X=2,pig[Pit].ax=0.5,pig[Pit].W=6;
if(U==1) Bot++,boo[Bot].Y=rand()%13+15,boo[Bot].X=(rand()%4)*3+8,boo[Bot].S=0,boo[Bot].mS=rand()%2+2,boo[Bot].W2=1;
}
else
{
Blt++;blt[Blt].W=What;
if(a==1) blt[Blt].X=yX;blt[Blt].Y=yY;blt[Blt].ax=0.5; //抛物线
blt[Blt].vx=-3.5*sin(p*pi/180);
blt[Blt].vy=3*cos(p*pi/180);
if(p<=45) blt[Blt].vy*=1+(0.33-0.01*(45-p));
if(p>=45) blt[Blt].vy*=1+(0.33-0.01*(p-45));
if(blt[Blt].W==6) blt[Blt].vy*=1.2,blt[Blt].ax=0.4;
}
}
void Boom(int a)
{
if(boo[a].W2==0)
{
int ms=boo[a].mS,s=boo[a].S,x=boo[a].X,y=boo[a].Y;
if(s==ms) return;
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(k<=s&&k>=-s&&i<=20&&j<=38&&i>=0&&j>0&&m[i][j]!=1) m[i][j]=2;
}boo[a].S++;
}
if(boo[a].W2==1)
{
int ms=boo[a].mS,s=boo[a].S,x=boo[a].X,y=boo[a].Y;
if(s==ms) return;
if(y-s>10) m[x][y-s]=31-31*(boo[a].W2-1);
if(y+s<40) m[x][y+s]=31-31*(boo[a].W2-1);
boo[a].S++;
}
}
void Move(int a)
{
Color(5);
if(a==-2) SetPos(17,Xy),cout<<" ",SetPos(18,Xy),cout<<" ",SetPos(19,Xy),cout<<" ",SetPos(20,Xy),cout<<" ";
if(a==-1) SetPos(17,Xy),cout<<" ",SetPos(18,Xy),cout<<" ┃ ┃",SetPos(19,Xy),cout<<" ╰┳╯",SetPos(20,Xy),cout<<" ▏";
if(a==0) SetPos(18,Xy),cout<<" ┃",Color(What+10),cout<<"●",Color(5),cout<<"┃",SetPos(19,Xy),cout<<" ╰┳╯",SetPos(20,Xy),cout<<" ▏";
if(a==1) SetPos(18,Xy),cout<<" ",Color(What+10),cout<<"●",Color(5),cout<<" ┃",SetPos(19,Xy),cout<<" ╰┳╯",SetPos(20,Xy),cout<<" ▏";
if(a==2) SetPos(18,Xy),Color(What+10),cout<<"●",Color(5),cout<<"┃ ┃",SetPos(19,Xy),cout<<" ╰┳╯",SetPos(20,Xy),cout<<" ▏";
if(a==3) SetPos(18,Xy),cout<<" ┃ ┃",SetPos(19,Xy),Color(What+10),cout<<"●",Color(5),cout<<"╰┳╯",SetPos(20,Xy),cout<<" ▏";
if(a==4) SetPos(18,Xy),cout<<" ┃ ┃",SetPos(19,Xy),cout<<" ╰┳╯",SetPos(20,Xy),Color(What+10),cout<<"●",Color(5),cout<<" ▏";
if(a==5) SetPos(18,Xy),cout<<" ┃ ┃",SetPos(19,Xy),cout<<" ╰┳╯",SetPos(20,Xy),cout<<" ",Color(What+10),cout<<"●",Color(5),cout<<" ▏";
if(a==6) SetPos(18,Xy),cout<<" ┃ ┃",SetPos(19,Xy),cout<<" ╰┳╯",SetPos(20,Xy),cout<<" ",Color(What+10),cout<<"●",Color(5),cout<<" ";
Color(0);
}
void Start()
{
char g;Color(5);system("cls");
SetPos(1,1);cout<<"------- 愤 怒 的 小 胎 -------";Color(0);
SetPos(3,1);cout<<"空格瞄准,按X触发小胎技能,←→移动弹弓";
SetPos(5,1);cout<<"猪猪技能自动触发,空中会有墙出现。";
SetPos(7,1);cout<<"危险值由命中率,猪的存活时间计算!";
SetPos(9,1);cout<<"危险值点满后失败!1500分通关!";
SetPos(1,20);cout<<"-------- 小 胎 技 能 --------";
SetPos(3,20);Color(11),cout<<"●",Color(0),cout<<":无技能";
SetPos(5,20);Color(12),cout<<"●",Color(0),cout<<":分身!不同分身初速度大小相同,";
SetPos(6,20);cout<<" 方向不同。";
SetPos(7,20);Color(13),cout<<"●",Color(0),cout<<":加速!以当前速度做匀速直线运动,";
SetPos(8,20);cout<<" 且免疫狙击猪的冲击。";
SetPos(9,20);Color(14),cout<<"●",Color(0),cout<<":投蛋!并获得向上速度做匀速直线";
SetPos(10,20);cout<<" 运动,快达可以穿墙。";
SetPos(11,20);Color(15),cout<<"●",Color(0),cout<<":爆炸!";
SetPos(13,20);Color(16),cout<<"●",Color(0),cout<<":回旋!开始做向左加速运动!发射";
SetPos(14,20);cout<<" 时获得双倍水平速度。";
SetPos(15,20);Color(17),cout<<"●",Color(0),cout<<":[被动] 弹跳力为普通鸟三倍。发射";
SetPos(16,20);cout<<" 时获得1.5倍水平、竖直速度。";
SetPos(11,1);cout<<"-------- 猪 猪 技 能 --------";
SetPos(13,2);Color(2),cout<<"●",Color(0),cout<<":无技能";
SetPos(14,1);Color(8),cout<<"▁▅";
SetPos(15,2);Color(2),cout<<"●",Color(0),cout<<":防御力为普通猪三倍";
SetPos(16,2);cout<<"○";
SetPos(17,2);cout<<"│:做空中简谐运动,受死范围";
SetPos(18,2);Color(2),cout<<"●",Color(0),cout<<" 为普通猪两倍。";
SetPos(19,2);cout<<" 有几率跳起或发射冲击波,冲";
SetPos(20,1);Color(2),cout<<"﹃●",Color(0),cout<<":开小胎与同类,可以引爆TNT!";
SetPos(18,20);Color(5),cout<<"按 y 开始游戏!";
A:if(kbhit()) g=_getch();
if(g!='y') goto A;
}
int main()
{
system("mode con cols=79 lines=22");
CONSOLE_CURSOR_INFO cursor_info={1,0};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
srand((unsigned)time(NULL));St:Start();system("cls");
memset(blt,0,sizeof(blt));memset(pig,0,sizeof(pig));
memset(boo,0,sizeof(boo));memset(m,0,sizeof(m));
T=put=K=K2=Sle=What=Pig=Sco=0;pigk=scok=-1;
Xy=4,yX=18,yY=6;Blt=20,Bot=20,Pit=60;Color(7);
SetPos(19,14);cout<<"■";
SetPos(20,13);cout<<" █▍";m[19][14]=m[20][13]=m[20][14]=1;
SetPos(21,0);for(int i=0;i<39;i++) cout<<"■",m[21][i]=1;
Color(0);What=rand()%5+1;
while(1)
{
if(Sco>=1500) break;
T++;K=0;Color(0);
if(Sco!=scok) SetPos(1,1),cout<<"分数:"<<Sco<<' ';
if(Pig!=pigk){SetPos(3,1);cout<<"危险值:";int aa=min(Sco/100,10);Pig+=aa;
SetPos(3,5);if(Pig<=2) Color(2);else if(Pig<=4) Color(16);else if(Pig<=6) Color(7);else if(Pig<=9) Color(6);
else if(Pig<=12) Color(3);else if(Pig<=15) Color(17);else Color(11);
for(int i=1;i<=Pig;i++) cout<<"■";Color(0);cout<<' '<<Pig;for(int i=1;i<=5;i++) cout<<" ";
if(Pig>18) break;Pig-=aa;}
scok=Sco;pigk=Pig;
if(GetAsyncKeyState(VK_LEFT)&0x8000&&Xy>0) Move(-2),Xy--,K=1;
if(GetAsyncKeyState(VK_RIGHT)&0x8000&&Xy<10) Move(-2),Xy++,K=1;
if(K==1)
{
if(put==0&&Sle==0) Move(0);
else Move(-1);
}
if(kbhit())
{
char g=_getch();
if(g=='x'||g=='X')
{
for(int i=Blt-10;i<=Blt;i++)
if(blt[i].go==0&&blt[i].boom==0&&blt[i].W!=1&&blt[i].W!=7)
{
blt[i].boom=1;
if(blt[i].W==2)
{
Blt++;blt[Blt].W=2;blt[Blt].vy=blt[i].vy*1.2;blt[Blt].vx=blt[i].vx+1;
blt[Blt].ax=blt[i].ax;blt[Blt].X=blt[i].X;blt[Blt].Y=blt[i].Y;blt[Blt].boom=1;
Blt++;blt[Blt].W=2;blt[Blt].vy=blt[i].vy*0.7;blt[Blt].vx=blt[i].vx-1;
blt[Blt].ax=blt[i].ax;blt[Blt].X=blt[i].X;blt[Blt].Y=blt[i].Y;blt[Blt].boom=1;
}
if(blt[i].W==3) blt[i].vy=fmax(blt[i].vy*1.5,2.5),blt[Blt].vx+=1,blt[i].ax=0;
if(blt[i].W==4)
{
blt[i].vx=-3;blt[i].ax=0.1;Blt++;blt[Blt].boom=1;blt[Blt].W=10;
blt[Blt].X=blt[i].X;blt[Blt].Y=blt[i].Y;blt[Blt].ax=blt[i].ax,blt[Blt].vx=1;
}
if(blt[i].W==5) Bot++,boo[Bot].X=blt[i].X,boo[Bot].Y=blt[i].Y,boo[Bot].S=1,boo[Bot].mS=5,blt[i].go=1;
if(blt[i].W==6) blt[i].ay=-1,blt[i].ax=0.3,blt[i].vx=min(blt[i].vx/2,(float)0);
break;
}
}
}
if(GetAsyncKeyState(' ')&0x8000&&K==0&&Sle==0)
{
if(put<=5) Move(1),yX=18,yY=Xy+1;
else if(put<=20) Move(2),yX=18,yY=Xy;
else if(put<=40) Move(3),yX=19,yY=Xy;
else if(put<=60) Move(4),yX=20,yY=Xy;
else if(put<=80) Move(5),yX=20,yY=Xy+1;
else Move(6),yX=20,yY=Xy+2;
if(put==0) K2=1;if(put==90) K2=-1;
if(K2==1) put+=min(rand()%7+1,90-put);
if(K2==-1) put-=min(rand()%7+1,put);
Cout(1,17,Xy+2);
}
if((!(GetAsyncKeyState(' ')&0x8000)&&(put!=0))||(put!=0&&K==1))
Move(-1),Creat(1,put),put=0,yX=18,yY=5,Sle=1,What=rand()%7+1,Creat(-1,-1),Sco=max(Sco-5,0);
for(int i=Blt-10;i<=Blt;i++) if(blt[i].go==0) Go(i);
for(int i=Bot-10;i<=Bot;i++) if(boo[i].go==0) Boom(i),Cout(2,0,0);
for(int i=Pit-50;i<=Pit;i++) if(pig[i].go==0) Kill(i);
if(Sle!=0) Move(-1);
else if(put==0) Move(0);
if(T%300==0) system("cls"),pigk=scok=-1;
if(T%100==0)
{
Color(7);
for(int i=0;i<=18;i++)
for(int j=0;j<=40;j++) if(m[i][j]==1&&T%100==0) SetPos(i,j),cout<<"■";
SetPos(19,14),cout<<"■",SetPos(20,13),cout<<" █▍";
SetPos(21,0);for(int i=0;i<39;i++) cout<<"■";Color(0);
}
if(T%min(50,(2000-Sco)/30)==0) Pig++,Creat(0,-1);
Sleep(30);
}
if(Sco<1500) {SetPos(9,17);system("color 7F");Color(11);cout<<"YOU DIE !";}
else {SetPos(9,17);system("color 6E");Color(5);cout<<"YOU WIN !";}
SetPos(11,16);Sleep(1000);cout<<"play again? (y/n)";Sleep(1000);char g;
A:if(kbhit()) g=_getch();SetPos(18,0);
if(g=='n') return 0;
else if(g!='y') goto A;
else if(g=='y') goto St;
}
<2019> 小胎大乱斗
#include<bits/stdc++.h>
#include<windows.h>
#include<stdio.h>
#include<conio.h>
#include<time.h>
using namespace std;
bool Black;
void Color(int a){
if(Black==1) {SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0);return;}
if(a==0) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(a==1) 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_GREEN|FOREGROUND_BLUE);
if(a==8) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN);
if(a==9) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE);
if(a==10) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);
if(a==11) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN);
if(a==12) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
}
void SetPos(int x,int y) {COORD pos;pos.X=y*2,pos.Y=x;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}
void Slow(int a,char *p) {while(1){if(*p!=0)printf("%c",*p++);else break;Sleep(a);}}
struct node{
char Name[201];
int Blood,Bloodmax,Bloodjia;
int Skilnum,Skilmax,Money,EXP,Shan;
int Skil[1001],Skilstr[1001]; //触发率
int Blp,Blpt,Duk,Dut,Ice,Yun,Wudi,Wudit,Qipt;
float Qi,Qip,Qijia;
}You[1001],Guai[1001];
struct node2{
char Name[201];
float Qi;
int Kill,What,color; //物法
int Any,Anykill[1001],Anywhat[1001],Time[1001]; //额外种类
float Anyqi[1001];
}Skill[1001];
int Skkk[1001],Skll,skk,Tong,Tongmax,Ju,Juk,Jiao,Shen,Ji,Yuan,Shan,Fu;
int dy,dd,Dy,Dd,sa,sb,sc,ss,k1=-1,k2,k3,k4;
bool Y[10001],D[10001];
void CheckMe(){
int aa=0;
system("cls");Color(0);
SetPos(1,1),printf("--------查看本体技能--------");
SetPos(3,1),printf("技能数量上限:%d",You[0].Skilmax);
for(int i=1;i<=You[0].Skilmax;i++)
{
if(You[0].Skilnum<i) {SetPos(5,i*11-10),cout<<"技能"<<i<<":空技能槽";continue;}
SetPos(5,i*11-10),cout<<"技能"<<i<<":";
Color(Skill[You[0].Skil[i]].color);printf("%s",Skill[You[0].Skil[i]].Name);Color(0);
SetPos(7,i*11-10),cout<<"耗气量:";printf("%0.1f",Skill[You[0].Skil[i]].Qi);
SetPos(9,i*11-10),cout<<"技能类型:";
if(Skill[You[0].Skil[i]].What==1) cout<<"单体伤害";
if(Skill[You[0].Skil[i]].What==2) cout<<"群体伤害";
if(Skill[You[0].Skil[i]].What==3) cout<<"防御与辅助";
if(Skill[You[0].Skil[i]].What<=2) SetPos(11,i*11-10),cout<<"攻击力:"<<Skill[You[0].Skil[i]].Kill;
else SetPos(11,i*11-10),cout<<"无攻击力......";
SetPos(13,i*11-10); if(Skill[You[0].Skil[i]].What%10!=4) cout<<"额外";cout<<"效果:";
if(Skill[You[0].Skil[i]].Any==0) cout<<"无";
else
{
for(int j=1;j<=Skill[You[0].Skil[i]].Any;j++)
{
aa=max(aa,j);
int Sk=Skill[You[0].Skil[i]].Anywhat[j];
SetPos(14+j*3-2,i*11-10);printf("%d. ",j);
if(Skill[You[0].Skil[i]].What<=2)
{
if(Sk==1) printf("冰冻"),SetPos(14+j*3-1,i*11-9),printf(" 持续时间:%d",Skill[You[0].Skil[i]].Time[j]);
if(Sk==2) printf("毒伤"),SetPos(14+j*3-1,i*11-9),printf(" 攻击力:%d",Skill[You[0].Skil[i]].Anykill[j]),SetPos(14+j*3,i*11-9),printf(" 持续时间:%d",Skill[You[0].Skil[i]].Time[j]);
if(Sk==3) printf("暴击率"),SetPos(14+j*3-1,i*11-9),printf(" 触发百分比:%d",Skill[You[0].Skil[i]].Anykill[j]),cout<<'%';
if(Sk==4) printf("连击率"),SetPos(14+j*3-1,i*11-9),printf(" 触发百分比:%d",Skill[You[0].Skil[i]].Anykill[j]),cout<<'%';
if(Sk==5) printf("眩晕率"),SetPos(14+j*3-1,i*11-9),printf(" 触发百分比:%d",Skill[You[0].Skil[i]].Anykill[j]),cout<<'%';
if(Sk==6) printf("百分比伤害"),SetPos(14+j*3-1,i*11-9),printf(" 伤害百分比:%d",Skill[You[0].Skil[i]].Anykill[j]),cout<<'%';
if(Sk==7) printf("吸血"),SetPos(14+j*3-1,i*11-9),printf(" 加血量:%d",Skill[You[0].Skil[i]].Kill);
}
else
{
if(Sk==1) printf("加血"),SetPos(14+j*3-1,i*11-9),printf(" 增幅量:%d",Skill[You[0].Skil[i]].Anykill[j]);
if(Sk==2) printf("无敌"),SetPos(14+j*3-1,i*11-9),printf(" 持续时间:%d",Skill[You[0].Skil[i]].Time[j]);
if(Sk==3) printf("持续加血"),SetPos(14+j*3-1,i*11-9),printf(" 增幅量:%d",Skill[You[0].Skil[i]].Anykill[j]),SetPos(14+j*3,i*11-9),printf(" 持续时间:%d",Skill[You[0].Skil[i]].Time[j]);
if(Sk==4) printf("持续加气"),SetPos(14+j*3-1,i*11-9),printf(" 增幅量:%0.1f",Skill[You[0].Skil[i]].Anyqi[j]),SetPos(14+j*3,i*11-9),printf(" 持续时间:%d",Skill[You[0].Skil[i]].Time[j]);
}
}
}
}
SetPos(16+aa*3,1),cout<<"按任意键退出。";
char a;a=_getch();
}
void ChangeSkill(){
system("cls");Color(0);
if(Jiao==4) {SetPos(22,1),Color(5),printf("教程提示 4 :你现在最多可以装备2个技能,\n 技能均需要“气”来使用,你可以“蓄气”来增加你的气数。\n 按 2 1 装备,否则退出教程。"),Color(0);SetPos(0,0);}
if(Jiao==8) {SetPos(22,1),Color(5),printf("教程提示 8 :群攻技能无需瞄准,\n 其会在发出时攻击所有人。\n 按 1 1 装备,否则退出教程。"),Color(0);SetPos(0,0);}
SetPos(1,1),printf("--------修改本体技能--------");
SetPos(3,1),printf("本体技能:\n");int i;
for(i=1;i<=You[0].Skilnum;i++) Color(0),printf("\n %d: ",i),Color(Skill[You[0].Skil[i]].color),printf("%s",Skill[You[0].Skil[i]].Name);
if(You[0].Skilnum<You[0].Skilmax) Color(0),printf("\n %d: 放入空技能槽",You[0].Skilnum+1),i++;
Color(0),printf("\n\n 闲置技能:\n");
if(skk==0) printf("\n 无");
else for(int i=1;i<=skk;i++) Color(0),SetPos(9+i,1),printf("\n %d: ",i),Color(Skill[Skkk[i]].color),printf("%s",Skill[Skkk[i]].Name);
Color(0),printf("\n\n 请输入你想交换的两个技能的编号(回车确定,输 0 0 退出)----- ");int a,b;cin>>a>>b;
if(a==2&&b==1&&Jiao==4) Jiao++;if((a!=2||b!=1)&&Jiao==4) Jiao=-1;
if(a==1&&b==1&&Jiao==8) Jiao++;if((a!=1||b!=1)&&Jiao==8) Jiao=-1;
if(a==You[0].Skilnum+1)
{
You[0].Skilnum++,You[0].Skil[You[0].Skilnum]=Skkk[b];
for(int i=b;i<skk;i++) swap(Skkk[i],Skkk[i+1]);Skkk[skk]=0;skk--;ChangeSkill();
}
else if(a!=0) swap(You[0].Skil[a],Skkk[b]),ChangeSkill();
}
void CheckUs(){
system("cls");Color(0);
SetPos(1,1),printf("--------查看同伴技能--------");
SetPos(3,1),printf("同伴数量:%d 同伴上限:%d",Tong,Tongmax);
for(int i=1;i<=Tong;i++)
{
SetPos(5,i*11-10),cout<<"同伴"<<i<<":";
SetPos(7,i*11-10),cout<<"技能数量上限:"<<You[i].Skilmax;
SetPos(9,i*11-10),cout<<"技能数量:"<<You[i].Skilnum;
for(int j=1;j<=You[i].Skilnum;j++)
SetPos(9+2*j,i*11-10),printf("第%d技能:",j),Color(Skill[You[i].Skil[j]].color),cout<<Skill[You[i].Skil[j]].Name,Color(0);
}
SetPos(22,1),cout<<"按任意键退出。";
char a;a=_getch();
}
void StartSkill(){
system("cls");Color(0);
SetPos(1,1),printf("Hi,请输入你的新技能的名字......");
int x=100+Skll;Skll++;float X=1,Sha=0;skk++,Skkk[skk]=x;
scanf("%s",&Skill[x].Name);
printf("\n 请输入技能种类......\n\n");
printf(" 1.单体伤害 2.群体伤害 3.防御与辅助 ..... ");
cin>>Skill[x].What;if(Skill[x].What==2) X*=3;
if(Skill[x].What<=2)
{
printf("\n 请输入技能攻击力(建议<100,不然耗气量会巨多)......");cin>>Skill[x].Kill;Sha+=Skill[x].Kill;
printf("\n 请输入技能额外效果数(建议<3,不然耗气量会巨多)......");cin>>Skill[x].Any;
for(int i=1;i<=Skill[x].Any;i++)
{
printf("\n 请输入技能 额外效果 %d:",i);
printf("\n\n 1.冰冻 2.毒伤 3.暴击率 4.连击率");
printf("\n 5.眩晕率 6.百分比伤害 7.吸血 ..... ");//10为 偷钱
cin>>Skill[x].Anywhat[i];int a=Skill[x].Anywhat[i];
if(a>=3&&a<=6) printf("\n 请输入其的百分比(必须<80!建议<30,不然耗气量会巨多)......"),cin>>Skill[x].Anykill[i];
if(a==2) printf("\n 请输入其的攻击力(建议<30,不然耗气量会巨多)......"),cin>>Skill[x].Anykill[i];
if(a<=2) printf("\n 请输入其的持续时间(建议<4,不然耗气量会巨多)......"),cin>>Skill[x].Time[i];
int w=Skill[x].Kill,z=Skill[x].Anykill[i],t=Skill[x].Time[i];
if(a==1) Sha+=50*t;if(a==2) Sha+=0.5*z*t;
if(a==3) {if(z<20) X*=1+z/100;else if(z<50) X*=1+z/50;else X*=z/20;}
if(a==4) {if(z<30) X*=1+z/80;else if(z<60) X*=0.8+z/30;else X*=z/5-3;}
if(a==5) {if(z<30) X*=1+z/100;else if(z<50) X*=0.8+z/40;else X*=z/10-3;}
if(a==6) Sha+=3*z;if(a==7) Sha+=1.3*w;
}
}
else
{
printf("\n 请输入技能效果数(建议<3,不然耗气量会巨多)......");cin>>Skill[x].Any;
for(int i=1;i<=Skill[x].Any;i++)
{
printf("\n 请输入技能 额外效果 %d ......",i);
printf("\n\n 1.加血 2.无敌 3.持续加血 4.持续加气"); //5为 召唤
cin>>Skill[x].Anywhat[i];int a=Skill[x].Anywhat[i];
if(a==1||a==3) printf("\n 请输入其的增幅量(建议<30,不然耗气量会巨多)......"),cin>>Skill[x].Anykill[i];
if(a==4) printf("\n 请输入其的增幅量(可输入一位小数,建议<3,不然耗气量会巨多)......"),cin>>Skill[x].Anyqi[i];
if(a>=2) printf("\n 请输入其的持续时间(建议<4,不然耗气量会巨多)......"),cin>>Skill[x].Time[i];
int w=Skill[x].Kill,z=Skill[x].Anykill[i],t=Skill[x].Time[i];float v=Skill[x].Anyqi[i];
if(a==1) Sha+=z;if(a==2) Sha+=20*t;if(a==3) Sha+=t*z;if(a==4) Sha+=20*t*v;if(a==4&&t==1) Sha*=500;if(a==4&&t==2) Sha*=100;
}
}
printf("\n 请输入其的颜色......");
Color(1),cout<<"\n 1.蓝 ";Color(2),cout<<"2.绿 ";Color(3),cout<<"3.紫 ";Color(4),cout<<"4.红 ";Color(5),cout<<"5.黄 ";Color(6),cout<<"6.深蓝 ";
Color(7),cout<<"\n 7.青 ";Color(8),cout<<"8.深绿 ";Color(9),cout<<"9.深紫 ";Color(10),cout<<"10.深红 ";Color(11),cout<<"11.木色 ";Color(12),cout<<"12.灰 ";
Color(0),cin>>Skill[x].color;
if(Sha<20) Sha=Sha/30;else if(Sha<50) Sha=Sha/40+0.5;else if(Sha<200) Sha=Sha/150+1.5;else Sha=Sha/70;
Skill[x].Qi=Sha*X*10/(0.8+0.1*Ju);int skillqi=Skill[x].Qi;Skill[x].Qi=(float)skillqi/10;
printf("\n 计算已完成,这个技能的耗气量为------- %0.1f\n",Skill[x].Qi);
cout<<"\n 按 y 更改技能,按 0 退出。";
char a;cin>>a;if(a=='y') ChangeSkill();
}
void Main();
void Killk(int c,int a,int b){//单体
int RR=0,bxb=0;if(Guai[b].Blood<=0) return;int RRR=rand()%100;
if(Skill[a].Kill>5) RR=rand()%(Skill[a].Kill/5)-Skill[a].Kill/10;
printf("\n %s攻击了%s!\n",You[c].Name,Guai[b].Name);Sleep(200);
if(Guai[b].Wudi>0) {printf("\n 但是!%s是无敌的!\n",Guai[b].Name);Sleep(200);return;}
if(Guai[b].Shan>RRR) {printf("\n 但是!%s闪避开了!\n",Guai[b].Name);Sleep(200);return;}
int ki=Skill[a].Kill+RR;Guai[b].Blood-=ki;
if(Skill[a].Kill>0) {printf("\n %s受到%d点伤害,血量还剩%d。\n",Guai[b].Name,ki,Guai[b].Blood);Sleep(200);}
for(int i=1;i<=Skill[a].Any;i++)
{
int j=Skill[a].Anywhat[i],k=Skill[a].Time[i],l=Skill[a].Anykill[i],m=Skill[a].Kill,mmm;
int r1=rand()%100+1,r2=rand()%50+51,r3=rand()%100+1;
if(j==1) Guai[b].Ice+=k,printf("\n %s被冰冻!冰冻时间还剩%d。\n",Guai[b].Name,Guai[b].Ice);
if(j==2) Guai[b].Dut+=k,Guai[sb].Duk=l,printf("\n %s中毒!中毒时间还剩%d。\n",Guai[b].Name,Guai[b].Dut);
if(j==3&&r1<=l) mmm=m*r2/100,Guai[b].Blood-=mmm,printf("\n %s被暴击!多受到%d点伤害,血量还剩%d。\n",Guai[b].Name,mmm,Guai[b].Blood);
if(j==4&&r1<=l&&Guai[b].Blood>0) Guai[b].Blood-=m,printf("\n %s被连击!再次受到%d点伤害,血量还剩%d。\n",Guai[b].Name,m,Guai[b].Blood),i--;
if(j==5&&r1<=l) Guai[b].Yun++,printf("\n %s被击晕!击晕时间还剩%d。\n",Guai[b].Name,Guai[b].Yun);
if(j==6) mmm=Guai[b].Blood*l/100,Guai[b].Blood-=mmm,printf("\n %s遭受百分比伤害!受到%d点伤害,血量还剩%d。\n",Guai[b].Name,mmm,Guai[b].Blood);
if(j==7) You[c].Blood=min(You[c].Bloodmax,You[c].Blood+Skill[a].Kill+RR),printf("\n %s被吸血! %s的血量增加%d,还剩%d。\n",Guai[b].Name,You[c].Name,Skill[a].Kill+RR,You[c].Blood);
Sleep(200);
}if(Guai[b].Blood<=0) Color(4),printf("\n %s阵亡!",Guai[b].Name),dy--,Color(0),printf("你的金币+%d!\n",Guai[b].Money),You[0].Money+=Guai[b].Money;
}
void Killkk(int c,int a){//辅助
for(int i=1;i<=Skill[a].Any;i++)
{
int j=Skill[a].Anywhat[i],k=Skill[a].Time[i],l=Skill[a].Anykill[i];float m=Skill[a].Anyqi[i];
int r1=rand()%100+1,r2=rand()%100+1,r3=rand()%100+1;
if(j==1) You[c].Blood+=l,You[c].Blood=min(You[c].Bloodmax,You[c].Blood),printf("\n %s加血%d!血量还剩%d。\n",You[c].Name,l,You[c].Blood);
if(j==2) You[c].Wudi+=k,printf("\n %s开启无敌!无敌时间还剩%d。\n",You[c].Name,You[c].Wudi);
if(j==3) You[c].Blpt+=k,You[c].Blp=l,printf("\n %s开启持续加血!持续时间还剩%d。\n",You[c].Name,You[c].Blpt);
if(j==4) You[c].Qipt+=k,You[c].Qip=m,printf("\n %s开启持续加气!持续时间还剩%d。\n",You[c].Name,You[c].Qipt);
Sleep(200);
}
}
void Killkkk(int c,int a){//群攻
bool k[1001];memset(k,0,sizeof(k));
int R=min(rand()%3+4,dy),ll=0;
for(int i=1;i<=R;i++)
{
int j=rand()%Dy+1;
if(Guai[j].Blood>0&&k[j]==0) Killk(c,a,j),k[j]=1,ll=0;
else i--,ll++;
if(ll>=5) break;
}
}
void Killk2(int b,int a,int c){//怪单体
int RR=0;if(Skill[a].Kill>5) RR=rand()%(Skill[a].Kill/5)-Skill[a].Kill/10;
int RRR=rand()%100;
printf("\n %s攻击了%s!\n",Guai[b].Name,You[c].Name);Sleep(200);
if(You[c].Wudi>0) {printf("\n 但是!%s是无敌的!\n",You[c].Name);Sleep(200);return;}
if(You[c].Shan>RRR) {printf("\n 但是!%s闪避开了!\n",You[c].Name);Sleep(200);return;}
int ki=Skill[a].Kill+RR;You[c].Blood-=ki;
if(Skill[a].Kill>0) {printf("\n %s受到%d点伤害,血量还剩%d。\n",You[c].Name,ki,You[c].Blood);Sleep(200);}
for(int i=1;i<=Skill[a].Any;i++)
{
int j=Skill[a].Anywhat[i],k=Skill[a].Time[i],l=Skill[a].Anykill[i],m=Skill[a].Kill,mmm;
int r1=rand()%100+1,r2=rand()%50+51,r3=rand()%100+1;
if(j==1) You[c].Ice+=k,printf("\n %s被冰冻!冰冻时间还剩%d。\n",You[c].Name,You[c].Ice);
if(j==2) You[c].Dut+=k,You[c].Duk=l,printf("\n %s中毒!中毒时间还剩%d。\n",You[c].Name,You[c].Dut);
if(j==3&&r1<=l) mmm=m*r2/100,You[c].Blood-=mmm,printf("\n %s被暴击!多受到%d点伤害,血量还剩%d。\n",You[c].Name,mmm,You[c].Blood);
if(j==4&&r1<=l&&You[c].Blood>0) You[c].Blood-=m,printf("\n %s被连击!再次受到%d点伤害,血量还剩%d。\n",You[c].Name,m,You[c].Blood),i--;
if(j==5&&r1<=l) You[c].Yun++,printf("\n %s被击晕!击晕时间还剩%d。\n",You[c].Name,You[c].Yun);
if(j==6) mmm=You[c].Blood*l/100,You[c].Blood-=mmm,printf("\n %s遭受百分比伤害!受到%d点伤害,血量还剩%d。\n",You[c].Name,mmm,You[c].Blood);
if(j==7) Guai[b].Blood=min(Guai[b].Bloodmax,Guai[b].Blood+Skill[a].Kill+RR),printf("\n %s被吸血! %s的血量增加%d,还剩%d。\n",You[c].Name,Guai[b].Name,Skill[a].Kill+RR,Guai[b].Blood);
if(j==10) l=min(You[0].Money,l),You[0].Money-=l,Guai[b].Money+=l,printf("\n 你队被偷钱!金币数量减少%d,还剩%d,%s金币加为%d。\n",l,You[0].Money,Guai[b].Name,Guai[b].Money);
Sleep(200);
}int as=rand()%5;if(You[c].Skilnum==0) as=0;
if(Skill[a].What==1&&Skill[a].Anywhat[1]==10) as=1; //偷钱
if(c!=0&&You[c].Skilmax!=You[c].Skilnum&&as==0) Color(5),printf("\n 但是!%s学会了此技能!\n",You[c].Name),You[c].Skilnum++,You[c].Skil[You[c].Skilnum]=a,Color(0),Sleep(200);
if(You[c].Blood<=0)
{
Color(4),printf("\n %s阵亡!\n",You[c].Name),dd--;int rrR=rand()%30;
if(rrR==0&&c!=0)
{
Tong=max(0,Tong-1);Slow(70,"\n 你的同伴对你们黑暗的前途叹了口气...\n 毅然决然地拖着已失去知觉的身体,走出了战场...\n 消失在地平线上!\n");
for(int i=c;i<=Tong;i++) swap(You[i],You[i+1]);
}Color(0);
}
if(You[0].Blood<=0&&Fu!=0) Color(5),printf("\n 但是!%s复活!\n",You[c].Name),You[0].Blood=20,dd++,Fu--,Color(0);
}
void Startguai(int a);
void Killkk2(int a,int b){//怪辅助
for(int i=1;i<=Skill[a].Any;i++)
{
int j=Skill[a].Anywhat[i],k=Skill[a].Time[i],l=Skill[a].Anykill[i];
int r1=rand()%100+1,r2=rand()%100+1,r3=rand()%100+1;
if(j==1) Guai[b].Blood+=l,Guai[b].Blood=min(Guai[b].Bloodmax,Guai[b].Blood),printf("\n %s加血%d!血量还剩%d。\n",Guai[b].Name,l,Guai[b].Blood);
if(j==2) Guai[b].Wudi+=k,printf("\n %s开启无敌!无敌时间还剩%d。\n",Guai[b].Name,Guai[b].Wudi);
if(j==3) Guai[b].Blpt+=k,Guai[b].Blp=l,printf("\n %s开启持续加血!持续时间还剩%d。\n",Guai[b].Name,Guai[b].Blpt);
if(j==5) Startguai(Skill[a].Anykill[i]),printf("\n %s召唤了%s!%s加入战场。\n",Guai[b].Name,Guai[Dy].Name,Guai[Dy].Name);
Sleep(200);
}
}
void Killkkk2(int a,int b){//怪群攻
bool k[1001];memset(k,0,sizeof(k));
int R=min(rand()%3+3+Ju,dd),ll=0;
for(int i=1;i<=R;i++)
{
int j=rand()%Dd;
if(You[j].Blood>0&&k[j]==0) Killk2(b,a,j),k[j]=1,ll=0;
else i--,ll++;
if(ll>=5) break;
}
}
void Killguai(int aa){//你队
int kk=0;Color(5);
printf("\n %s的回合!\n\n",You[aa].Name),Sleep(500);Color(0);
if(You[aa].Wudi>0) You[aa].Wudi--,printf(" %s还在无敌!持续时间还剩%d。\n\n",You[aa].Name,You[aa].Wudi),Sleep(200);
if(You[aa].Qipt>0) You[aa].Qipt--,You[aa].Qi+=You[aa].Qip,printf(" %s的气增加%0.1f,还剩%0.1f,持续时间还剩%d。\n\n",You[aa].Name,You[aa].Qip,You[aa].Qi,You[aa].Qipt),Sleep(200);
if(You[aa].Blpt>0) You[aa].Blpt--,You[aa].Blood+=You[aa].Blp,You[aa].Blood=min(You[aa].Bloodmax,You[aa].Blood),printf(" %s的血量增加%d,还剩%d,持续时间还剩%d。\n\n",You[aa].Name,You[aa].Blp,You[aa].Blood,You[aa].Blpt),Sleep(200);
if(You[aa].Dut>0) You[aa].Dut--,You[aa].Blood-=You[aa].Duk,printf(" %s毒发!其的血量减少%d,还剩%d,持续时间还剩%d。\n\n",You[aa].Name,You[aa].Duk,You[aa].Blood,You[aa].Dut),Sleep(200);
if(You[aa].Ice>0) kk=1,You[aa].Ice--,printf(" %s被冰冻了......,冰冻时间还剩%d。\n\n",You[aa].Name,You[aa].Ice),Sleep(200);
if(You[aa].Yun>0) {You[aa].Yun--;if(kk==1) cout<<endl<<" 同时,";else cout<<endl<<" ";printf("%s被击晕了......,击晕时间还剩%d\n\n",You[aa].Name,You[aa].Yun),Sleep(200);return;}
if(You[aa].Blood<=0) Color(4),printf("\n %s阵亡!\n",You[aa].Name),dd--,kk=1,Color(0);
if(kk==1) return;
if(aa==0)
{
You[aa].Qi+=You[aa].Qijia;You[aa].Blood+=You[aa].Bloodjia;You[aa].Blood=min(You[aa].Blood,You[aa].Bloodmax);
Color(0),printf(" 你的气数+%0.1f: %0.1f\n",You[aa].Qijia,You[aa].Qi);
Color(0),printf("\n 你的血量+%d: %d\n",You[aa].Bloodjia,You[aa].Blood);printf("\n 你的技能:\n");Sleep(200);
Color(0),printf("\n 0: 蓄气");
for(int i=1;i<=You[aa].Skilnum;i++) {Color(0),printf("\n %d: ",i),Color(Skill[You[aa].Skil[i]].color),printf("%s",Skill[You[aa].Skil[i]].Name);Color(0);if(Skill[You[aa].Skil[i]].Qi>You[aa].Qi) cout<<"(不可用)";}
printf("\n\n 请输入你想使用技能的编号----- ");
int a,b;cin>>a;
if(a==0) You[aa].Qi+=1,printf("\n %s蓄气!你的气数 +1,还剩%0.1f。\n",You[aa].Name,You[aa].Qi);
else
{
int c=You[aa].Skil[a];
if(You[aa].Qi-Skill[c].Qi<0) return;
You[aa].Qi-=Skill[c].Qi;
if(Skill[c].What==1)
{
Color(0),printf("\n 当前敌人:\n");
for(int i=1;i<=Dy;i++) if(Guai[i].Blood>0) {printf("\n %d: %s (血量:%d)",i,Guai[i].Name,Guai[i].Blood);}
printf("\n\n 请输入你想攻击敌人的编号----- ");cin>>b;
}printf("\n\n 你使用技能:");Color(Skill[c].color);printf("%s",Skill[c].Name);Color(0),cout<<" !"<<endl;
if(Skill[c].What==1) Killk(0,c,b);
if(Skill[c].What==2) Killkkk(0,c);
if(Skill[c].What==3) Killkk(0,c);
}
}
else
{
int R=rand()%100+1,l=0,kk=0,o=rand()%5;
if(You[aa].Skilnum!=0) l=rand()%You[aa].Skilnum+1;if(o==0) l=0;
printf(" %s使用技能:",You[aa].Name);Color(Skill[You[aa].Skil[l]].color);Sleep(200);
if(l==0) {cout<<"蓄气 !"<<endl;return;}
printf("%s",Skill[You[aa].Skil[l]].Name);Color(0),cout<<" !"<<endl;
KR:
int sc=rand()%Dy+1;Sleep(200);
if(Skill[You[aa].Skil[l]].What==1) if(Guai[sc].Blood>0) Killk(aa,You[aa].Skil[l],sc); else goto KR;
if(Skill[You[aa].Skil[l]].What==2) Killkkk(aa,You[aa].Skil[l]);
if(Skill[You[aa].Skil[l]].What==3) Killkk(aa,You[aa].Skil[l]);
}
}
void Killyou(int sb){//怪
sa=rand()%dd;
int R=rand()%(100-min(10,Ju*3))+1,l=0,kk=0;Color(5);
printf("\n %s的回合!\n",Guai[sb].Name),Sleep(500);Color(0);
if(Guai[sb].Wudi>0) Guai[sb].Wudi--,printf(" %s还在无敌!持续时间还剩%d。\n\n",Guai[sb].Name,Guai[sb].Wudi),Sleep(200);
if(Guai[sb].Blpt>0) Guai[sb].Blpt--,Guai[sb].Blood+=Guai[sb].Blp,Guai[sb].Blood=min(Guai[sb].Bloodmax,Guai[sb].Blood),printf(" %s的血量增加%d,还剩%d,持续时间还剩%d。\n\n",Guai[sb].Name,Guai[sb].Blp,Guai[sb].Blood,Guai[sb].Blpt),Sleep(200);
if(Guai[sb].Dut>0) Guai[sb].Dut--,Guai[sb].Blood-=Guai[sb].Duk,printf(" %s毒发!它的血量减少%d,还剩%d,持续时间还剩%d。\n\n",Guai[sb].Name,Guai[sb].Duk,Guai[sb].Blood,Guai[sb].Dut),Sleep(200);
if(Guai[sb].Ice>0) kk=1,Guai[sb].Ice--,printf(" %s被冰冻了......,冰冻时间还剩%d。\n\n",Guai[sb].Name,Guai[sb].Ice),Sleep(200);
if(Guai[sb].Yun>0) {Guai[sb].Yun--;if(kk==1) cout<<endl<<" 同时,";else cout<<endl<<" ";printf("%s被击晕了......,击晕时间还剩%d\n\n",Guai[sb].Name,Guai[sb].Yun),Sleep(200);return;}
if(Guai[sb].Blood<=0) Color(4),printf("\n %s阵亡!\n",Guai[sb].Name),dy--,kk=1,Color(0);
if(kk==1) return;
for(int i=1;i<=Guai[sb].Skilnum;i++) {if(R>Guai[sb].Skilstr[i]) continue;else {l=Guai[sb].Skil[i];break;}}
printf("\n %s使用技能:",Guai[sb].Name);Color(Skill[l].color);Sleep(200);
if(l==0) {cout<<"蓄气 !"<<endl;return;}
printf("%s",Skill[l].Name);Color(0),cout<<" !"<<endl;
KR:
int sc=rand()%Dd;Sleep(200);
if(Skill[l].What==1) if(You[sc].Blood>0) Killk2(sb,l,sc); else goto KR;
if(Skill[l].What==3) Killkk2(l,sb);
if(Skill[l].What==2) Killkkk2(l,sb);
}
void Juing(){
system("cls");Color(5);
if(Ju==1) Slow(50,"\n -----------第一章-----------\n\n 这个世界是由SLFDC政府掌管的。\n\n 近几年,由于太上皇的暴政,有10%的诸侯国脱离了此政府。\n\n 为此,SLFDC创立了强大的军事力量,\n\n 由三大教,七武科代表统管。\n\n 而你方则立下了四皇来与之抗衡。\n\n 现在,世界混乱,而你,必定是可以称霸世界,重拾和平的人!\n\n 于是,你走上了与天下人抗争的道路,\n\n 辉煌的前途正向你驶来!");
if(Ju==2) Slow(50,"\n -----------第二章-----------\n\n 在这一年中,四皇小P,老狗,梢公与小梁终于在思想上达成了一致\n\n 一个名为信奥班的群体终于崛起!\n\n 与此同时,因为救下了一位小P的手下,\n\n 你也光荣地入队!\n\n 现在,你开始承受SLFDC更为激烈的打击,\n\n 你一定要创造计策与机会,存活下去!");
if(Ju==3) Slow(50,"\n -----------第三章-----------\n\n 前线传来坏消息,\n\n 太上皇用自己无敌的能力击溃了大部分军队,\n\n 而继续反扑向信奥班本部!\n\n 于是,四皇们决定进军SLFDC本部!\n\n 政府在这时风雨飘摇,欲摧不倒!\n\n 江山即将易主,已经可以看到黎明的曙光!");
if(Ju==4) Slow(50,"\n -----------第四章-----------\n\n 震撼人心的“SLFDC顶上战争”终于爆发了!\n\n 前线军队战斗的轰轰烈烈,尸横遍地!\n\n 在弹尽粮绝之时,你忽然发现,自己已变得超乎想象的强大!\n\n 你从尸山血海中站起,\n\n 经历的所有战争均是超乎想象的宏大!\n\n 你始终相信,终有一天,希望将照在这辽阔的大地上!");
if(Ju==5) Slow(50,"\n -----------第五章-----------\n\n 战争结束了!\n\n 你的目标终于达成了!\n\n 接下来,你就可以肆无忌惮的在你的国度除恶扬善了!\n .\n .\n .\n .\n .\n .\n\n 剧情走完,游戏继续!");
Sleep(3000),system("cls");if(Ju<=1) return;
printf("\n 升级了!\n\n");Sleep(1000);
printf(" 闪避率+2%\n\n");Sleep(500);
printf(" 同伴现有技能攻击力+20%\n\n");Sleep(500);
printf(" 新创自定义技能气量*90%\n\n");Sleep(500);
printf(" 战斗金币量+10%\n\n");Sleep(500);
printf(" 胜利EXP量+10%\n\n");Sleep(500);
printf(" 游戏难度加大!\n\n");Sleep(500);You[0].Shan+=2;
for(int i=1;i<100;i++) {Skill[i].Kill*1.2;for(int j=1;j<=Skill[i].Any;j++) Skill[i].Anykill[j]*1.2;}
Sleep(3000),system("cls");Color(0);
}
void LaoHu(){
system("cls");Color(0);
printf("\n -----------老虎机-----------\n");
for(int i=1;i<=50;i++)
{
SetPos(5,5);cout<<" ";
Color(rand()%13);
SetPos(5,5);cout<<"出奖中。。。"; Sleep(30);
}Color(5);
SetPos(5,2);cout<<"恭喜获得";Re:
int ssa=rand()%6,sr;
if(ssa==0) {sr=rand()%400+100;cout<<"金币"<<sr<<"个!";You[0].Money+=sr;}
if(ssa==1) {sr=rand()%50+30;cout<<"经验"<<sr<<"点!";You[0].EXP+=sr;}
if(ssa==2)
{
KKP:sr=rand()%24+4;
for(int i=1;i<=You[0].Skilnum;i++) if(You[0].Skil[i]==sr) goto KKP;
for(int i=1;i<=skk;i++) if(Skkk[i]==sr) goto KKP;
if(Skill[sr].What==3&&Skill[sr].Anywhat[1]==5) goto KKP; //召唤
if(Skill[sr].What==1&&Skill[sr].Anywhat[1]==10) goto KKP; //偷钱
skk++,Skkk[skk]=sr;cout<<"系统特惠技能:";Color(Skill[Skkk[skk]].color);cout<<Skill[Skkk[skk]].Name;Color(5),cout<<"!";
}
if(ssa==3)
{
if(Tong==Tongmax) goto Re;Tong++;int i=Tong;You[i].Skilnum=0;
You[i].Bloodmax=You[0].Bloodmax-10+rand()%21;You[i].Skilmax=3+rand()%3;
printf("新同伴(血量%d,技能上限%d,会学习)!",You[i].Bloodmax,You[i].Skilmax);
}
if(ssa==4) {cout<<"新技能槽!";You[0].Skilmax++;}
if(ssa==5) {cout<<"血量上限+20%!";You[0].Bloodmax*=1.2;}
Sleep(1000);
}
void Store(){
St:system("cls");Color(0);
if(Jiao==12) {SetPos(22,1),Color(5),printf("教程提示 12 :但是,此游戏的成功方式只有一个:\n 将游戏的剧情完结!\n 按 0 退出,否则退出教程。"),Color(0);SetPos(0,0);}
printf("\n ------------商店------------\n");
printf("\n Money:%d\n",You[0].Money);
printf("\n 1.同伴招募 --- $300\n");
printf("\n 2.药水商店\n");
printf("\n 3.经验升级区\n");
printf("\n 4.老虎机 (会抽出什么呢?...) --- $300\n");
printf("\n 输入 0 退出。----- ");int a;cin>>a;if(a==0&&Jiao==12) Jiao++,You[0].EXP=100;else if(Jiao!=14) Jiao=-1;
if(a==1&&You[0].Money>=300&&Tong<Tongmax)
{
Tong++;int i=Tong;You[i].Skilnum=0;You[0].Money-=300;
You[i].Bloodmax=You[0].Bloodmax-10+rand()%21;You[i].Skilmax=3+rand()%3;
Color(5),printf("\n 恭喜获得新同伴(血量%d,技能上限%d,会学习)!",You[i].Bloodmax,You[i].Skilmax);Color(0),Sleep(3000);
}
if(a==2)
{
Sto:system("cls");Color(0);
printf("\n ----------药水商店----------\n");
printf("\n 注意:所有药水均为自动使用一次性。\n");
printf("\n Money:%d\n",You[0].Money);
printf("\n 1.生命药水 (初始血量+10%) [已有%d个] --- $30\n",Shen);
printf("\n 2.复活药水 (且回血20) [已有%d个] --- $50\n",Fu);
printf("\n 3.敏捷药水 (闪避率+20%) [已有%d个] --- $50\n",Shan);
printf("\n 4.狂暴药水 (回合率+20%) [已有%d个] --- $50\n",Ji);
printf("\n 5.元气药水 (开局1口气) [已有%d个] --- $30\n",Yuan);
printf("\n 6.经验药水 (+10 EXP) --- $100\n");
printf("\n 输入 0 退出。----- ");int aa;cin>>aa;
if(aa==1&&You[0].Money>=30) Shen++,You[0].Money-=30;if(aa==2&&You[0].Money>=50) Fu++,You[0].Money-=50;if(aa==3&&You[0].Money>=50) Shan++,You[0].Money-=50;
if(aa==4&&You[0].Money>=50) Ji++,You[0].Money-=50;if(aa==5&&You[0].Money>=30) Yuan++,You[0].Money-=30;if(aa==6&&You[0].Money>=100) You[0].EXP+=20,You[0].Money-=100;
if(aa!=0) goto Sto;
}
if(a==3)
{
Stoo:system("cls");Color(0);
printf("\n ---------经验升级区---------\n");
printf("\n EXP:%d\n",You[0].EXP);
printf("\n 1.血量上限+10% [已为%d点] --- 50 EXP\n",You[0].Bloodmax);
printf("\n 2.回合加气+0.2 [已为%0.1f口] --- 50 EXP\n",You[0].Qijia);
printf("\n 3.回合加血+5 [已为%d点] --- 70 EXP\n",You[0].Bloodjia);
printf("\n 4.闪避率+5% [已为%d%] --- 70 EXP\n",You[0].Shan);
printf("\n 5.技能槽+1 [已为%d个] --- 100 EXP\n",You[0].Skilmax);
printf("\n 6.同伴上限+1 [已为%d个] --- 100 EXP\n",Tongmax);
printf("\n 7.同伴升级区\n");
printf("\n 输入 0 退出。----- ");int aaa;cin>>aaa;if(aaa==7&&Jiao==13) Jiao++;else if(Jiao!=14) Jiao=-1;
if(aaa==1&&You[0].EXP>=50) You[0].Bloodmax*=1.1,You[0].EXP-=50;
if(aaa==2&&You[0].EXP>=50) You[0].Qijia+=0.2,You[0].EXP-=50;
if(aaa==3&&You[0].EXP>=70) You[0].Bloodjia+=5,You[0].EXP-=70;
if(aaa==4&&You[0].EXP>=70) You[0].Shan+=5,You[0].EXP-=70;
if(aaa==5&&You[0].EXP>=100) You[0].Skilmax++,You[0].EXP-=100;
if(aaa==6&&You[0].EXP>=100) Tongmax++,You[0].EXP-=100;
if(aaa==7)
{
So:system("cls");Color(0);
printf("\n ---------同伴升级区---------\n");
printf("\n EXP:%d 同伴数量:%d\n",You[0].EXP,Tong);
printf("\n 你要升级同伴几?(输入 0 退出)----- ");
int i;cin>>i;if(i==0) goto Stoo;Soo:SetPos(5,1);printf("同伴%d: \n",i);
printf("\n 血量上限:%d (+10%按1 --- 50EXP)\n",You[i].Bloodmax);
printf("\n 回合加血:%d (+5按2 --- 70EXP)\n",You[i].Bloodjia);
printf("\n 闪避率:%d% (+5%按3 --- 70EXP)\n",You[i].Shan);
printf("\n 技能数量上限:%d (+1按4 --- 100EXP)\n",You[i].Skilmax,You[i].Skilnum);
for(int j=1;j<=You[i].Skilnum;j++)printf("\n ----第%d技能:",j),Color(Skill[You[i].Skil[j]].color),cout<<Skill[You[i].Skil[j]].Name,Color(0),printf(" (删除按%d)\n",4+j);
printf("\n 输入 0 重选。----- ");int ab;cin>>ab;
if(ab==1&&You[0].EXP>=50) You[i].Bloodmax*=1.1,You[0].EXP-=50;
if(ab==2&&You[0].EXP>=70) You[i].Bloodjia+=5,You[0].EXP-=70;
if(ab==3&&You[0].EXP>=70) You[i].Shan+=5,You[0].EXP-=70;
if(ab==4&&You[0].EXP>=100) You[i].Skilmax++,You[0].EXP-=100;
if(ab>4) {ab-=4;You[i].Skilnum--;for(int j=ab;j<You[i].Skilnum;j++) swap(You[i].Skil[j],You[i].Skil[j+1]);You[i].Skil[You[i].Skilnum+1]=0;}
if(ab!=0) {system("cls");Color(0);printf("\n ---------同伴升级区---------\n");printf("\n EXP:%d 同伴数量:%d\n",You[0].EXP,Tong);goto Soo;}if(ab==0) goto So;
}
if(aaa!=0) goto Stoo;
}
if(a==4&&You[0].Money>=300) LaoHu(),You[0].Money-=300;
if(a!=0) goto St;
}
void Startguai(int a){
char *str;
dy++;Dy++;
if(a==1) {str="剑客";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=80;Guai[dy].Money=10;Guai[dy].Skilnum=2,Guai[dy].Skil[1]=1,Guai[dy].Skilstr[1]=40,Guai[dy].Skil[2]=4,Guai[dy].Skilstr[2]=90;}
if(a==2) {str="守卫兵";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=100;Guai[dy].Money=20;Guai[dy].Skilnum=2,Guai[dy].Skil[1]=5,Guai[dy].Skilstr[1]=30,Guai[dy].Skil[2]=6,Guai[dy].Skilstr[2]=90;}
if(a==3) {str="史莱姆";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=50;Guai[dy].Money=10;Guai[dy].Skilnum=2,Guai[dy].Skil[1]=7,Guai[dy].Skilstr[1]=50,Guai[dy].Skil[2]=8,Guai[dy].Skilstr[2]=90;}
if(a==4) {str="模仿者";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=You[0].Blood;Guai[dy].Money=20;Guai[dy].Skilnum=3,Guai[dy].Skil[1]=You[0].Skil[1],Guai[dy].Skilstr[1]=30,Guai[dy].Skil[2]=You[0].Skil[2],Guai[dy].Skilstr[2]=60,Guai[dy].Skil[3]=You[0].Skil[3],Guai[dy].Skilstr[3]=90;}
if(a==5) {str="魔术师";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=80;Guai[dy].Money=25;Guai[dy].Skilnum=3,Guai[dy].Skil[1]=9,Guai[dy].Skilstr[1]=20,Guai[dy].Skil[2]=5,Guai[dy].Skilstr[2]=40,Guai[dy].Skil[3]=6,Guai[dy].Skilstr[3]=90;}
if(a==6) {str="巫医";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=70;Guai[dy].Money=20;Guai[dy].Skilnum=3;Guai[dy].Skil[1]=15,Guai[dy].Skilstr[1]=40;Guai[dy].Skil[2]=16,Guai[dy].Skilstr[2]=60;Guai[dy].Skil[3]=17,Guai[dy].Skilstr[3]=90;}
if(a==7) {str="法师";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=80;Guai[dy].Money=30;Guai[dy].Skilnum=3,Guai[dy].Skil[1]=2,Guai[dy].Skilstr[1]=20,Guai[dy].Skil[2]=10,Guai[dy].Skilstr[2]=50,Guai[dy].Skil[3]=11,Guai[dy].Skilstr[3]=90;}
if(a==8) {str="雪怪";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=150;Guai[dy].Money=50;Guai[dy].Skilnum=3;Guai[dy].Skil[1]=12,Guai[dy].Skilstr[1]=50;Guai[dy].Skil[2]=13,Guai[dy].Skilstr[2]=60;Guai[dy].Skil[3]=14,Guai[dy].Skilstr[3]=90;}
if(a==9) {str="巨人";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=200;Guai[dy].Money=50;Guai[dy].Skilnum=2;Guai[dy].Skil[1]=18,Guai[dy].Skilstr[1]=40;Guai[dy].Skil[2]=19,Guai[dy].Skilstr[2]=90;}
if(a==10) {str="蝙蝠";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=20;Guai[dy].Money=3;Guai[dy].Skilnum=2,Guai[dy].Skil[1]=20,Guai[dy].Skilstr[1]=60,Guai[dy].Skil[2]=21,Guai[dy].Skilstr[2]=90;}
if(a==11) {str="乞丐";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=100;Guai[dy].Money=30;Guai[dy].Skilnum=3,Guai[dy].Skil[1]=22,Guai[dy].Skilstr[1]=40,Guai[dy].Skil[2]=23,Guai[dy].Skilstr[2]=80,Guai[dy].Skil[3]=24,Guai[dy].Skilstr[3]=90;}
if(a==12) {str="弓箭手";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=80;Guai[dy].Money=10;Guai[dy].Skilnum=2,Guai[dy].Skil[1]=26,Guai[dy].Skilstr[1]=40,Guai[dy].Skil[2]=25,Guai[dy].Skilstr[2]=90;}
if(a==13) {str="哥布林";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=50;Guai[dy].Money=15;Guai[dy].Skilnum=2,Guai[dy].Skil[1]=5,Guai[dy].Skilstr[1]=20,Guai[dy].Skil[2]=27,Guai[dy].Skilstr[2]=90,Guai[dy].Skil[2]=27,Guai[dy].Skilstr[3]=90;}
if(a==14) {str="酒鬼";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=100;Guai[dy].Money=30;Guai[dy].Skilnum=3,Guai[dy].Skil[1]=28,Guai[dy].Skilstr[1]=30,Guai[dy].Skil[2]=29,Guai[dy].Skilstr[2]=60,Guai[dy].Skil[3]=22,Guai[dy].Skilstr[3]=90;}
if(a==15) {str="战争机器";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=200;Guai[dy].Money=70;Guai[dy].Skilnum=3;Guai[dy].Skil[1]=30,Guai[dy].Skilstr[1]=40;Guai[dy].Skil[2]=31,Guai[dy].Skilstr[2]=70;Guai[dy].Skil[3]=32,Guai[dy].Skilstr[3]=90;}
Guai[dy].Blood*=(0.5*Ju);Guai[dy].Blood+=rand()%11-5;Guai[dy].Bloodmax=Guai[dy].Blood;Guai[dy].Money*=(0.8+0.1*Ju);Guai[dy].Shan=(Ju-2)*5;
}
void Startwar(){
char *str;
dy=Dy=0;dd=Dd=Tong+1;memset(Guai,0,sizeof(Guai));// dd=你方
You[0].Blp=You[0].Blpt=You[0].Duk=You[0].Dut=You[0].Ice=You[0].Yun=You[0].Wudi=You[0].Wudit=You[0].Qipt=You[0].Qi=You[0].Qip=0;
for(int i=1;i<=Tong;i++)
{
str="同伴";You[i].Name[4]=i+'0';
for(int j=0;j<strlen(str);j++)You[i].Name[j]=str[j];You[i].Blood=You[i].Bloodmax;
You[i].Blp=You[i].Blpt=You[i].Duk=You[i].Dut=You[i].Ice=You[i].Yun=You[i].Wudi=You[i].Wudit=You[i].Qipt=You[i].Qi=You[i].Qip=0;
}int r=max(Dd+rand()%3-1,1);int t=rand()%6;if(t<Ju) r++;
for(int i=1;i<=r;i++) Startguai(rand()%15+1);
}
void War(){
As:system("cls");Color(0);
if(Jiao==2) {SetPos(22,1),Color(5),printf("教程提示 2 :杀死所有敌人即可获胜。\n 反之,你队全亡就会失败。\n 按 y 开始,否则退出教程。"),Color(0);SetPos(0,0);}
if(Jiao==6) {SetPos(22,1),Color(5),printf("教程提示 6 :你的气数会每回合增长。\n 但敌人与同伴使用技能没有气数限制。\n 按 y 开始,否则退出教程。"),Color(0);SetPos(0,0);}
if(Jiao==10) {SetPos(22,1),Color(5),printf("教程提示 10 :同伴是没有初始技能的。\n 他会在战斗中自我学习,你们的血量在对战后均会回满。\n 按 y 开始,否则退出教程。"),Color(0);SetPos(0,0);}
SetPos(1,1),printf("----------战斗界面----------\n\n");
memset(Y,0,sizeof(Y));memset(D,0,sizeof(D));Startwar();if(Juk==10) {Juk=0,Juing(),Ju++;goto As;}
printf(" 你将面临的敌人是:\n");
for(int i=1;i<=dy;i++) {printf("\n %d: %s 血量: %d 掉落金币: %d",i,Guai[i].Name,Guai[i].Blood,Guai[i].Money);}
cout<<"\n\n 按 y 开始战斗,按其余键退出 (损失 30"<<'%'<<" EXP)。----- ";
char q;cin>>q;if(q!='y'&&(Jiao==2||Jiao==6||Jiao==10)) Jiao=-1;if(q=='y'&&(Jiao==2||Jiao==6||Jiao==10)) Jiao++;
if(q!='y') {You[0].EXP*=0.7;return;}system("cls");
SetPos(1,1),printf("\n---------开始战斗!---------\n\n");
if(Yuan>=1) You[0].Qi=1;
if(Shen>=1) You[0].Blood*=1.1;
int sh,pan;if(Shan>=1) You[0].Shan+=20,sh=1;
while(dy!=0&&dd!=0)
{
pan=0;KK:pan++;
if(pan>=10) break;
sa=rand()%(dd+dy);sc=0;
if(Ji>0&&You[0].Blood>0) sc=rand()%5;
if(sa<dd) sa=0;else sa=1;
if(k3>=2) sa=1;if(k4>=2) sa=0;
if(sa==0) sb=rand()%Dd; //你攻
if(sa==1) sb=rand()%Dy+1;//怪攻
if(sc==4) sa=0,sb=0;
if(sa==0&&You[sb].Blood<=0) goto KK;
if(sa==1&&Guai[sb].Blood<=0) goto KK;
if((sa==0&&sb==k1)||(sa==1&&sb==k2)) goto KK;
if(sa==0) {k1=sb,k2=0,k3++,k4=0;if(dy<=0||dd<=0) break;Killguai(sb);}
if(sa==1) {k1=-1,k2=sb,k3=0,k4++;if(dy<=0||dd<=0) break;Killyou(sb);}
if(dy<=0||dd<=0) break;Sleep(500);
}Shen=max(Shen-1,0);Ji=max(Ji-1,0);Shan=max(Shan-1,0);Yuan=max(Yuan-1,0);if(sh==1) You[0].Shan-=20;
int ai=(10+Dy*2)*(0.8+0.1*Ju);int bi=(10+Dd*5)*(0.8+0.1*Ju);
if(dy==0) Color(5),printf("\n 你胜利了!!获得%dEXP!\n",ai),You[0].EXP+=ai,Juk+=rand()%2;
else Color(4),printf("\n 你失败了!!减少%d金币!\n",bi),You[0].Money=max(0,You[0].Money-bi);Sleep(3000);
}
bool Read(){
ifstream in("这是你的存档.in");
unsigned long long ioi=0,ioix;
long long Moo=1e9+7;
in>>You[0].Name;
for(int i=0;i<strlen(You[0].Name);i++) ioi=(ioi+(int)You[0].Name[i])*101%Moo;
in>>Skll>>skk>>Tong>>Tongmax>>Ju>>Juk>>Jiao>>Shen>>Ji>>Yuan>>Shan>>Fu;
ioi=(ioi+Skll*103+skk*107+Tong*109+Tongmax*113+Ju*127+Juk*131+Jiao*137+Shen*139+Ji*149+Yuan*151+Shan*157+Fu*163)%Moo;
for(int i=0;i<=Tong;i++)
{
in>>You[i].Blood>>You[i].Bloodmax>>You[i].Bloodjia>>You[i].Skilnum>>You[i].Skilmax>>You[i].Money>>You[i].EXP>>You[i].Shan;in>>You[i].Qijia;
ioi+=(2*ioi+You[i].Blood*167+You[i].Bloodmax*173+You[i].Bloodjia*179+You[i].Skilnum*181+You[i].Skilmax*191+You[i].Money*193+You[i].EXP*197+You[i].Shan*211+(int)You[i].Qijia*223)%Moo;
for(int j=1;j<=You[i].Skilnum;j++) in>>You[i].Skil[j],ioi+=i*j*(ioi+You[i].Skil[j])*227%Moo;
}
for(int i=100;i<=99+Skll;i++)
{
in>>Skill[i].Name;
for(int j=0;j<strlen(Skill[i].Name);j++) ioi+=i*j*(ioi+(int)Skill[i].Name[j])*229%Moo;
in>>Skill[i].Qi>>Skill[i].Kill>>Skill[i].What>>Skill[i].color>>Skill[i].Any;
ioi=ioi+Skill[i].Qi*233+Skill[i].Kill*239+Skill[i].What*241+Skill[i].color*251+Skill[i].Any*257;
ioi%=Moo;
for(int j=1;j<=Skill[i].Any;j++)
{
in>>Skill[i].Anykill[j]>>Skill[i].Anywhat[j]>>Skill[i].Time[j],in>>Skill[i].Anyqi[j];
ioi+=i*j*(ioi+Skill[i].Anykill[j]*263+Skill[i].Anywhat[j]*269+Skill[i].Time[j]*271+(int)Skill[i].Anyqi[j]*277)%Moo;
}
}for(int i=1;i<=skk;i++) in>>Skkk[i],ioi+=(ioi+Skkk[i])*281%Moo;
in>>ioix;
if(ioix!=ioi) {in.close();return 0;}
in.close();return 1;
}
void Save(){
unsigned long long ioi=0;
long long Moo=1e9+7;
ofstream out("这是你的存档.in");
out<<You[0].Name<<'\n';
for(int i=0;i<strlen(You[0].Name);i++) ioi=(ioi+(int)You[0].Name[i])*101%Moo;
out<<Skll<<' '<<skk<<' '<<Tong<<' '<<Tongmax<<' '<<Ju<<' '<<Juk<<' '<<Jiao<<' '<<Shen<<' '<<Ji<<' '<<Yuan<<' '<<Shan<<' '<<Fu<<'\n';
ioi=(ioi+Skll*103+skk*107+Tong*109+Tongmax*113+Ju*127+Juk*131+Jiao*137+Shen*139+Ji*149+Yuan*151+Shan*157+Fu*163)%Moo;
for(int i=0;i<=Tong;i++)
{
out<<You[i].Blood<<' '<<You[i].Bloodmax<<' '<<You[i].Bloodjia<<' '<<You[i].Skilnum<<' '<<You[i].Skilmax<<' '<<You[i].Money<<' '<<You[i].EXP<<' '<<You[i].Shan<<' ';out<<You[i].Qijia<<'\n';
ioi+=(2*ioi+You[i].Blood*167+You[i].Bloodmax*173+You[i].Bloodjia*179+You[i].Skilnum*181+You[i].Skilmax*191+You[i].Money*193+You[i].EXP*197+You[i].Shan*211+(int)You[i].Qijia*223)%Moo;
for(int j=1;j<=You[i].Skilnum;j++) out<<You[i].Skil[j]<<' ',ioi+=i*j*(ioi+You[i].Skil[j])*227%Moo;out<<'\n';
}for(int i=100;i<=99+Skll;i++)
{
out<<Skill[i].Name<<'\n';
for(int j=0;j<strlen(Skill[i].Name);j++) ioi+=i*j*(ioi+(int)Skill[i].Name[j])*229%Moo;
out<<Skill[i].Qi<<' '<<Skill[i].Kill<<' '<<Skill[i].What<<' '<<Skill[i].color<<' '<<Skill[i].Any<<'\n';
ioi=ioi+Skill[i].Qi*233+Skill[i].Kill*239+Skill[i].What*241+Skill[i].color*251+Skill[i].Any*257;
ioi%=Moo;
for(int j=1;j<=Skill[i].Any;j++)
{
out<<Skill[i].Anykill[j]<<' '<<Skill[i].Anywhat[j]<<' '<<Skill[i].Time[j]<<' ',out<<Skill[i].Anyqi[j]<<'\n';
ioi+=i*j*(ioi+Skill[i].Anykill[j]*263+Skill[i].Anywhat[j]*269+Skill[i].Time[j]*271+(int)Skill[i].Anyqi[j]*277)%Moo;
}
}for(int i=1;i<=skk;i++) out<<Skkk[i]<<' ',ioi+=(ioi+Skkk[i])*281%Moo;out<<'\n';
out<<'\n'<<ioi;
out.close();
}
void Cun(){
yy:system("cls");Color(0);
SetPos(1,1),printf("---------存读档界面---------");
SetPos(3,1),printf("读档按1 存档按2 -----");int a;cin>>a;
if(a==1)
{
printf("\n 你需要将你之前的存档与此程序放入一个文件夹中。\n");
printf("\n 不要更改名字与内容!\n");
printf("\n 准备好了吗?按任意键开始!\n");char b;b=_getch();
Slow(50,"\n 读档中......\n");
if(Read()) Color(5),printf("\n 读档成功!\n");
else
{
Color(4),printf("\n 读档失败!这个档一定被修改过!\n\n");
Slow(200," 啊......愚昧无知的人类啊......\n\n 接受来自胎神的惩罚吧!......\n\n");
Color(5),printf("\n 全新!黑色字体特效,开启!!\n\n");Color(0);Black=1;Sleep(1000);
}
Color(0),Sleep(1000);
}
if(a==2)
{
printf("\n 你需要将此程序放入一个文件夹中。\n");
printf("\n 注意此操作会覆盖之前的存档。\n");
printf("\n 准备好了吗?按任意键开始!\n");char b;b=_getch();
Save();Slow(50,"\n 存档中......\n");
Color(5),printf("\n 存档成功!\n");Color(0),Sleep(1000);
}
}
void Main(){
system("cls");Color(0);You[0].Blood=You[0].Bloodmax;int a=-2019;
SetPos(1,1),printf("-----------主界面-----------");
SetPos(3,1),printf("金币:%d 经验值:%d 血量:%d",You[0].Money,You[0].EXP,You[0].Blood);
SetPos(5,1),printf("Hi,%s,What do you want to do now?",You[0].Name);
SetPos(7,1),printf("1.开始战斗!");
SetPos(9,1),printf("2.存档与读档。");
SetPos(11,1),printf("3.查看本体技能。");
SetPos(13,1),printf("4.修改本体技能。");
SetPos(15,1),printf("5.创造自定义技能。");
SetPos(17,1),printf("6.前往商店。");
SetPos(19,1),printf("7.查看小兵数据。");
SetPos(21,1),printf("--------- ");
if(Jiao==15) {SetPos(22,1),Color(5),printf("教程提示 15 :剩下的需要自己去摸索了,教程结束。"),Color(0);Jiao=-1;}
if(Jiao==14) {SetPos(22,1),Color(5),printf("教程提示 14 :当你想保存游戏进度时,可以选择存档。\n 在下一次游戏中,你可以读档来继续游戏。\n 按 2 存档,否则退出教程。"),Color(0);SetPos(21,6),cin>>a;if(a==2) Jiao++;else Jiao=-1;}
if(Jiao==13) {SetPos(22,1),Color(5),printf("教程提示 13 :剧情会在对战前随机刷出\n 我们来看看剧情的第一章吧!\n 按 1 开始,否则退出教程。"),Color(0);SetPos(21,6),cin>>a;if(a==6) Jiao++,Ju=1,Juk=10;else Jiao=-1;}
if(Jiao==11) {SetPos(22,1),Color(5),printf("教程提示 11 :你可以购买药水增幅自己。\n 而在老虎机中,你可以抽出一些更实用的物品!\n 按 6 购买,否则退出教程。"),Color(0);SetPos(21,6),cin>>a;if(a==6) Jiao++,You[0].Money=200;else Jiao=-1;}
if(Jiao==9) {SetPos(22,1),Color(5),printf("教程提示 9 :一人对战比较困难,\n 我们来试试和同伴一起战斗吧。\n 按 1 对战,否则退出教程。"),Color(0);SetPos(21,6),cin>>a;if(a==1) Jiao++,Tong++,You[1].Bloodmax=100,You[1].Skilmax=3;else Jiao=-1;}
if(Jiao==7) {SetPos(22,1),Color(5),printf("教程提示 7 :除了一个一个攻击敌人,你还可以使用群攻技能。\n 我们提供了一个群攻技能给你。\n 按 4 装备,否则退出教程。"),Color(0);SetPos(21,6),cin>>a;if(a==4) Jiao++,skk=1,Skkk[1]=3;else Jiao=-1;}
if(Jiao==5) {SetPos(22,1),Color(5),printf("教程提示 5 :在对战中,会轮到你的回合\n 你只能你的回合中才能使用技能。\n 按 1 对战,否则退出教程。"),Color(0);SetPos(21,6),cin>>a;if(a==1) Jiao++;else Jiao=-1;}
if(Jiao==3) {SetPos(22,1),Color(5),printf("教程提示 3 :只用刀对战比较困难,\n 你可以使用技能来对战,来装备你的第一个技能吧。\n 按 4 装备,否则退出教程。"),Color(0);SetPos(21,6),cin>>a;if(a==4) Jiao++,skk=1,Skkk[1]=2;else Jiao=-1;}
if(Jiao==1) {SetPos(22,1),Color(5),printf("教程提示 1 :本游戏是一个团队对战游戏,\n 一切基础是建立在“开始战斗!”模式下的。\n 按 1 对战,否则退出教程。"),Color(0);SetPos(21,6),cin>>a;if(a==1) Jiao++;else Jiao=-1;}
SetPos(21,6);if(a==-2019) cin>>a;if(a==1) War();if(a==2) Cun();if(a==3) CheckMe();if(a==4) ChangeSkill();if(a==5) StartSkill();if(a==6) Store();if(a==7) CheckUs();
}
void Start(){
char *str,aa;Color(0);
printf("\n Hi,请输入你的名字......");scanf("%s",You[0].Name);
printf("\n 要开始教程吗?(按 y / n 选择)..... ");cin>>aa;
if(aa=='y')
{
printf("\n\n 如果你是在本机第一次玩此游戏......");
printf("\n\n 请将鼠标移至程序框上方按鼠标右键......");
printf("\n\n 点击“默认值”......");printf("\n\n 点击“布局”......");
printf("\n\n 将“屏幕缓冲区大小”调为1000 1000......");
printf("\n\n 然后关闭此程序,重启一次......");
printf("\n\n 按任意键开始!");char a;a=_getch();Jiao=1;
}
else skk=2,Skkk[1]=2,Skkk[2]=3,You[0].Money=200,You[0].EXP=100,Tong=1,You[1].Bloodmax=100,You[1].Skilmax=3,Ju=1,Juk=10;
You[0].Qi=0,You[0].Blood=You[0].Bloodmax=100,You[0].Skilnum=1,You[0].Skilmax=2,You[0].Skil[1]=1,Tongmax=2,You[0].Qijia=0.5;
str="刀斩";for(int i=0;i<strlen(str);i++)Skill[1].Name[i]=str[i];Skill[1].Kill=10,Skill[1].What=1,Skill[1].Any=0,Skill[1].color=7,Skill[1].Qi=0;
str="火球";for(int i=0;i<strlen(str);i++)Skill[2].Name[i]=str[i];Skill[2].Kill=30,Skill[2].What=1,Skill[2].Any=0,Skill[2].color=4,Skill[2].Qi=1;
str="流星雨";for(int i=0;i<strlen(str);i++)Skill[3].Name[i]=str[i];Skill[3].Kill=30,Skill[3].What=2,Skill[3].Any=0,Skill[3].color=5,Skill[3].Qi=2;
str="劈剑";for(int i=0;i<strlen(str);i++)Skill[4].Name[i]=str[i];Skill[4].Kill=20,Skill[4].What=1,Skill[4].Any=0,Skill[4].color=12,Skill[4].Qi=0.2;
str="背刺";for(int i=0;i<strlen(str);i++)Skill[5].Name[i]=str[i];Skill[5].Kill=50,Skill[5].What=1,Skill[5].Any=1,Skill[5].Anywhat[1]=5,Skill[5].Anykill[1]=30,Skill[5].color=3,Skill[5].Qi=1.5;
str="飞刀";for(int i=0;i<strlen(str);i++)Skill[6].Name[i]=str[i];Skill[6].Kill=10,Skill[6].What=1,Skill[6].Any=1,Skill[6].Anywhat[1]=4,Skill[6].Anykill[1]=30,Skill[6].color=1,Skill[6].Qi=1.5;
str="粘液弹";for(int i=0;i<strlen(str);i++)Skill[7].Name[i]=str[i];Skill[7].Kill=10,Skill[7].What=2,Skill[7].Any=1,Skill[7].Anywhat[1]=5,Skill[7].Anykill[1]=70,Skill[7].color=2,Skill[7].Qi=2;
str="碾压";for(int i=0;i<strlen(str);i++)Skill[8].Name[i]=str[i];Skill[8].Kill=30,Skill[8].What=1,Skill[8].color=3,Skill[8].Qi=0.8;
str="腾空";for(int i=0;i<strlen(str);i++)Skill[9].Name[i]=str[i];Skill[9].What=3,Skill[9].Any=1,Skill[9].Anywhat[1]=2,Skill[9].Time[1]=1,Skill[9].color=1,Skill[9].Qi=1.5;
str="地裂";for(int i=0;i<strlen(str);i++)Skill[10].Name[i]=str[i];Skill[10].Kill=10,Skill[10].What=2,Skill[10].Any=2,Skill[10].Anywhat[1]=4,Skill[10].Anykill[1]=60,Skill[10].Anywhat[2]=5,Skill[10].Anykill[2]=20,Skill[10].color=11,Skill[10].Qi=2.5;
str="雷击术";for(int i=0;i<strlen(str);i++)Skill[11].Name[i]=str[i];Skill[11].Kill=30,Skill[11].What=2,Skill[11].Any=2,Skill[11].Anywhat[1]=3,Skill[11].Anykill[1]=30,Skill[11].Anywhat[2]=5,Skill[11].Anykill[2]=30,Skill[11].color=6,Skill[11].Qi=2.5;
str="雪球";for(int i=0;i<strlen(str);i++)Skill[12].Name[i]=str[i];Skill[12].Kill=20,Skill[12].What=1,Skill[12].Any=1;Skill[12].Anywhat[1]=1,Skill[12].Time[1]=1;Skill[12].color=1,Skill[12].Qi=2;
str="永冻之域";for(int i=0;i<strlen(str);i++)Skill[13].Name[i]=str[i];Skill[13].Kill=20,Skill[13].What=2,Skill[13].Any=1;Skill[13].Anywhat[1]=1,Skill[13].Time[1]=1;Skill[13].color=1,Skill[13].Qi=4;
str="暴风雪";for(int i=0;i<strlen(str);i++)Skill[14].Name[i]=str[i];Skill[14].Kill=50,Skill[14].What=2,Skill[14].Any=2;Skill[14].Anywhat[1]=3,Skill[14].Anykill[1]=30;Skill[14].Anywhat[2]=5,Skill[14].Anykill[2]=30;Skill[14].color=1,Skill[14].Qi=2;
str="急救";for(int i=0;i<strlen(str);i++)Skill[15].Name[i]=str[i];Skill[15].What=3,Skill[15].Any=1;Skill[15].Anywhat[1]=1,Skill[15].Anykill[1]=30;Skill[15].color=2,Skill[15].Qi=1;
str="瘟疫";for(int i=0;i<strlen(str);i++)Skill[16].Name[i]=str[i];Skill[16].What=2,Skill[16].Any=1;Skill[16].Anywhat[1]=6,Skill[16].Anykill[1]=40;Skill[16].color=3,Skill[16].Qi=2;
str="下毒";for(int i=0;i<strlen(str);i++)Skill[17].Name[i]=str[i];Skill[17].Kill=10,Skill[17].What=1,Skill[17].Any=1;Skill[17].Anywhat[1]=2,Skill[17].Anykill[1]=10,Skill[17].Time[1]=10;Skill[17].color=8,Skill[17].Qi=0.8;
str="重击";for(int i=0;i<strlen(str);i++)Skill[18].Name[i]=str[i];Skill[18].Kill=50,Skill[18].What=1,Skill[18].Any=0;Skill[18].color=4,Skill[18].Qi=1.5;
str="泰山压顶";for(int i=0;i<strlen(str);i++)Skill[19].Name[i]=str[i];Skill[19].Kill=50,Skill[19].What=2,Skill[19].Any=1;Skill[19].Anywhat[1]=3,Skill[19].Anykill[1]=50,Skill[19].color=4,Skill[19].Qi=2.5;
str="吸血";for(int i=0;i<strlen(str);i++)Skill[20].Name[i]=str[i];Skill[20].Kill=5,Skill[20].What=1,Skill[20].Any=1;Skill[20].Anywhat[1]=7,Skill[20].color=10,Skill[20].Qi=1;
str="狩猎号角";for(int i=0;i<strlen(str);i++)Skill[21].Name[i]=str[i];Skill[21].What=3,Skill[21].Any=1;Skill[21].Anywhat[1]=5,Skill[21].Anykill[1]=10,Skill[21].color=9,Skill[21].Qi=0.3;
str="打狗棒法";for(int i=0;i<strlen(str);i++)Skill[22].Name[i]=str[i];Skill[22].Kill=30,Skill[22].What=1,Skill[22].Any=1,Skill[22].Anywhat[1]=4,Skill[22].Anykill[1]=40,Skill[22].color=11,Skill[22].Qi=1.5;
str="乞讨";for(int i=0;i<strlen(str);i++)Skill[23].Name[i]=str[i];Skill[23].What=3,Skill[23].Any=1;Skill[23].Anywhat[1]=3,Skill[23].Time[1]=5,Skill[23].Anykill[1]=20;Skill[23].color=12,Skill[23].Qi=2;
str="江湖义";for(int i=0;i<strlen(str);i++)Skill[24].Name[i]=str[i];Skill[24].What=3,Skill[24].Any=1;Skill[24].Anywhat[1]=5,Skill[24].Anykill[1]=11,Skill[24].color=1,Skill[24].Qi=3;
str="万箭齐发";for(int i=0;i<strlen(str);i++)Skill[25].Name[i]=str[i];Skill[25].Kill=20,Skill[25].What=2,Skill[25].Any=0,Skill[25].color=11,Skill[25].Qi=1.5;
str="毒箭";for(int i=0;i<strlen(str);i++)Skill[26].Name[i]=str[i];Skill[26].Kill=20,Skill[26].What=1,Skill[26].Any=1;Skill[26].Anywhat[1]=2,Skill[26].Anykill[1]=10,Skill[26].Time[1]=2;Skill[26].color=8,Skill[26].Qi=0.8;
str="神偷手";for(int i=0;i<strlen(str);i++)Skill[27].Name[i]=str[i];Skill[27].What=1,Skill[27].Any=1;Skill[27].Anywhat[1]=10,Skill[27].Anykill[1]=30,Skill[27].color=5,Skill[27].Qi=0;
str="乱拳";for(int i=0;i<strlen(str);i++)Skill[28].Name[i]=str[i];Skill[28].Kill=10,Skill[28].What=1,Skill[28].Any=1,Skill[28].Anywhat[1]=4,Skill[28].Anykill[1]=60,Skill[28].color=1,Skill[28].Qi=1.3;
str="喝酒";for(int i=0;i<strlen(str);i++)Skill[29].Name[i]=str[i];Skill[29].What=3,Skill[29].Any=1;Skill[29].Anywhat[1]=1,Skill[29].Anykill[1]=20;Skill[29].color=2,Skill[29].Qi=0.8;
str="火箭炮";for(int i=0;i<strlen(str);i++)Skill[30].Name[i]=str[i];Skill[30].Kill=50,Skill[30].What=1,Skill[30].Any=1,Skill[30].Anywhat[1]=3,Skill[30].Anykill[1]=30;Skill[30].color=4,Skill[30].Qi=2;
str="榴弹炮";for(int i=0;i<strlen(str);i++)Skill[31].Name[i]=str[i];Skill[31].Kill=40,Skill[31].What=2,Skill[31].Any=1,Skill[31].Anywhat[1]=3,Skill[31].Anykill[1]=30;Skill[31].color=7,Skill[31].Qi=3;
str="激光炮";for(int i=0;i<strlen(str);i++)Skill[32].Name[i]=str[i];Skill[32].Kill=70,Skill[32].What=1,Skill[32].Any=0,Skill[32].color=5,Skill[32].Qi=3;
}
int main() {srand((unsigned)time(NULL));Start();while(1) Main(); return 0;}
在最后,啊不是最后
由于 CSDN 给文章字数的限定,我不能将所有的程序在此一下分享出来。
但是可以点击我的主页,找到胎神(下)的游戏部分,继续游玩。永远记住,这里是(上)!!!!!
都来找合集(下)了,我可以跪收一个关注和赞吗?