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個空格並在我的位置放上一個'+'。這會保證我不會在相同的情況下結束,因爲它不可能在一個'+'標記的地方結束。我只能登陸空位或填滿'。'的地方。
但知道來奇怪的東西,在我看來很奇怪,因爲這個'過濾器'只會跳過目前的情況。這些陳述不會是真實的。任何人都可以解釋我什麼我搞砸了嗎?
試過了,但我不會解決我的問題。 – 2013-02-24 01:28:11
它看起來像你的新walkPointer正在Y方向移動,而你的mase顯示一個水平(X)的情況。改爲設置walkPointer-> newX = curX - 1。 – kwoolfm 2013-02-24 01:33:02
不,那不是這種情況,因爲我只希望Y是-1,我希望它向左移動。否則,我會把自己定位在另一個頂部。除此之外,這個聲明始終似乎是'虛假'的。當我打印printf(「(%c(%i,%i)),」,mazePointer->矩陣[curX-1] [curY],curX-1,curY);對於所有的陳述我得到3個'#'這是很好的原因這就是我想要的。但是仍然跳過它:( – 2013-02-24 01:39:22