//By 小跳蛙
#include
#include
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME)&0x8000)?1:0)
using namespace std;
int N=15,Numk=50,Numl=5,Numd=100,Nan=40,Hp=10,Bebc=15,Bebh=16,Bebb=10,squ=3;
struct node
{
int x,y,vf,bv;
inline void init() {x=rand()%N+1,y=rand()%N+1,bv=rand()%3+1;}
inline void move() {x++;if(x>N) init(),x=1;}
}k[10005],l[10005],d[10005];
int x,y,hp,score,mp[25][25],udf,numc,numh,numb,bulc,bulh,bulb,lanf;
inline void add(int &x,int y) {x+=y,x=max(x,1),x=min(x,N);}
void color(int a) {SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);}
inline int read()
{
int r=0;char c=getchar();
while(c>'9'||c<'0') c=getchar();
while(c>='0'&&c<='9') (r*=10)+=c-'0',c=getchar();
return r;
}
inline void print(int x,int y,string s)
{
HANDLE hOut;COORD pos;
hOut=GetStdHandle(STD_OUTPUT_HANDLE),pos.X=y,pos.Y=x;
SetConsoleCursorPosition(hOut,pos),cout<35)
{
if(lanf==1) puts("Please Input an Integer: The Size of the Game(from 3 to 35):n");
if(lanf==0) puts("请输入一个整数:游戏界面的大小(3 ~ 35)n");
print(2,0," "),t=read(),N=t,system("cls");
}
system("cls"),t=-1;
while(t<1||90100)
{
if(lanf==1) puts("Please Imput an Integer: The Total HP of You(from 1 to 100):n");
if(lanf==0) puts("请输入一个整数:初始生命值(1 ~ 100)n");
print(2,0," "),t=read(),Hp=t,system("cls");
}
system("cls"),t=-1;
while(t<1||t>100)
{
if(lanf==1) puts("Please Input an Integer: The Bullet You Have at First(from 1 to 100):n");
if(lanf==0) puts("请输入一个整数:初始狙击枪子弹数(1 ~ 100)n");
print(2,0," "),t=read(),Bebc=t,system("cls");
}
system("cls"),t=-1;
while(t<1||t>100)
{
if(lanf==1) puts("Please Input an Integer: The Bullet You Have at First(from 1 to 100):n");
if(lanf==0) puts("请输入一个整数:初始高射炮子弹数(1 ~ 100)n");
print(2,0," "),t=read(),Bebh=t,system("cls");
}
system("cls"),t=-1;
while(t<1||t>100)
{
if(lanf==1) puts("Please Input an Integer: The Bullet You Have at First(from 1 to 100):n");
if(lanf==0) puts("请输入一个整数:初始大炮子弹数(1 ~ 100)n");
print(2,0," "),t=read(),Bebb=t,system("cls");
}
}
inline void work()
{
init();
int die=1,luck=1,dowm=1,t;
while(1)
{
for(int i=1;i<=Numk;i++) (k[i].vf+=1)%=k[i].bv;
for(int i=1;i<=Numl;i++) (l[i].vf+=1)%=l[i].bv;
for(int i=1;i<=Numd;i++) (d[i].vf+=1)%=d[i].bv;
for(int i=1;i<=Numk;i++) if(k[i].y<=N&&k[i].x>0&&k[i].vf==0) print(k[i].x,k[i].y," ");
for(int i=1;i<=Numl;i++) if(l[i].y<=N&&l[i].x>0&&l[i].vf==0) print(l[i].x,l[i].y," ");
for(int i=1;i<=Numd;i++) if(d[i].y<=N&&d[i].x>0&&d[i].vf==0) print(d[i].x,d[i].y," ");
t=0;
if(!udf&&(KEY_DOWN(87)||KEY_DOWN(38)||KEY_DOWN(104))) t=1;
if(!udf&&(KEY_DOWN(83)||KEY_DOWN(40)||KEY_DOWN(101))) t=1;
if(KEY_DOWN(65)||KEY_DOWN(37)||KEY_DOWN(100)) t=1;
if(KEY_DOWN(68)||KEY_DOWN(39)||KEY_DOWN(102)) t=1;
if(t) print(x,y," ");move_thi(),move_peo();
for(int i=1;i<=Numk;i++) if(k[i].y<=N&&k[i].x>0&&k[i].vf==0) color(4),print(k[i].x,k[i].y,"&"),color(7);
for(int i=1;i<=Numl;i++) if(l[i].y<=N&&l[i].x>0&&l[i].vf==0) color(2),print(l[i].x,l[i].y,"+"),color(7);
for(int i=1;i<=Numd;i++) if(d[i].y<=N&&d[i].x>0&&d[i].vf==0) color(14),print(d[i].x,d[i].y,"!"),color(7);
if(t) print(x,y,"*");
die=check_die(),luck=check_luck(),dowm=check_dowm();
if(!luck) print(hp/30+17,N+2+hp%30,"-"),hp++,score+=20,(numc+=rand()%10+5)*=bulc,(numh+=rand()%5+5)*=bulh,(numb+=rand()%5)*=bulb;
if(!die) print((hp-1)/30+17,N+2+(hp-1)%30," "),hp--,score--;
if(!dowm) score+=50;
if((!die||!luck||!dowm)&&!t) print(x,y,"*");
if(hp<=0) return;
int xx=0,xw=1,yy=0,_90=0,_88=0,_67=0,_32=0;
for(int i=1;i<=Numk;i++) if(k[i].y==y&&xxxx;i--) print(i,y,"|");_32=1,color(112),print(15,N+8," Space "),color(7);}else print(15,N+8," Space ");
if(KEY_DOWN(90)&&numc>0)
{
numc--,color(112),print(13,N+9," Z "),color(7),_90=1;
if(xx!=0&&numc>0) for(int i=x-1;i>=xx;i--) print(i,y,"|");
}
else print(13,N+9," Z ");
if(KEY_DOWN(88)&&numh>0)
{
numh--,color(112),print(13,N+12," X "),color(9),_88=1;
if(xx!=0&&numc>0) for(int i=x-1;i>=1;i--) print(i,y,"|");
color(7);
}
else print(13,N+12," X ");
if(KEY_DOWN(67)&&numb>0)
{
numb--,color(112),print(13,N+15," C "),color(12),_67=1;
if(xx!=0&&numc>0) for(int i=x-1;i>=xx;i--) print(i,y,"|");
color(7);
}
else print(13,N+15," C ");
for(int i=N+28;i<=N+35;i++) print(1,i," ");
for(int i=N+28;i<=N+35;i++) print(3,i," ");
for(int i=N+33;i<=N+38;i++) print(5,i," ");
for(int i=N+31;i<=N+36;i++) print(7,i," ");
for(int i=N+30;i<=N+36;i++) print(9,i," ");
print(1,N+29,":"),printf("%d",hp);
print(3,N+29,":"),printf("%d",score);
print(5,N+33,":"),printf("%d",numc);
print(7,N+31,":"),printf("%d",numh);
print(9,N+30,":"),printf("%d",numb);
Sleep(Nan);
if(_32==1) {for(int i=x-1;i>xx;i--) print(i,y," ");}
if(xx!=0&&_90)
{
for(int i=x;i>=xx;i--) print(i,y," ");
if(xw<=Numk) k[xw].init(),k[xw].x=0,score++;
else if(xw<=Numk+Numl) l[xw-Numk].init(),l[xw-Numk].x=0,score+=20;
else d[xw-Numk-Numl].init(),d[xw-Numk-Numl].x=0,score++,(numc+=rand()%10+5)*=bulc,(numh+=rand()%5+5)*=bulh,(numb+=rand()%5)*=bulb;
}
if(_88)
{
for(int i=x;i>=1;i--) print(i,y," ");
for(int i=1;i<=Numk;i++) if(k[i].y==y) k[i].init(),k[i].x=0,score++;
for(int i=1;i<=Numl;i++) if(l[i].y==y) l[i].init(),l[i].x=0,score+=20;
for(int i=1;i<=Numd;i++) if(d[i].y==y) d[i].init(),d[i].x=0,score++,(numc+=rand()%10+5)*=bulc,(numh+=rand()%5+5)*=bulh,(numb+=rand()%5)*=bulb;
}
if(xx!=0&&_67)
{
for(int i=x;i>=1;i--) print(i,y," ");
for(int i=1;i<=Numk;i++)
if(k[i].y>=yy-squ&&k[i].y<=yy+squ&&k[i].x>=xx-squ&&k[i].x<=xx+squ&&k[i].x>=1&&k[i].y<=N)
print(k[i].x,k[i].y," "),k[i].init(),k[i].x=0,score++;
for(int i=1;i<=Numl;i++)
if(l[i].y>=yy-squ&&l[i].y<=yy+squ&&l[i].x>=xx-squ&&l[i].x<=xx+squ&&l[i].x>=1&&k[i].y<=N)
print(l[i].x,l[i].y," "),l[i].init(),l[i].x=0,score++;
for(int i=1;i<=Numd;i++)
if(d[i].y>=yy-squ&&d[i].y<=yy+squ&&d[i].x>=xx-squ&&d[i].x<=xx+squ&&d[i].x>=1&&k[i].y<=N)
print(d[i].x,d[i].y," "),d[i].init(),d[i].x=0,score++,(numc+=rand()%10+5)*=bulc,(numh+=rand()%5+5)*=bulh,(numb+=rand()%5)*=bulb;
}
score++;
}
}
int main()
{
Begin();
while(1)
{
choose(),work(),die();int t=0;
while(1)
{
if(lanf==1)
{
print(5,0," ");
if(t==1) puts(" Yes ");else color(112),puts(" Yes "),color(7);
print(6,0," ");
if(t==0) puts(" No ");else color(112),puts(" No "),color(7);
}
if(lanf==0)
{
print(5,0," ");
if(t==1) puts(" 是 ");else color(112),puts(" 是 "),color(7);
print(6,0," ");
if(t==0) puts(" 否 ");else color(112),puts(" 否 "),color(7);
}
if(KEY_DOWN(13)||KEY_DOWN(108)) break;
if(KEY_DOWN(87)||KEY_DOWN(83)||KEY_DOWN(38)||KEY_DOWN(40)||KEY_DOWN(104)||KEY_DOWN(101)) t=1-t;
Sleep(100);
}
if(t==1) return 0;
system("cls");
}
}