您好堆栈溢出的人,所以我有一个问题。我正在为一个学校项目编写一个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