Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 迷宫死端过滤器检查_C_Filter_Solver_Maze - Fatal编程技术网

C 迷宫死端过滤器检查

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

我创建了一个通过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+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'语句成功了