C 迷宫死端过滤器检查
我创建了一个通过ASCII迷宫运行的程序,但我不想为以下情况创建过滤器:C 迷宫死端过滤器检查,c,filter,solver,maze,C,Filter,Solver,Maze,我创建了一个通过ASCII迷宫运行的程序,但我不想为以下情况创建过滤器: #### ..X# #### “#”是指一堵墙。 “X”表示位置。 ""面包屑"是留下的"面包屑" 我也可以这样做,因为它位于矩阵中,如下所示: #### [(x-1, y-1)][(x-1, y)][(x-1, y+1)] ..X# --> [(x, y - 1)][( x, y )][(x, y + 1)] #### [(x-1, y-1)][(x
####
..X#
####
“#”是指一堵墙。“X”表示位置。
""面包屑"是留下的"面包屑" 我也可以这样做,因为它位于矩阵中,如下所示:
#### [(x-1, y-1)][(x-1, y)][(x-1, y+1)]
..X# --> [(x, y - 1)][( x, y )][(x, y + 1)]
#### [(x-1, y-1)][(x+1, y)][(x+1, y+1)]
有4种可能的情况,所以我用C做了一个else-if语句
else if(mazePointer->matrix[curX-1][curY] == '#' &&
mazePointer->matrix[curX][curY+1] == '#' &&
mazePointer->matrix[curX+1][curY] == '#'){
walkPointer->newX = curX;
walkPointer->newY = curY-1;
mazePointer->matrix[curX][curY] = '+';
return 1;
}
var curX和curY是当时的矩阵坐标
此示例适用于最上面的给定示例的矩阵坐标。在这种情况下,我想做的是返回1个空格,在返回空格之前在我的位置上加一个“+”。这将保证我不会在相同的情况下结束,因为不可能在用“+”标记的地方结束。我只能降落在空旷的地方或是满是“.”的地方
但奇怪的事情来了,在我看来很奇怪,因为这个“过滤器”只会跳过当前的情况。这些说法不会是真的。有人能解释一下我搞砸了什么吗?您使用的是“&”,这是一个稍微明智的运算符。您想改为使用“&&”布尔“AND”运算符。尝试过,但我不会解决我的问题。新的walkPointer似乎在Y方向移动,而mase显示水平(X)情况。改为设置walkPointer->newX=curX-1。不,不是这样,因为我只希望Y为-1,我希望它向左移动。否则,我会将自己定位在顶部的另一个1处。除此之外,该声明似乎一直都是“虚假的”。当我打印printf时((%c(%I,%I)),”,mazePointer->matrix[curX-1][curY],curX-1,curY);对于所有的陈述,我得到了3个x'#',这是很好的,因为这正是我想要的。但是仍然跳过它:(尝试嵌入if语句。如果它跳过它,那么其中一个条件应该失败,即if(…){if(…){if(…){}}}或使用调试器逐步执行if语句。你是对的!将'else if'语句更改为'if'语句成功了