2013-02-24 23 views
0

我創建了通過ASCII迷宮運行的程序,但我wan't爲以下情況創建一個過濾器:迷宮死衚衕過濾器檢查

#### 
    ..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個situtions可能的,所以我用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個空格並在我的位置放上一個'+'。這會保證我不會在相同的情況下結束,因爲它不可能在一個'+'標記的地方結束。我只能登陸空位或填滿'。'的地方。

但知道來奇怪的東西,在我看來很奇怪,因爲這個'過濾器'只會跳過目前的情況。這些陳述不會是真實的。任何人都可以解釋我什麼我搞砸了嗎?

回答

0

您正在使用'&'這是一個按位運算符。您想改爲使用'& &'布爾「AND」運算符。

+0

試過了,但我不會解決我的問題。 – 2013-02-24 01:28:11

+0

它看起來像你的新walkPointer正在Y方向移動,而你的mase顯示一個水平(X)的情況。改爲設置walkPointer-> newX = curX - 1。 – kwoolfm 2013-02-24 01:33:02

+0

不,那不是這種情況,因爲我只希望Y是-1,我希望它向左移動。否則,我會把自己定位在另一個頂部。除此之外,這個聲明始終似乎是'虛假'的。當我打印printf(「(%c(%i,%i)),」,mazePointer->矩陣[curX-1] [curY],curX-1,curY);對於所有的陳述我得到3個'#'這是很好的原因這就是我想要的。但是仍然跳過它:( – 2013-02-24 01:39:22