#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;
}