暴力模拟,无比丝滑
(错了两个字母调了一下午)
总行数:1784
长度:34803
如果你想变强,试一试这个打法(手动滑稽)
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
inline int re()
{
int s=0,f=1;
char c=getchar();
for(;c<'0'||c>'9';c=getchar())
if(c=='-') f=-1;
for(;c<='9'&&c>='0';c=getchar())
s=s*10+c-'0';
return f*s;
}
int q;
string chess[8]={
{""},{"car"},{"horse"},{"elephant"},{"guard"},{"captain"},{"duck"},{"soldier"}
};
bool win;
int rcx,rcy;
int bcx,bcy;
int plain[10][9]={
{1,2,3,4,5,4,3,2,1},
{0,0,0,0,0,0,0,0,0},
{6,0,0,0,0,0,0,0,6},
{7,0,7,0,7,0,7,0,7},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{7,0,7,0,7,0,7,0,7},
{6,0,0,0,0,0,0,0,6},
{0,0,0,0,0,0,0,0,0},
{1,2,3,4,5,4,3,2,1}
};
int color[10][9]={
{1,1,1,1,1,1,1,1,1},
{0,0,0,0,0,0,0,0,0},
{1,0,0,0,0,0,0,0,1},
{1,0,1,0,1,0,1,0,1},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{2,0,2,0,2,0,2,0,2},
{2,0,0,0,0,0,0,0,2},
{0,0,0,0,0,0,0,0,0},
{2,2,2,2,2,2,2,2,2}
};
bool car(int nx,int ny,int tx,int ty)
{
if(nx!=tx&&ny!=ty)
return 0;
else if(nx!=tx)
{
if(tx>nx)
{
for(int i=nx+1;i<tx;i++)
{
if(plain[i][ny])
return 0;
}
return 1;
}
else
{
for(int i=nx-1;i>tx;i--)
{
if(plain[i][ny])
return 0;
}
return 1;
}
}
else if(ny!=ty)
{
if(ty>ny)
{
for(int i=ny+1;i<ty;i++)
{
if(plain[nx][i])
return 0;
}
return 1;
}
else
{
for(int i=ny-1;i>ty;i--)
{
if(plain[nx][i])
return 0;
}
return 1;
}
}
return 0;
}
bool horse(int nx,int ny,int tx,int ty)
{
if(nx+1==tx)
{
if(ny+2==ty)
{
if(plain[nx][ny+1])
{
return 0;
}
return 1;
}
else if(ny-2==ty)
{
if(plain[nx][ny-1])
{
return 0;
}
return 1;
}
return 0;
}
else if(nx-1==tx)
{
if(ny+2==ty)
{
if(plain[nx][ny+1])
{
return 0;
}
return 1;
}
else if(ny-2==ty)
{
if(plain[nx][ny-1])
{
return 0;
}
return 1;
}
return 0;
}
else if(nx+2==tx)
{
if(ny+1==ty)
{
if(plain[nx+1][ny])
{
return 0;
}
return 1;
}
else if(ny-1==ty)
{
if(plain[nx+1][ny])
{
return 0;
}
return 1;
}
return 0;
}
else if(nx-2==tx)
{
if(ny+1==ty)
{
if(plain[nx-1][ny])
{
return 0;
}
return 1;
}
else if(ny-1==ty)
{
if(plain[nx-1][ny])
{
return 0;
}
return 1;
}
return 0;
}
return 0;
}
bool elephant(int nx,int ny,int tx,int ty)
{
if(nx+2==tx)
{
if(ny+2==ty)
{
if(plain[nx+1][ny+1])
{
return 0;
}
return 1;
}
else if(ny-2==ty)
{
if(plain[nx+1][ny-1])
{
return 0;
}
return 1;
}
return 0;
}
else if(nx-2==tx)
{
if(ny+2==ty)
{
if(plain[nx-1][ny+1])
{
return 0;
}
return 1;
}
else if(ny-2==ty)
{
if(plain[nx-1][ny-1])
{
return 0;
}
return 1;
}
return 0;
}
return 0;
}
bool guard(int nx,int ny,int tx,int ty)
{
if(nx+1==tx)
{
if(ny+1==ty) return 1;
else if(ny-1==ty) return 1;
return 0;
}
else if(nx-1==tx)
{
if(ny+1==ty) return 1;
else if(ny-1==ty) return 1;
return 0;
}
return 0;
}
bool captain(int nx,int ny,int tx,int ty)
{
if(nx!=tx&&ny!=ty)
return 0;
else if(nx==tx)
{
if(ny+1==ty) return 1;
else if(ny-1==ty) return 1;
return 0;
}
else if(ny==ty)
{
if(nx+1==tx) return 1;
else if(nx-1==tx) return 1;
return 0;
}
return 0;
}
bool duck(int nx,int ny,int tx,int ty)
{
if(nx+3==tx)
{
if(ny+2==ty)
{
if(plain[nx+1][ny]||plain[nx+2][ny+1])
{
return 0;
}
return 1;
}
else if(ny-2==ty)
{
if(plain[nx+1][ny]||plain[nx+2][ny-1])
{
return 0;
}
return 1;
}
return 0;
}
else if(nx-3==tx)
{
if(ny+2==ty)
{
if(plain[nx-1][ny]||plain[nx-2][ny+1])
{
return 0;
}
return 1;
}
else if(ny-2==ty)
{
if(plain[nx-1][ny]||plain[nx-2][ny-1])
{
return 0;
}
return 1;
}
return 0;
}
else if(nx+2==tx)
{
if(ny+3==ty)
{
if(plain[nx][ny+1]||plain[nx+1][ny+2])
{
return 0;
}
return 1;
}
else if(ny-3==ty)
{
if(plain[nx][ny-1]||plain[nx+1][ny-2])
{
return 0;
}
return 1;
}
return 0;
}
else if(nx-2==tx)
{
if(ny+3==ty)
{
if(plain[nx][ny+1]||plain[nx-1][ny+2])
{
return 0;
}
return 1;
}
else if(ny-3==ty)
{
if(plain[nx][ny-1]||plain[nx-1][ny-2])
{
return 0;
}
return 1;
}
return 0;
}
return 0;
}
bool soldier(int nx,int ny,int tx,int ty)
{
if(nx==tx)
{
if(ny+1==ty) return 1;
else if(ny-1==ty) return 1;
return 0;
}
else if(nx+1==tx)
{
if(ny+1==ty) return 1;
else if(ny==ty) return 1;
else if(ny-1==ty) return 1;
return 0;
}
else if(nx-1==tx)
{
if(ny+1==ty) return 1;
else if(ny==ty) return 1;
else if(ny-1==ty) return 1;
return 0;
}
return 0;
}
bool check(int x,int y,int clr)
{
int enmy;
if(clr==1) enmy=2;
else enmy=1;
//car
for(int i=0;i<=9;i++)
{
if(plain[i][y]==1&&color[i][y]==enmy)
{
if(car(i,y,x,y)) return 1;
}
}
for(int i=0;i<=8;i++)
{
if(plain[x][i]==1&&color[x][i]==enmy)
{
if(car(x,i,x,y)) return 1;
}
}
//duck
if(x-3>=0)
{
if(y-2>=0)
{
if(plain[x-3][y-2]==6&&color[x-3][y-2]==enmy)
{
if(duck(x-3,y-2,x,y)) return 1;
}
}
if(y+2<=8)
{
if(plain[x-3][y+2]==6&&color[x-3][y+2]==enmy)
{
if(duck(x-3,y+2,x,y)) return 1;
}
}
}
if(x+3<=9)
{
if(y-2>=0)
{
if(plain[x+3][y-2]==6&&color[x+3][y-2]==enmy)
{
if(duck(x+3,y-2,x,y)) return 1;
}
}
if(y+2<=8)
{
if(plain[x+3][y+2]==6&&color[x+3][y+2]==enmy)
{
if(duck(x+3,y+2,x,y)) return 1;
}
}
}
if(x-2>=0)
{
if(y-3>=0)
{
if(plain[x-2][y-3]==6&&color[x-2][y-3]==enmy)
{
if(duck(x-2,y-3,x,y)) return 1;
}
}
if(y+3<=8)
{
if(plain[x-2][y+3]==6&&color[x-2][y+3]==enmy)
{
if(duck(x-2,y+3,x,y)) return 1;
}
}
if(y-2>=0)
{
if(plain[x-2][y-2]==3&&color[x-2][y-2]==enmy)
{
if(elephant(x-2,y-2,x,y)) return 1;
}
}
if(y+2<=8)
{
if(plain[x-2][y+2]==3&&color[x-2][y+2]==enmy)
{
if(elephant(x-2,y+2,x,y)) return 1;
}
}
if(y-1>=0)
{
if(plain[x-2][y-1]==2&&color[x-2][y-1]==enmy)
{
if(horse(x-2,y-1,x,y)) return 1;
}
}
if(y+1<=8)
{
if(plain[x-2][y+1]==2&&color[x-2][y+1]==enmy)
{
if(horse(x-2,y+1,x,y)) return 1;
}
}
}
if(x+2<=9)
{
if(y-3>=0)
{
if(plain[x+2][y-3]==6&&color[x+2][y-3]==enmy)
{
if(duck(x+2,y-3,x,y)) return 1;
}
}
if(y+3<=8)
{
if(plain[x+2][y+3]==6&&color[x+2][y+3]==enmy)
{
if(duck(x+2,y+3,x,y)) return 1;
}
}
if(y-2>=0)
{
if(plain[x+2][y-2]==3&&color[x+2][y-2]==enmy)
{
if(elephant(x+2,y-2,x,y)) return 1;
}
}
if(y+2<=8)
{
if(plain[x+2][y+2]==3&&color[x+2][y+2]==enmy)
{
if(elephant(x+2,y+2,x,y)) return 1;
}
}
if(y-1>=0)
{
if(plain[x+2][y-1]==2&&color[x+2][y-1]==enmy)
{
if(horse(x+2,y-1,x,y)) return 1;
}
}
if(y+1<=8)
{
if(plain[x+2][y+1]==2&&color[x+2][y+1]==enmy)
{
if(horse(x+2,y+1,x,y)) return 1;
}
}
}
if(x-1>=0)
{
if(y-2>=0)
{
if(plain[x-1][y-2]==2&&color[x-1][y-2]==enmy)
{
if(horse(x-1,y-2,x,y)) return 1;
}
}
if(y+2<=8)
{
if(plain[x-1][y+2]==2&&color[x-1][y+2]==enmy)
{
if(horse(x-1,y+2,x,y)) return 1;
}
}
if(y-1>=0)
{
if((plain[x-1][y-1]==7||plain[x-1][y-1]==4)&&color[x-1][y-1]==enmy)
return 1;
}
if(y+1<=8)
{
if((plain[x-1][y+1]==7||plain[x-1][y+1]==4)&&color[x-1][y+1]==enmy)
return 1;
}
if((plain[x-1][y]==7||plain[x-1][y]==5)&&color[x-1][y]==enmy)
return 1;
}
if(x+1<=9)
{
if(y-2>=0)
{
if(plain[x+1][y-2]==2&&color[x+1][y-2]==enmy)
{
if(horse(x+1,y-2,x,y)) return 1;
}
}
if(y+2<=8)
{
if(plain[x+1][y+2]==2&&color[x+1][y+2]==enmy)
{
if(horse(x+1,y+2,x,y)) return 1;
}
}
if(y-1>=0)
{
if((plain[x+1][y-1]==7||plain[x+1][y-1]==4)&&color[x+1][y-1]==enmy)
return 1;
}
if(y+1<=8)
{
if((plain[x+1][y+1]==7||plain[x+1][y+1]==4)&&color[x+1][y+1]==enmy)
return 1;
}
if((plain[x+1][y]==7||plain[x+1][y]==5)&&color[x+1][y]==enmy)
return 1;
}
if(y-1>=0)
{
if((plain[x][y-1]==7||plain[x][y-1]==5)&&color[x][y-1]==enmy)
return 1;
}
if(y+1<=8)
{
if((plain[x][y+1]==7||plain[x][y+1]==5)&&color[x][y+1]==enmy)
return 1;
}
return 0;
}
int main()
{
win=0;
rcx=0,rcy=4;
bcx=9,bcy=4;
q=re();
int now=1;
// 1 red 2 blue
int x1,y1,x2,y2;
for(int i=1;i<=q;i++)
{
if(win)
{
printf("Invalid command\n");
continue;
}
x1=re(),y1=re(),x2=re(),y2=re();
if(!plain[x1][y1])
{
printf("Invalid command\n");
continue;
}
else
{
if(color[x1][y1]==now)
{
if(plain[x1][y1]==1)
{
if(now==1)
{
if(color[x2][y2]==2)
{
if(car(x1,y1,x2,y2))
{
int eat=plain[x2][y2];
plain[x2][y2]=plain[x1][y1],plain[x1][y1]=0;
color[x2][y2]=color[x1][y1],color[x1][y1]=0;
int j=0;
if(j==0) j=check(rcx,rcy,1);
if(j==0) j=check(bcx,bcy,2);
if(j==0)
{
printf("red car;blue ");
cout<<chess[eat];
if(chess[eat]=="captain")
{
win=1;
printf(";no;yes\n");
continue;
}
printf(";no;no\n");
now=2;
continue;
}
else if(j==1)
{
printf("red car;blue ");
cout<<chess[eat];
if(chess[eat]=="captain")
{
win=1;
printf(";no;yes\n");
continue;
}
printf(";yes;no\n");
now=2;
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else if(color[x2][y2]==0)
{
if(car(x1,y1,x2,y2))
{
plain[x2][y2]=plain[x1][y1],plain[x1][y1]=0;
color[x2][y2]=color[x1][y1],color[x1][y1]=0;
int j=0;
if(j==0) j=check(rcx,rcy,1);
if(j==0) j=check(bcx,bcy,2);
if(j==0)
{
printf("red car;NA;no;no\n");
now=2;
continue;
}
else if(j==1)
{
printf("red car;NA;yes;no\n");
now=2;
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else
{
if(color[x2][y2]==1)
{
if(car(x1,y1,x2,y2))
{
int eat=plain[x2][y2];
plain[x2][y2]=plain[x1][y1],plain[x1][y1]=0;
color[x2][y2]=color[x1][y1],color[x1][y1]=0;
int j=0;
if(j==0) j=check(rcx,rcy,1);
if(j==0) j=check(bcx,bcy,2);
if(j==0)
{
printf("blue car;red ");
cout<<chess[eat];
if(chess[eat]=="captain")
{
win=1;
printf(";no;yes\n");
continue;
}
printf(";no;no\n");
now=1;
continue;
}
else if(j==1)
{
printf("blue car;red ");
cout<<chess[eat];
if(chess[eat]=="captain")
{
win=1;
printf(";no;yes\n");
continue;
}
printf(";yes;no\n");
now=1;
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else if(color[x2][y2]==0)
{
if(car(x1,y1,x2,y2))
{
plain[x2][y2]=plain[x1][y1],plain[x1][y1]=0;
color[x2][y2]=color[x1][y1],color[x1][y1]=0;
int j=0;
if(j==0) j=check(rcx,rcy,1);
if(j==0) j=check(bcx,bcy,2);
if(j==0)
{
printf("blue car;NA;no;no\n");
now=1;
continue;
}
else if(j==1)
{
printf("blue car;NA;yes;no\n");
now=1;
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
}
else if(plain[x1][y1]==2)
{
if(now==1)
{
if(color[x2][y2]==2)
{
if(horse(x1,y1,x2,y2))
{
int eat=plain[x2][y2];
plain[x2][y2]=plain[x1][y1],plain[x1][y1]=0;
color[x2][y2]=color[x1][y1],color[x1][y1]=0;
int j=0;
if(j==0) j=check(rcx,rcy,1);
if(j==0) j=check(bcx,bcy,2);
if(j==0)
{
printf("red horse;blue ");
cout<<chess[eat];
if(chess[eat]=="captain")
{
win=1;
printf(";no;yes\n");
continue;
}
printf(";no;no\n");
now=2;
continue;
}
else if(j==1)
{
printf("red horse;blue ");
cout<<chess[eat];
if(chess[eat]=="captain")
{
win=1;
printf(";no;yes\n");
continue;
}
printf(";yes;no\n");
now=2;
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else if(color[x2][y2]==0)
{
if(horse(x1,y1,x2,y2))
{
plain[x2][y2]=plain[x1][y1],plain[x1][y1]=0;
color[x2][y2]=color[x1][y1],color[x1][y1]=0;
int j=0;
if(j==0) j=check(rcx,rcy,1);
if(j==0) j=check(bcx,bcy,2);
if(j==0)
{
printf("red horse;NA;no;no\n");
now=2;
continue;
}
else if(j==1)
{
printf("red horse;NA;yes;no\n");
now=2;
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else
{
if(color[x2][y2]==1)
{
if(horse(x1,y1,x2,y2))
{
int eat=plain[x2][y2];
plain[x2][y2]=plain[x1][y1],plain[x1][y1]=0;
color[x2][y2]=color[x1][y1],color[x1][y1]=0;
int j=0;
if(j==0) j=check(rcx,rcy,1);
if(j==0) j=check(bcx,bcy,2);
if(j==0)
{
printf("blue horse;red ");
cout<<chess[eat];
if(chess[eat]=="captain")
{
win=1;
printf(";no;yes\n");
continue;
}
printf(";no;no\n");
now=1;
continue;
}
else if(j==1)
{
printf("blue horse;red ");
cout<<chess[eat];
if(chess[eat]=="captain")
{
win=1;
printf(";no;yes\n");
continue;
}
printf(";yes;no\n");
now=1;
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else if(color[x2][y2]==0)
{
if(horse(x1,y1,x2,y2))
{
plain[x2][y2]=plain[x1][y1],plain[x1][y1]=0;
color[x2][y2]=color[x1][y1],color[x1][y1]=0;
int j=0;
if(j==0) j=check(rcx,rcy,1);
if(j==0) j=check(bcx,bcy,2);
if(j==0)
{
printf("blue horse;NA;no;no\n");
now=1;
continue;
}
else if(j==1)
{
printf("blue horse;NA;yes;no\n");
now=1;
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
}
else if(plain[x1][y1]==3)
{
if(now==1)
{
if(color[x2][y2]==2)
{
if(elephant(x1,y1,x2,y2))
{
int eat=plain[x2][y2];
plain[x2][y2]=plain[x1][y1],plain[x1][y1]=0;
color[x2][y2]=color[x1][y1],color[x1][y1]=0;
int j=0;
if(j==0) j=check(rcx,rcy,1);
if(j==0) j=check(bcx,bcy,2);
if(j==0)
{
printf("red elephant;blue ");
cout<<chess[eat];
if(chess[eat]=="captain")
{
win=1;
printf(";no;yes\n");
continue;
}
printf(";no;no\n");
now=2;
continue;
}
else if(j==1)
{
printf("red elephant;blue ");
cout<<chess[eat];
if(chess[eat]=="captain")
{
win=1;
printf(";no;yes\n");
continue;
}
printf(";yes;no\n");
now=2;
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else if(color[x2][y2]==0)
{
if(elephant(x1,y1,x2,y2))
{
plain[x2][y2]=plain[x1][y1],plain[x1][y1]=0;
color[x2][y2]=color[x1][y1],color[x1][y1]=0;
int j=0;
if(j==0) j=check(rcx,rcy,1);
if(j==0) j=check(bcx,bcy,2);
if(j==0)
{
printf("red elephant;NA;no;no\n");
now=2;
continue;
}
else if(j==1)
{
printf("red elephant;NA;yes;no\n");
now=2;
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else
{
if(color[x2][y2]==1)
{
if(elephant(x1,y1,x2,y2))
{
int eat=plain[x2][y2];
plain[x2][y2]=plain[x1][y1],plain[x1][y1]=0;
color[x2][y2]=color[x1][y1],color[x1][y1]=0;
int j=0;
if(j==0) j=check(rcx,rcy,1);
if(j==0) j=check(bcx,bcy,2);
if(j==0)
{
printf("blue elephant;red ");
cout<<chess[eat];
if(chess[eat]=="captain")
{
win=1;
printf(";no;yes\n");
continue;
}
printf(";no;no\n");
now=1;
continue;
}
else if(j==1)
{
printf("blue elephant;red ");
cout<<chess[eat];
if(chess[eat]=="captain")
{
win=1;
printf(";no;yes\n");
continue;
}
printf(";yes;no\n");
now=1;
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else if(color[x2][y2]==0)
{
if(elephant(x1,y1,x2,y2))
{
plain[x2][y2]=plain[x1][y1],plain[x1][y1]=0;
color[x2][y2]=color[x1][y1],color[x1][y1]=0;
int j=0;
if(j==0) j=check(rcx,rcy,1);
if(j==0) j=check(bcx,bcy,2);
if(j==0)
{
printf("blue elephant;NA;no;no\n");
now=1;
continue;
}
else if(j==1)
{
printf("blue elephant;NA;yes;no\n");
now=1;
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
}
else if(plain[x1][y1]==4)
{
if(now==1)
{
if(color[x2][y2]==2)
{
if(guard(x1,y1,x2,y2))
{
int eat=plain[x2][y2];
plain[x2][y2]=plain[x1][y1],plain[x1][y1]=0;
color[x2][y2]=color[x1][y1],color[x1][y1]=0;
int j=0;
if(j==0) j=check(rcx,rcy,1);
if(j==0) j=check(bcx,bcy,2);
if(j==0)
{
printf("red guard;blue ");
cout<<chess[eat];
if(chess[eat]=="captain")
{
win=1;
printf(";no;yes\n");
continue;
}
printf(";no;no\n");
now=2;
continue;
}
else if(j==1)
{
printf("red guard;blue ");
cout<<chess[eat];
if(chess[eat]=="captain")
{
win=1;
printf(";no;yes\n");
continue;
}
printf(";yes;no\n");
now=2;
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else if(color[x2][y2]==0)
{
if(guard(x1,y1,x2,y2))
{
plain[x2][y2]=plain[x1][y1],plain[x1][y1]=0;
color[x2][y2]=color[x1][y1],color[x1][y1]=0;
int j=0;
if(j==0) j=check(rcx,rcy,1);
if(j==0) j=check(bcx,bcy,2);
if(j==0)
{
printf("red guard;NA;no;no\n");
now=2;
continue;
}
else if(j==1)
{
printf("red guard;NA;yes;no\n");
now=2;
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else
{
if(color[x2][y2]==1)
{
if(guard(x1,y1,x2,y2))
{
int eat=plain[x2][y2];
plain[x2][y2]=plain[x1][y1],plain[x1][y1]=0;
color[x2][y2]=color[x1][y1],color[x1][y1]=0;
int j=0;
if(j==0) j=check(rcx,rcy,1);
if(j==0) j=check(bcx,bcy,2);
if(j==0)
{
printf("blue guard;red ");
cout<<chess[eat];
if(chess[eat]=="captain")
{
win=1;
printf(";no;yes\n");
continue;
}
printf(";no;no\n");
now=1;
continue;
}
else if(j==1)
{
printf("blue guard;red ");
cout<<chess[eat];
if(chess[eat]=="captain")
{
win=1;
printf(";no;yes\n");
continue;
}
printf(";yes;no\n");
now=1;
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else if(color[x2][y2]==0)
{
if(guard(x1,y1,x2,y2))
{
plain[x2][y2]=plain[x1][y1],plain[x1][y1]=0;
color[x2][y2]=color[x1][y1],color[x1][y1]=0;
int j=0;
if(j==0) j=check(rcx,rcy,1);
if(j==0) j=check(bcx,bcy,2);
if(j==0)
{
printf("blue guard;NA;no;no\n");
now=1;
continue;
}
else if(j==1)
{
printf("blue guard;NA;yes;no\n");
now=1;
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
}
else if(plain[x1][y1]==5)
{
if(now==1)
{
if(color[x2][y2]==2)
{
if(captain(x1,y1,x2,y2))
{
int eat=plain[x2][y2];
rcx=x2,rcy=y2;
plain[x2][y2]=plain[x1][y1],plain[x1][y1]=0;
color[x2][y2]=color[x1][y1],color[x1][y1]=0;
int j=0;
if(j==0) j=check(rcx,rcy,1);
if(j==0) j=check(bcx,bcy,2);
if(j==0)
{
printf("red captain;blue ");
cout<<chess[eat];
if(chess[eat]=="captain")
{
win=1;
printf(";no;yes\n");
continue;
}
printf(";no;no\n");
now=2;
continue;
}
else if(j==1)
{
printf("red captain;blue ");
cout<<chess[eat];
if(chess[eat]=="captain")
{
win=1;
printf(";no;yes\n");
continue;
}
printf(";yes;no\n");
now=2;
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else if(color[x2][y2]==0)
{
if(captain(x1,y1,x2,y2))
{
plain[x2][y2]=plain[x1][y1],plain[x1][y1]=0;
color[x2][y2]=color[x1][y1],color[x1][y1]=0;
rcx=x2,rcy=y2;
int j=0;
if(j==0) j=check(rcx,rcy,1);
if(j==0) j=check(bcx,bcy,2);
if(j==0)
{
printf("red captain;NA;no;no\n");
now=2;
continue;
}
else if(j==1)
{
printf("red captain;NA;yes;no\n");
now=2;
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else
{
if(color[x2][y2]==1)
{
if(captain(x1,y1,x2,y2))
{
int eat=plain[x2][y2];
plain[x2][y2]=plain[x1][y1],plain[x1][y1]=0;
color[x2][y2]=color[x1][y1],color[x1][y1]=0;
bcx=x2,bcy=y2;
int j=0;
if(j==0) j=check(rcx,rcy,1);
if(j==0) j=check(bcx,bcy,2);
if(j==0)
{
printf("blue captain;red ");
cout<<chess[eat];
if(chess[eat]=="captain")
{
win=1;
printf(";no;yes\n");
continue;
}
printf(";no;no\n");
now=1;
continue;
}
else if(j==1)
{
printf("blue captain;red ");
cout<<chess[eat];
if(chess[eat]=="captain")
{
win=1;
printf(";no;yes\n");
continue;
}
printf(";yes;no\n");
now=1;
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else if(color[x2][y2]==0)
{
if(captain(x1,y1,x2,y2))
{
plain[x2][y2]=plain[x1][y1],plain[x1][y1]=0;
color[x2][y2]=color[x1][y1],color[x1][y1]=0;
bcx=x2,bcy=y2;
int j=0;
if(j==0) j=check(rcx,rcy,1);
if(j==0) j=check(bcx,bcy,2);
if(j==0)
{
printf("blue captain;NA;no;no\n");
now=1;
continue;
}
else if(j==1)
{
printf("blue captain;NA;yes;no\n");
now=1;
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
}
else if(plain[x1][y1]==6)
{
if(now==1)
{
if(color[x2][y2]==2)
{
if(duck(x1,y1,x2,y2))
{
int eat=plain[x2][y2];
plain[x2][y2]=plain[x1][y1],plain[x1][y1]=0;
color[x2][y2]=color[x1][y1],color[x1][y1]=0;
int j=0;
if(j==0) j=check(rcx,rcy,1);
if(j==0) j=check(bcx,bcy,2);
if(j==0)
{
printf("red duck;blue ");
cout<<chess[eat];
if(chess[eat]=="captain")
{
win=1;
printf(";no;yes\n");
continue;
}
printf(";no;no\n");
now=2;
continue;
}
else if(j==1)
{
printf("red duck;blue ");
cout<<chess[eat];
if(chess[eat]=="captain")
{
win=1;
printf(";no;yes\n");
continue;
}
printf(";yes;no\n");
now=2;
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else if(color[x2][y2]==0)
{
if(duck(x1,y1,x2,y2))
{
plain[x2][y2]=plain[x1][y1],plain[x1][y1]=0;
color[x2][y2]=color[x1][y1],color[x1][y1]=0;
int j=0;
if(j==0) j=check(rcx,rcy,1);
if(j==0) j=check(bcx,bcy,2);
if(j==0)
{
printf("red duck;NA;no;no\n");
now=2;
continue;
}
else if(j==1)
{
printf("red duck;NA;yes;no\n");
now=2;
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else
{
if(color[x2][y2]==1)
{
if(duck(x1,y1,x2,y2))
{
int eat=plain[x2][y2];
plain[x2][y2]=plain[x1][y1],plain[x1][y1]=0;
color[x2][y2]=color[x1][y1],color[x1][y1]=0;
int j=0;
if(j==0) j=check(rcx,rcy,1);
if(j==0) j=check(bcx,bcy,2);
if(j==0)
{
printf("blue duck;red ");
cout<<chess[eat];
if(chess[eat]=="captain")
{
win=1;
printf(";no;yes\n");
continue;
}
printf(";no;no\n");
now=1;
continue;
}
else if(j==1)
{
printf("blue duck;red ");
cout<<chess[eat];
if(chess[eat]=="captain")
{
win=1;
printf(";no;yes\n");
continue;
}
printf(";yes;no\n");
now=1;
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else if(color[x2][y2]==0)
{
if(duck(x1,y1,x2,y2))
{
plain[x2][y2]=plain[x1][y1],plain[x1][y1]=0;
color[x2][y2]=color[x1][y1],color[x1][y1]=0;
int j=0;
if(j==0) j=check(rcx,rcy,1);
if(j==0) j=check(bcx,bcy,2);
if(j==0)
{
printf("blue duck;NA;no;no\n");
now=1;
continue;
}
else if(j==1)
{
printf("blue duck;NA;yes;no\n");
now=1;
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
}
else if(plain[x1][y1]==7)
{
if(now==1)
{
if(color[x2][y2]==2)
{
if(soldier(x1,y1,x2,y2))
{
int eat=plain[x2][y2];
plain[x2][y2]=plain[x1][y1],plain[x1][y1]=0;
color[x2][y2]=color[x1][y1],color[x1][y1]=0;
int j=0;
if(j==0) j=check(rcx,rcy,1);
if(j==0) j=check(bcx,bcy,2);
if(j==0)
{
printf("red soldier;blue ");
cout<<chess[eat];
if(chess[eat]=="captain")
{
win=1;
printf(";no;yes\n");
continue;
}
printf(";no;no\n");
now=2;
continue;
}
else if(j==1)
{
printf("red soldier;blue ");
cout<<chess[eat];
if(chess[eat]=="captain")
{
win=1;
printf(";no;yes\n");
continue;
}
printf(";yes;no\n");
now=2;
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else if(color[x2][y2]==0)
{
if(soldier(x1,y1,x2,y2))
{
plain[x2][y2]=plain[x1][y1],plain[x1][y1]=0;
color[x2][y2]=color[x1][y1],color[x1][y1]=0;
int j=0;
if(j==0) j=check(rcx,rcy,1);
if(j==0) j=check(bcx,bcy,2);
if(j==0)
{
printf("red soldier;NA;no;no\n");
now=2;
continue;
}
else if(j==1)
{
printf("red soldier;NA;yes;no\n");
now=2;
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else
{
if(color[x2][y2]==1)
{
if(soldier(x1,y1,x2,y2))
{
int eat=plain[x2][y2];
plain[x2][y2]=plain[x1][y1],plain[x1][y1]=0;
color[x2][y2]=color[x1][y1],color[x1][y1]=0;
int j=0;
if(j==0) j=check(rcx,rcy,1);
if(j==0) j=check(bcx,bcy,2);
if(j==0)
{
printf("blue soldier;red ");
cout<<chess[eat];
if(chess[eat]=="captain")
{
win=1;
printf(";no;yes\n");
continue;
}
printf(";no;no\n");
now=1;
continue;
}
else if(j==1)
{
printf("blue soldier;red ");
cout<<chess[eat];
if(chess[eat]=="captain")
{
win=1;
printf(";no;yes\n");
continue;
}
printf(";yes;no\n");
now=1;
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else if(color[x2][y2]==0)
{
if(soldier(x1,y1,x2,y2))
{
plain[x2][y2]=plain[x1][y1],plain[x1][y1]=0;
color[x2][y2]=color[x1][y1],color[x1][y1]=0;
int j=0;
if(j==0) j=check(rcx,rcy,1);
if(j==0) j=check(bcx,bcy,2);
if(j==0)
{
printf("blue soldier;NA;no;no\n");
now=1;
continue;
}
else if(j==1)
{
printf("blue soldier;NA;yes;no\n");
now=1;
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
else
{
printf("Invalid command\n");
continue;
}
}
}
}
else
{
printf("Invalid command\n");
continue;
}
}
}
return 0;
}