鸭棋大模拟求救神犇
  • 板块灌水区
  • 楼主Hoks
  • 当前回复6
  • 已保存回复6
  • 发布时间2022/5/14 20:19
  • 上次更新2023/10/28 01:26:47
查看原帖
鸭棋大模拟求救神犇
551100
Hoks楼主2022/5/14 20:19

c是车,m是马,x是象,s是士,w是王,y是鸭,b是兵。(函数名解谜)

1是蓝车,2是蓝马,3是蓝象,4是蓝士,5是蓝王,6是蓝鸭,7是蓝兵。

红色的棋子以此类推,就是蓝色对应棋子的编号+7

void cfg(int sh)
{
	int i,j;
	i=x-1,j=y;
	while(i>=0)
	{
		if(a[i][j])
		{
			if(sh) if(a[i][j]==5){xxflag=1;return;}
			if(!sh) if(a[i][j]==12){xxflag=1;return;} 
			break;
		}
		i--;
	}
	i=x+1,j=y;
	while(i<=9)
	{
		if(a[i][j])
		{
			if(sh) if(a[i][j]==5){xxflag=1;return;}
			if(!sh) if(a[i][j]==12){xxflag=1;return;} 
			break;
		}
		i++;
	}
	i=x,j=y+1;
	while(j<=8)
	{
		if(a[i][j])
		{
			if(sh) if(a[i][j]==5){xxflag=1;return;}
			if(!sh) if(a[i][j]==12){xxflag=1;return;} 
			break;
		}
		j++;
	}
	i=x,j=y-1;
	while(j>=0)
	{
		if(a[i][j])
		{
			if(sh) if(a[i][j]==5){xxflag=1;return;}
			if(!sh) if(a[i][j]==12){xxflag=1;return;} 
			break;
		}
		j--;
	}
}
void mfg(int sh)
{
	if(!a[x][y-1])
	{
		if(sh) if(y-2>=0) if(a[x+1][y-2]==5||a[x-1][y-2]==5&&x-1>=0){xxflag=1;return;}
		if(!sh) if(y-2>=0) if(a[x+1][y-2]==12||a[x-1][y-2]==12&&x-1>=0){xxflag=1;return;}
	}
	if(!a[x][y+1])
	{
		if(sh) if(a[x+1][y+2]==5||a[x-1][y+2]==5&&x-1>=0){xxflag=1;return;}
		if(!sh) if(a[x+1][y+2]==12||a[x-1][y+2]==12&&x-1>=0){xxflag=1;return;}
	}
	if(!a[x-1][y])
	{
		if(sh) if(x-2>=0) if(a[x-2][y-1]==5&&y-1>=0||a[x-2][y+1]==5){xxflag=1;return;}
		if(!sh) if(x-2>=0) if(a[x-2][y-1]==12&&y-1>=0||a[x-2][y+1]==12){xxflag=1;return;}
	}
	if(!a[x+1][y])
	{
		if(sh) if(a[x+2][y-1]==5&&y-1>=0||a[x+2][y+1]==5){xxflag=1;return;}
		if(!sh) if(a[x+2][y-1]==12&&y-1>=0||a[x+2][y+1]==12){xxflag=1;return;}
	}
}
void xfg(int sh)
{
	if(!a[x+1][y+1])
	{
		if(sh&&a[x+2][y+2]==5){xxflag=1;return;}
		if(!sh&&a[x+2][y+2]==12){xxflag=1;return;}
	}
	if(!a[x+1][y-1]&&y-1>=0)
	{
		if(sh&&a[x+2][y-2]==5&&y-2>=0){xxflag=1;return;}
		if(!sh&&a[x+2][y-2]==12&&y-2>=0){xxflag=1;return;}
	}
	if(!a[x-1][y+1]&&x-1>=0)
	{
		if(sh&&a[x-2][y+2]==5&&x-2>=0){xxflag=1;return;}
		if(!sh&&a[x-2][y+2]==12&&x-2>=0){xxflag=1;return;}
	}
	if(!a[x-1][y-1]&&x-1>=0&&y-1>=0)
	{
		if(sh&&a[x-2][y-2]==5&&y-2>=0&&x-2>=0){xxflag=1;return;}
		if(!sh&&a[x-2][y-2]==12&&y-2>=0&&x-2>=0){xxflag=1;return;}
	}
}
void sfg(int sh)
{
	if(sh&&a[x+1][y+1]==5){xxflag=1;return;}
	if(!sh&&a[x+1][y+1]==12){xxflag=1;return;}
	if(sh&&a[x-1][y+1]==5&&x-1>=0){xxflag=1;return;}
	if(!sh&&a[x-1][y+1]==12&&x-1>=0){xxflag=1;return;}
	if(sh&&a[x-1][y-1]==5&&x-1>=0&&y-1>=0){xxflag=1;return;}
	if(!sh&&a[x-1][y-1]==12&&x-1>=0&&y-1>=0){xxflag=1;return;}
	if(sh&&a[x+1][y-1]==5&&y-1>=0){xxflag=1;return;}
	if(!sh&&a[x+1][y-1]==12&&y-1>=0){xxflag=1;return;}
}
void wfg(int sh)
{
	if(sh&&a[x+1][y]==5){xxflag=1;return;}
	if(!sh&&a[x+1][y]==12){xxflag=1;return;}
	if(sh&&a[x+1][y+1]==5){xxflag=1;return;}
	if(!sh&&a[x+1][y+1]==12){xxflag=1;return;}
	if(sh&&a[x][y+1]==5){xxflag=1;return;}
	if(!sh&&a[x][y+1]==12){xxflag=1;return;}
	if(sh&&a[x-1][y]==5&&x-1>=0){xxflag=1;return;}
	if(!sh&&a[x-1][y]==12&&x-1>=0){xxflag=1;return;}
	if(sh&&a[x-1][y-1]==5&&x-1>=0&&y-1>=0){xxflag=1;return;}
	if(!sh&&a[x-1][y-1]==12&&x-1>=0&&y-1>=0){xxflag=1;return;}
	if(sh&&a[x-1][y+1]==5&&x-1>=0){xxflag=1;return;}
	if(!sh&&a[x-1][y+1]==12&&x-1>=0){xxflag=1;return;}
	if(sh&&a[x][y-1]==5&&y-1>=0){xxflag=1;return;}
	if(!sh&&a[x][y-1]==12&&y-1>=0){xxflag=1;return;}
	if(sh&&a[x+1][y-1]==5&&y-1>=0){xxflag=1;return;}
	if(!sh&&a[x+1][y-1]==12&&y-1>=0){xxflag=1;return;}
}
void yfg(int sh)
{
	if(sh&&a[x-2][y+3]==5&&x-2>=0&&!a[x][y+1]&&!a[x-1][y+2]){xxflag=1;return;}
	if(!sh&&a[x-2][y+3]==12&&x-2>=0&&!a[x][y+1]&&!a[x-1][y+2]){xxflag=1;return;}
	if(sh&&a[x-3][y+2]==5&&x-3>=0&&!a[x-1][y]&&!a[x-2][y+1]){xxflag=1;return;}
	if(!sh&&a[x-3][y+2]==12&&x-3>=0&&!a[x-1][y]&&!a[x-2][y+1]){xxflag=1;return;}
	if(sh&&a[x-3][y-2]==5&&x-3>=0&&y-2>=0&&!a[x-1][y]&&!a[x-2][y-1]){xxflag=1;return;}
	if(!sh&&a[x-3][y-2]==12&&x-3>=0&&y-2>=0&&!a[x-1][y]&&!a[x-2][y-1]){xxflag=1;return;}
	if(sh&&a[x-2][y-3]==5&&x-2>=0&&y-3>=0&&!a[x-1][y-2]&&!a[x][y-1]){xxflag=1;return;}
	if(!sh&&a[x-2][y-3]==12&&x-2>=0&&y-3>=0&&!a[x-1][y-2]&&!a[x][y-1]){xxflag=1;return;}
	if(sh&&a[x+2][y-3]==5&&y-3>=0&&!a[x][y-1]&&!a[x+1][y-2]){xxflag=1;return;}
	if(!sh&&a[x+2][y-3]==12&&y-3>=0&&!a[x][y-1]&&!a[x+1][y-2]){xxflag=1;return;}
	if(sh&&a[x+3][y-2]==5&&y-2>=0&&!a[x+1][y]&&!a[x+2][y-1]){xxflag=1;return;}
	if(!sh&&a[x+3][y-2]==12&&y-2>=0&&!a[x+1][y]&&!a[x+2][y-1]){xxflag=1;return;}
	if(sh&&a[x+3][y+2]==5&&!a[x+1][y]&&!a[x+2][y+1]){xxflag=1;return;}
	if(!sh&&a[x+3][y+2]==12&&!a[x+1][y]&&!a[x+2][y+1]){xxflag=1;return;}
	if(sh&&a[x+2][y+3]==5&&!a[x][y+1]&&!a[x+1][y+2]){xxflag=1;return;}
	if(!sh&&a[x+2][y+3]==12&&!a[x][y+1]&&!a[x+1][y+2]){xxflag=1;return;}
}
void bfg(int sh)
{
	if(sh&&a[x+1][y]==5){xxflag=1;return;}
	if(!sh&&a[x+1][y]==12){xxflag=1;return;}
	if(sh&&a[x+1][y+1]==5){xxflag=1;return;}
	if(!sh&&a[x+1][y+1]==12){xxflag=1;return;}
	if(sh&&a[x][y+1]==5){xxflag=1;return;}
	if(!sh&&a[x][y+1]==12){xxflag=1;return;}
	if(sh&&a[x-1][y]==5&&x-1>=0){xxflag=1;return;}
	if(!sh&&a[x-1][y]==12&&x-1>=0){xxflag=1;return;}
	if(sh&&a[x-1][y-1]==5&&x-1>=0&&y-1>=0){xxflag=1;return;}
	if(!sh&&a[x-1][y-1]==12&&x-1>=0&&y-1>=0){xxflag=1;return;}
	if(sh&&a[x-1][y+1]==5&&x-1>=0){xxflag=1;return;}
	if(!sh&&a[x-1][y+1]==12&&x-1>=0){xxflag=1;return;}
	if(sh&&a[x][y-1]==5&&y-1>=0){xxflag=1;return;}
	if(!sh&&a[x][y-1]==12&&y-1>=0){xxflag=1;return;}
	if(sh&&a[x+1][y-1]==5&&y-1>=0){xxflag=1;return;}
	if(!sh&&a[x+1][y-1]==12&&y-1>=0){xxflag=1;return;}
}
void jj()
{
	for(int i=0;i<=9;i++)
		for(int j=0;j<=8;j++)
		{
			if(a[i][j]==1) cfg(0);
			if(a[i][j]==2) mfg(0);
			if(a[i][j]==3) xfg(0);
			if(a[i][j]==4) sfg(0);
			if(a[i][j]==5) wfg(0),w++;
			if(a[i][j]==6) yfg(0);
			if(a[i][j]==7) bfg(0);
			if(a[i][j]==8) cfg(1);
			if(a[i][j]==9) mfg(1);
			if(a[i][j]==10) xfg(1);
			if(a[i][j]==11) sfg(1);
			if(a[i][j]==12) wfg(1),w++;
			if(a[i][j]==13) yfg(1);
			if(a[i][j]==14) bfg(1);
		}
}
2022/5/14 20:19
加载中...