我创建了一个运行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个空格,然后在我回到空位之前在我的位置放置一个“+”。这将保证我不会在同样的情况下结束,因为不可能最终到达“标有”'+'的地方。我只能在空旷或充满'。'的地方降落。
但是知道奇怪的是,在我看来很奇怪,因为这个'过滤器'只会跳过当前的情况。这些陈述不正确。谁能解释一下我搞砸了什么?
答案 0 :(得分:0)
您正在使用'&'这是一个逐位运算符。你想使用'&&'而是布尔“AND”运算符。