您好堆棧溢出的人,所以我有一個問題。我正在爲一個學校項目編寫一個C++迷宮遍歷器,而且我遇到了一堵牆。我有一個算法來檢查我可以在迷宮中移動的不同位置。我的問題是即使(我調試過)有效的移動返回true,迷宮實際上並沒有改變位置。爲什麼不? (對不起,如果這是一個非常愚蠢的問題,但我將不勝感激任何幫助!)謝謝!將1添加到數組下標的位置
//Said algorithm
// 4. cycle through directions to move in until I find a possible move
if (validMove(maze, y + 1, x)) // UP
maze[y][x] = maze[y + 1][x];
else if (validMove(maze, y, x + 1)) // RIGHT
maze[y][x] = maze[y][x + 1];
else if (validMove(maze, y - 1, x)) // DOWN
maze[y][x] = maze[y - 1][x];
else if (validMove(maze, y, x - 1)) // LEFT
maze[y][x] = maze[y][x - 1];
//validMove func
bool validMove(char maze[MAZE_SIZE][MAZE_SIZE], int y, int x)
{
if (maze[y][x] == '.') {
return true;
}
return false;
}
這個問題需要更多的上下文。顯示更多關於'maze'創建和使用的位置,以及您在哪裏(以及如何)檢查它是否已更改。 – molbdnilo
'迷宮實際上並沒有改變位置'澄清你的意思是「改變位置」。我只看到一個任務正在完成。 – PaulMcKenzie
你實際上從來沒有改變'x'或'y'的值 - 你正在改變迷宮的內容,這可能不是你想要的。例如,如果「UP」是一個有效的移動,則用迷宮上方的單元格內容替換迷宮中的當前單元格(除了邊界條件,希望您在別處檢查,否則'x + 1'和其他這樣的表達式可能訪問你的迷宮之外...... – twalberg