0

我创建了一个通过 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 个空格,然后在我退一个空格之前在我的位置上加上一个“+”。这将保证我不会遇到同样的情况,因为不可能在一个用“+”“标记”的地方结束。我只能降落在空的或充满“。”的地方。

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

4

1 回答 1

0

您正在使用“&”,它是一个按位运算符。您想改用“&&”布尔“AND”运算符。

于 2013-02-24T01:26:14.350 回答