#include
#include
#include
#include
#include
#include
using namespace std;
#include
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
#define max 101
#define back 489
#define f1 367
#define f2 364
#define f3 244
#define xue 100
#define rbp 80
#define sxue 20
#define bxue 500
#define ss 200
#include
#define co(NONAME) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),NONAME)
int l1=xue,l2=xue;
char ma[max][max];
int i11,j11,i2,j2,w1=0,w2=0,ww=0,row1=0,row2=0,yjsd=1,dshn=1,cshn=1,wudi=1,zjzr=1,sszw=1;
string imt[10000001];
int imtu[10000001];
int ki=0;
int c1=1,c2=1;
int Bl=bxue,Bi,Bj,Br=1,Bs=1,wB=0,ti;
struct pd
{
int s;
int io,jo;
}k[10000001];
struct wq
{
int lo;
int io,jo;
}k1[10000001];
int kw=0;
int kn=0;
int stop()
{
while(1)
{
if(_kbhit())
if(getch()==' ')break;
}
}
int out()
{
int u1=0,u2=0;
if(i11>=max)i11=max-1,u1=1;
if(i2>=max)i2=max-1,u2=1;
if(j11>=max)j11=max-1,u1=1;
if(j2>=max)j2=max-1,u2=1;
if(i11<=0)i11=1,u1=1;
if(i2<=0)i2=1,u2=1;
if(j11<=0)j11=1,u1=1;
if(j2<=0)j2=1,u2=1;
if(ma[i11][j11]!=' '&&ma[i11][j11]!='!')
{
if(c1==1)i11++;
if(c1==2)j11++;
if(c1==3)i11--;
if(c1==4)j11--;
u1=1;
}
if(ma[i2][j2]!=' '&&ma[i2][j2]!='?')
{
if(c2==1)i2++;
if(c2==2)j2++;
if(c2==3)i2--;
if(c2==4)j2--;
u2=1;
}
ma[i11][j11]='!';
ma[i2][j2]='?';
if(KEY_DOWN('Q')&&!row1)
{
getch();
if(c1==1)ma[i11-1][j11]=' ' ;
if(c1==2)ma[i11][j11-1]=' ' ;
if(c1==3)ma[i11+1][j11]=' ' ;
if(c1==4)ma[i11][j11+1]=' ' ;
}
if(KEY_DOWN('U')&&!row2)
{
getch();
if(c2==1)ma[i2-1][j2]=' ' ;
if(c2==2)ma[i2][j2-1]=' ' ;
if(c2==3)ma[i2+1][j2]=' ' ;
if(c2==4)ma[i2][j2+1]=' ' ;
}
if(ma[i11][j11]==' ')l1-=10;
if(ma[i2][j2]==' ')l2-=10;
if(l1<0&&!row1)
imt[++ki]="Player1被拳头打死了!",imtu[ki]=clock()/1000,row1=rbp,w2++,W_minopen("3.sound");
if(l2<0&&!row2)
imt[++ki]="Player2被拳头打死了!",imtu[ki]=clock()/1000,row2=rbp,w1++,W_minopen("3.sound");
if(u1||u2)W_minopen("4.sound");
if(u1)
{
l1-=2;
if(l1<=0&&!row1)
imt[++ki]="Player1掉出了这个世界!",imtu[ki]=clock()/1000,row1=rbp,w2++;
}
if(u2)
{
l2-=2;
if(l2<=0&&!row2)
imt[++ki]="Player2掉出了这个世界!",imtu[ki]=clock()/1000,row2=rbp,w1++;
}
int i,j;
W_cls;
co(back);
cout<<"█████████████████████ ██████████████████████"<=max||j<=0||j>=max)co(f2),cout<<"▓▓",co(f1);
else cout<=max||j<=0||j>=max)co(f2),cout<<"▓▓",co(f1);
else cout<0&&k[j].io0&&k[j].jo0)k1[i].io++;
else
if(day1<0&&ma[k1[i].io][k1[i].jo-1]==' ')k1[i].jo--;
else
if(ma[k1[i].io][k1[i].jo+1]==' '&&day1>0)k1[i].jo++;
}
}
else
{
if(abs(dax2)<=9&&abs(day2)<=9)
{
if(dax2<0&&ma[k1[i].io-1][k1[i].jo]==' ')k1[i].io--;
else
if(ma[k1[i].io+1][k1[i].jo]==' '&&dax2>0)k1[i].io++;
else
if(day2<0&&ma[k1[i].io][k1[i].jo-1]==' ')k1[i].jo--;
else
if(ma[k1[i].io][k1[i].jo+1]==' '&&day2>0)k1[i].jo++;
}
}
ma[k1[i].io][k1[i].jo]='@';
}
}
int sf=1;
int BOSS()
{
if(Br)return 0;
if(sf==-1)
{
sf=1;
return 0;
}
sf=-1;
if(ma[Bi][Bj]==' ')Bl-=10;
int dax1=i11-Bi,day1=j11-Bj,dax2=i2-Bi,day2=i2-Bj;
int u=0,u1=1;
ma[Bi][Bj]=' ';
if(abs(dax1)+abs(day1)<=abs(dax2)+abs(day2))
{
if(abs(dax1)<=9&&abs(day1)<=9)
{
u1=0;
if(dax1<0&&ma[Bi-1][Bj]==' ')Bi--;
else
if(ma[Bi+1][Bj]!='+'&&dax1>0)Bi++;
if(day1<0&&ma[Bi][Bj-1]==' ')Bj;
else
if(ma[Bi][Bj+1]==' '&&day1>0)Bj;
}
}
else
{
if(abs(dax2)<=9&&abs(day2)<=9)
{
u1=0;
if(dax2<0&&ma[Bi-1][Bj]==' ')Bi--;
else
if(ma[Bi+1][Bj]==' '&&dax2>0)Bi++;
if(day2<0&&ma[Bi][Bj-1]==' ')Bj--;
else
if(ma[Bi][Bj]==' '&&day2>0)Bj++;
}
}
if(abs(dax1)+abs(day1)<=3&&!row1)l1-=20,u=1;
if(abs(dax2)+abs(day2)<=3&&!row2)l2-=20,u=1;
if(u)W_minopen("4.sound");
if(i11==Bi&&abs(day1)<=20&&!row1)
{
u1=0;
if(i11Bi)
{
k[++kn].io=Bi,k[kn].jo=Bj;
k[kn].s=4;
}
}
if(i2==Bi&&abs(day2)<=20&&!row2)
{
u1=0;
if(i2Bi)
{
k[++kn].io=Bi,k[kn].jo=Bj;
k[kn].s=4;
}
}
if(j11==Bj&&abs(dax1)<=20&&!row1)
{
u1=0;
if(j11Bj)
{
k[++kn].io=Bi,k[kn].jo=Bj;
k[kn].s=3;
}
}
if(j2==Bj&&abs(dax2)<=20&&!row2)
{
u1=0;
if(j2Bj)
{
k[++kn].io=Bi,k[kn].jo=Bj;
k[kn].s=3;
}
}
if(u1)
{
int s=rand()%4+1;
switch(s)
{
case 1:if(ma[Bi-1][Bj]==' ')Bi--;break;
case 2:if(ma[Bi][Bj-1]==' ')Bj--;break;
case 3:if(ma[Bi+1][Bj]==' ')Bi++;break;
case 4:if(ma[Bi][Bj+1]==' ')Bj++;break;
}
}
if(l1<0&&!row1)
imt[++ki]="Player1被BOSS击杀了!",imtu[ki]=clock()/1000,row1=rbp,w2++;
if(l2<0&&!row2)
imt[++ki]="Player2被BOSS击杀了!",imtu[ki]=clock()/1000,row2=rbp,w1++;
ma[Bi][Bj]='|';
}
int impto()
{
int i;
for(i=(ki-5>1?ki-5:1);i<=ki;i++)
{
printf("n%4ds:",imtu[i]);cout<kw)WRONG_
else
k1[i].lo=0,imt[++ki]="杀死一只僵尸~",imtu[ki]=clock()/1000,ww++;
break;
case 'p':if(i==1)imt[++ki]="Player1消失了~",imtu[ki]=clock()/1000,row1=rbp,w2++;
else if(i==2)imt[++ki]="Player2消失了~",imtu[ki]=clock()/1000,row2=rbp,w1++;
else WRONG_
break;
case 'b':Bl=-1,imt[++ki]="BOSS被推出了游戏~",imtu[ki]=clock()/1000,Br=ss,wB++;break;
}
}
int move(char sb,int u,int i,int j)
{
switch(sb)
{
case 'w':if(u>kw||k1[u].lo<=0)WRONG_
else
k1[u].io=j,k1[u].jo=i,imt[++ki]="一只僵尸逃跑了~",imtu[ki]=clock()/1000;
break;
case 'p':if(u==1)i11=j,j11=i,imt[++ki]="Player1瞬移了~",imtu[ki]=clock()/1000;
else if(u==2)i2=j,j2=i,imt[++ki]="Player2瞬移了~",imtu[ki]=clock()/1000;
else WRONG_
break;
case 'b':Bi=j,Bj=i,imt[++ki]="BOSS飞走了~",imtu[ki]=clock()/1000;break;
}
}
int rock(int i,int j)
{
if(i>=max||i<=0||j>=max||j<=0)WRONG_
int u=0;
if(i==j11&&j==i11&&!row1)l1-=5,u=1;
else
if(i==j2&&j==i2&&!row2)l2-=5,u=1;
else
if(i==Bj&&j==Bi&&!Br)Bl-=5,u=1;
else
ma[j][i]='+';
if(l1<=0&&!row1)
imt[++ki]="Player1被石头砸死了!",imtu[ki]=clock()/1000,row1=rbp,w2++;
if(l2<=0&&!row2)
imt[++ki]="Player2被石头砸死了!",imtu[ki]=clock()/1000,row2=rbp,w1++;
if(Bl<=0&&!Br)
imt[++ki]="BOSS深埋地底!",imtu[ki]=clock()/1000,Br=ss,wB++;
if(u)W_minopen("4.sound");
}
int clean(int i,int j)
{
if(i>=max||i<=0||j>=max||j<=0)WRONG_
ma[i][j]=' ';
}
int around(char sb,int u)
{
int ii,jj;
switch(sb)
{
case 'w':if(u>kw||k1[u].lo<=0)WRONG_
else
ii=k1[u].io,jj=k1[u].jo,imt[++ki]="僵尸迷路了~",imtu[ki]=clock()/1000;
break;
case 'p':if(u==1)ii=i11,jj=j11,imt[++ki]="Player1被包围了~",imtu[ki]=clock()/1000;
else if(u==2)ii=i2,jj=j2,imt[++ki]="Player2被包围了~",imtu[ki]=clock()/1000;
else WRONG_
break;
case 'b':ii=Bi,jj=Bj,imt[++ki]="BOSS被困住了~",imtu[ki]=clock()/1000;break;
}
if(ii+1<=max)ma[ii+1][jj]='+';
if(ii-1>0)ma[ii-1][jj]='+';
if(jj+1<=max)ma[ii][jj+1]='+';
if(jj-1>0)ma[ii][jj-1]='+';
}
int full(char sb,int u,int i)
{
int cc1,ww,cc2,bb;
if(i>0)
{
cc1=i;
cc2=i;
ww=i;
bb=i;
}
else
if(!i)
{
cc1=cc2=xue;
ww=sxue;
bb=bxue;
}
else
{
cc1=l1-i;
cc2=l2-i;
ww=k1[u].lo-i;
bb=Bl-i;
}
switch(sb)
{
case 'w':if(u>kw||k1[u].lo<=0)WRONG_
else
k1[u].lo=ww,imt[++ki]="僵尸出现了一些神奇的变化~",imtu[ki]=clock()/1000;
break;
case 'p':if(u==1)l1=cc1,imt[++ki]="Player1喝下了药水~",imtu[ki]=clock()/1000;
else if(u==2)l2=cc2,imt[++ki]="Player2喝下了药水~",imtu[ki]=clock()/1000;
else WRONG_
break;
case 'b':
Bl=ww,imt[++ki]="BOSS变异了~",imtu[ki]=clock()/1000;break;
}
}
int again(char sb,int i)
{
switch(sb)
{
case 'w':if(i>kw||i<1)WRONG_
else
k1[i].lo=sxue,imt[++ki]="僵尸卷土重来~",imtu[ki]=clock()/1000,k1[i].io=rand()%(max-1),k1[i].jo=rand()%(max-1),k1[i].lo=sxue,ma[k1[i].io][k1[i].jo]='@';
break;
case 'p':if(i==1)row1=0,imt[++ki]="Player1恢复了~",imtu[ki]=clock()/1000,i11=rand()%(max-1),j11=rand()%(max-1),l1=xue,ma[i11][j11]='!';
else if(i==2)row2=0,imt[++ki]="Player2恢复了~",imtu[ki]=clock()/1000,i2=rand()%(max-1),j2=rand()%(max-1),l2=xue,ma[i2][j2]='?';
else WRONG_
break;
case 'b':Br=0,imt[++ki]="BOSS被唤醒了~",imtu[ki]=clock()/1000,Bi=rand()%(max-1),Bj=rand()%(max-1),Bl=bxue,ma[Bi][Bj]='|';break;
}
}
int find(char sb,int i)
{
if(sb=='w')
{
if(i>kw||i<1)WRONG_
printf("n僵尸%d号 %6d◆ ",i,k1[i].lo);
if(k1[i].lo>0)printf("位于(%3d,%3d) 存活中-",k1[i].jo,k1[i].io);
else printf("已死亡");
}else
if(sb=='p')
{
if(i==1)
{
printf("PLAYER1 (%3d,%3d) 得分:%3d",j11,i11,w1);
if(row1)printf(" %d秒后复活",row1/1000);
else printf(" %6d◆",l1);
}
if(i==2)
{
printf("PLAYER2 (%3d,%3d) 得分:%3d",j2,i2,w2);
if(row2)printf(" %d秒后复活",row2/1000);
else printf(" %6d◆",l2);
}
}else
if(sb=='b')
{
printf("BOSS (%3d,%3d)",Bj,Bi);
if(Br)printf(" %d秒后复活",Br/1000);
else printf(" %6d◆",Bl);
}else WRONG_
}
int row(char sb,int u,int i)
{
int cc1,cc2,bb;
if(i>0)
{
cc1=i;
cc2=i;
bb=i;
}
else
if(!i)
{
cc1=cc2=rbp;
bb=ss;
}
else
{
cc1=row1-i;
cc2=row2-i;
bb=Bl-i;
}
switch(sb)
{
case 'p':if(u==1)row1=cc1,imt[++ki]="Player1被封印了~",imtu[ki]=clock()/1000;
else if(u==2)row1=cc2,imt[++ki]="Player2被封印了~",imtu[ki]=clock()/1000;
else WRONG_
break;
case 'b':
Bl=ww,imt[++ki]="BOSS变异了~",imtu[ki]=clock()/1000;break;
}
}
int forl()
{
string cmdu,ml1="kill",ml2="move",ml3="rock",ml4="around",ml5="full",ml6="again",ml7="out",ml8="find",ml9="clean",ml10="row";
char ca1,ca2;
int in1,in2,in3,in4,i,j,in5,in6;
string st1,st2;
cin>>cmdu;
if(cmdu==ml1)
{
cin>>ca1>>in1>>in2;
if((ca1=='p')&&(in1>2||in2>2)||(ca1=='w')&&(in1>kw||in2>kw)||in1<1||in2<1)WRONG_
for(i=in1;i<=in2;i++)kill(ca1,i);
}else
if(cmdu==ml2)
{
cin>>ca1>>in1>>in2>>in3>>in4;
if((ca1=='p')&&(in1>2||in2>2)||(ca1=='w')&&(in1>kw||in2>kw)||in1<1||in2<1)WRONG_
for(i=in1;i<=in2;i++)move(ca1,i,in3,in4);
}else
if(cmdu==ml3)
{
cin>>in1>>in2>>in3>>in4>>in5;
if(in1>=max||in1<=0||in2>=max||in2<=0||in3>=max||in3<=0||in4>=max||in4<=0||in5<=0)WRONG_
if(in1>in3)
{
in6=in1;
in1=in3;
in3=in6;
}
if(in2>in4)
{
in6=in2;
in2=in4;
in4=in6;
}
for(i=in1;i<=in3;i++)
for(j=in2;j<=in4;j++)
for(in6=1;in6<=in5;in6++)
rock(i,j);
imt[++ki]="天降巨石~",imtu[ki]=clock()/1000;
}else
if(cmdu==ml4)
{
cin>>ca1>>in1>>in2;
if((ca1=='p')&&(in1>2||in2>2)||(ca1=='w')&&(in1>kw||in2>kw)||in1<1||in2<1)WRONG_
for(i=in1;i<=in2;i++)around(ca1,i);
}else
if(cmdu==ml5)
{
cin>>ca1>>in1>>in2>>in3;
if((ca1=='p')&&(in2>2||in3>2)||(ca1=='w')&&(in2>kw||in3>kw)||in2<1||in3<1)WRONG_
for(i=in2;i<=in3;i++)full(ca1,i,in1);
}else
if(cmdu==ml6)
{
cin>>ca1>>in1>>in2;
if((ca1=='p')&&(in1>2||in2>2)||(ca1=='w')&&(in1>kw||in2>kw)||in1<1||in2<1)WRONG_
for(i=in1;i<=in2;i++)again(ca1,i);
}else
if(cmdu==ml7)
{
cin>>st1>>in1;
for(i=1;i<=in1;i++)
imt[++ki]=st1,imtu[ki]=clock()/1000;
}else
if(cmdu==ml8)
{
cin>>ca1>>in1>>in2;
if((ca1=='p')&&(in1>2||in2>2)||(ca1=='w')&&(in1>kw||in2>kw)||in1<1||in2<1)WRONG_
for(i=in1;i<=in2;i++)find(ca1,i);
stop();
}else
if(cmdu==ml9)
{
cin>>in1>>in2>>in3>>in4;
if(in1>=max||in1<=0||in2>=max||in2<=0||in3>=max||in3<=0||in4>=max||in4<=0)WRONG_
if(in1>in3)
{
in6=in1;
in1=in3;
in3=in6;
}
if(in2>in4)
{
in6=in2;
in2=in4;
in4=in6;
}
for(i=in1;i<=in3;i++)
for(j=in2;j<=in4;j++)
clean(j,i);
imt[++ki]="某些东西消失了~",imtu[ki]=clock()/1000;
}else
if(cmdu==ml10)
{
cin>>ca1>>in1>>in2>>in3;
if((ca1=='p')&&(in2>2||in3>2)||(ca1=='w')&&(in2>kw||in3>kw)||in2<1||in3<1)WRONG_
for(i=in2;i<=in3;i++)row(ca1,i,in1);
}
}
int cmd()
{
printf("n命令:");
string cmdu,ml1="kill",ml2="move",ml3="rock",ml4="around",ml5="full",ml6="again",ml7="out",ml8="for",ml9="find",ml10="clean",ml11="row",ml12="now",ml13="first";
char ca1,ca2;
int in1,in2,in3,in4;
string st1,st2;
cin>>cmdu;
if(cmdu=="exit")return 1;
if(cmdu==ml1)
{
cin>>ca1>>in1;
kill(ca1,in1);
}else
if(cmdu==ml2)
{
cin>>ca1>>in1>>in2>>in3;
move(ca1,in1,in2,in3);
}else
if(cmdu==ml3)
{
cin>>in1>>in2;
rock(in1,in2);
imt[++ki]="天降巨石~",imtu[ki]=clock()/1000;
}else
if(cmdu==ml4)
{
cin>>ca1>>in1;
around(ca1,in1);
}else
if(cmdu==ml5)
{
cin>>ca1>>in1>>in2;
full(ca1,in1,in2);
}else
if(cmdu==ml6)
{
cin>>ca1>>in1;
again(ca1,in1);
}else
if(cmdu==ml7)
{
cin>>st1;
imt[++ki]=st1,imtu[ki]=clock()/1000;
}else
if(cmdu==ml8)
{
forl();
}else
if(cmdu==ml9)
{
cin>>ca1;
if(ca1=='w')
{
cin>>in1;
if(in1>0)find(ca1,in1);
else printf("共生成僵尸%d只-",kw);
}
if(ca1=='p')
{
cin>>in1;
if(in1>0)find(ca1,in1);
else printf("共杀死僵尸%d只-",ww);
}
if(ca1=='b')
{
cin>>in1;
if(in1>0)find(ca1,in1);
else printf("共被击败%d次-",wB);
}
}else
if(cmdu==ml10)
{
cin>>in1>>in2;
clean(in2,in1);
imt[++ki]="某些东西消失了~",imtu[ki]=clock()/1000;
}else
if(cmdu==ml11)
{
cin>>ca1>>in1>>in2;
row(ca1,in1,in2);
}else
if(cmdu==ml12)
{
system("cls");
for(int i=1;i<=ki;i++)
{
printf("%4ds:",imtu[i]);cout<