如何将紫题打出黑题的感觉
查看原帖
如何将紫题打出黑题的感觉
412973
ChampionYoung楼主2021/10/28 17:44

暴力模拟,无比丝滑

(错了两个字母调了一下午)

总行数: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;
}
2021/10/28 17:44
加载中...