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'。 –
我認爲你需要用''標出你所在的位置。在你回溯之前,所以你不會陷入循環 –