0
我試圖通過使用右手規則來解決迷宮,但是我的回溯工作不正常。每當它遇到死衚衕時,它就停止遍歷。我的if else語句可能有問題。然而,這很難在Windows窗體中進行調試,我甚至無法弄清楚我做錯了什麼。有人會告訴我我的功能有什麼問題嗎?謝謝。 這就是我的迷宮:在迷宮中使用右手規則回溯
public char[,] navigateMouse()
{
// check south
if (mouseMaze[yPos + 1, xPos] == ' ')
{
//mark the trail with '.'
mouseMaze[yPos, xPos] = '.';
mouseMaze[yPos + 1, xPos] = 'M';
yPos++;
}
// check east
else if (mouseMaze[yPos + 1, xPos] == 'X' && mouseMaze[yPos, xPos + 1] == ' ')
{
mouseMaze[yPos, xPos] = '.';
mouseMaze[yPos, xPos + 1] = 'M';
xPos++;
}
// check north
else if (mouseMaze[yPos + 1, xPos] == 'X' && mouseMaze[yPos, xPos + 1] == 'X' &&
mouseMaze[yPos - 1, xPos] == '.')
{
mouseMaze[yPos, xPos] = '.';
mouseMaze[yPos - 1, xPos] = 'M';
yPos--;
}
// check west
else if (mouseMaze[yPos + 1, xPos] == 'X' && mouseMaze[yPos, xPos + 1] == 'X' &&
mouseMaze[yPos - 1, xPos] == 'X' && mouseMaze[yPos - 1, xPos] == '.')
{
mouseMaze[yPos, xPos] = '.';
mouseMaze[yPos, xPos - 1] = 'M';
xPos--;
}
return mouseMaze;
}
所以這意味着我必須檢查每個方向每當我到達一個正方形,如果4邊碰巧關閉,那麼我必須回溯並跟蹤我已標記的線索。你是這個意思嗎 ? –
是的。那是對的。 –
謝謝,我會再試一次。 –