![](https://csdnimg.cn/release/download_crawler_static/86273542/bg3.jpg)
移动相关,用于计算横纵坐标的函数,定义从上到下为横坐标正方向,定义从左往右为纵坐标正方向:
关于状态:
1. 对当前 P 位置的 上 、 下 、 左 、 右 四种方向进行循环
2. 在进行一个方向移动的时候,判断下一个位置是否能够到达
如果能够达到,则通过 H_way 判断 H 的下一个位置是否能够到达
如果是 . ,则可以到达,然后判断两者位置是否重合,是则返回结果,否则进行递
归
如果是 ! ,则跳过,进入下一次循环
如果是 # , 则不动,然后判断两者位置是否重合,是则返回结果,否则进行递归
如果不能到达,则跳过,进入下一次循环
Hx = i;
Hy = j;
map[i][j] = '.'; // 清除位置
}
if (Hx && Hy && Px && Py)
return;
}
}
}
int goX(int x, char positon)
{
int res = x;
if (positon == UP)
{
res--;
return res < 0 ? x : res; // 越界返回 x ,否则返回 res
}
if (positon == DOWN)
{
res++;
return res >= n ? x : res; // 越界返回 x ,否则返回 res
}
return x; // 移动指令不匹配
}
int goY(int y, char position)
{
int res = y;
if (position == LEFT)
{
res--;
return res < 0 ? y : res; // 越界返回 y ,否则返回 res
}
if (position == RIGHT)
{
res++;
return res >= m ? y : res; // 越界返回 y ,否则返回 res
}
return y;
}
int bfs(int Px, int Py, int Hx, int Hy)