迷宫死角过滤器检查

时间:2013-02-24 01:09:41

标签: 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+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&当时就是矩阵协调。

此示例适合最上面给出的示例的矩阵坐标。在这种情况下,我想要做的是回到1个空格,然后在我回到空位之前在我的位置放置一个“+”。这将保证我不会在同样的情况下结束,因为不可能最终到达“标有”'+'的地方。我只能在空旷或充满'。'的地方降落。

但是知道奇怪的是,在我看来很奇怪,因为这个'过滤器'只会跳过当前的情况。这些陈述不正确。谁能解释一下我搞砸了什么?

1 个答案:

答案 0 :(得分:0)

您正在使用'&'这是一个逐位运算符。你想使用'&&'而是布尔“AND”运算符。