0
我试图通过使用右手规则来解决迷宫,但我的回溯工作不正常。不知何故,逻辑错误,如果yPost
增加,它不遵循右手规则。有人会告诉我我的功能有什么问题吗?谢谢。这是我的迷宫:使用右手规则解决迷宫
public char[,] navigateMouse()
{
// check south
if (mouseMaze[yPos + 1, xPos] == ' ')
{
// keep track of the trail
// by marking it with '.'
mouseMaze[yPos, xPos] = '.';
mouseMaze[yPos + 1, xPos] = 'M';
yPos++;
}
// check east
else if (mouseMaze[yPos, xPos + 1] == ' ')
{
mouseMaze[yPos, xPos] = '.';
mouseMaze[yPos, xPos + 1] = 'M';
xPos++;
}
else if (mouseMaze[yPos - 1, xPos] == ' ')
{
mouseMaze[yPos, xPos] = '.';
mouseMaze[yPos - 1, xPos] = 'M';
yPos--;
}
else if (mouseMaze[yPos, xPos - 1] == ' ')
{
mouseMaze[yPos, xPos] = '.';
mouseMaze[yPos, xPos - 1] = 'M';
xPos--;
}
// backtrack
else
{
if (mouseMaze[yPos + 1, xPos] == '.')
{
mouseMaze[yPos + 1, xPos] = 'M';
yPos++;
}
else if (mouseMaze[yPos, xPos + 1] == '.')
{
mouseMaze[yPos, xPos + 1] = 'M';
xPos++;
}
else if (mouseMaze[yPos - 1, xPos] == '.')
{
mouseMaze[yPos - 1, xPos] = 'M';
yPos--;
}
else if (mouseMaze[yPos, xPos - 1] == '.')
{
mouseMaze[yPos, xPos - 1] = 'M';
xPos--;
}
}
if (mouseMaze[mazeHeight/2, mazeWidth - 1] == 'M')
gameWon = true;
return mouseMaze;
}
你可以,仅供参考,发布样本迷宫内容? ''。'是为了小路,为空区域提供空间。那里还有什么? – Shaamaan
@Shaamaan:迷宫里充满了字符'X'和空白,其中'X'表示墙/障碍物,而空白字符意味着你可以自由穿越。 '。'用于跟踪我已经走过的路径。例如,从A移动到B,我将用'。'标记A。 B现在将被标记为'M'。 –
我认为你需要用''标出你所在的位置。在你回溯之前,所以你不会陷入循环 –