我被給了一些代碼,已經包含了一切建立一個迷宮。我寫的makeMove方法來解決迷宮,我已經在這裏完成:迷宮求解器,對角線移動只有
int MAX_ROWS = endRow + 1;
int MAX_COLS = endCol + 1;
boolean[][]visited = new boolean[MAX_ROWS][MAX_COLS];
protected void makeMove(int row, int col)
{
boolean found = false;
if (row < 0 || row >= MAX_ROWS || col < 0 || col >= MAX_COLS || visited[row][col] || maze[row][col] == 1)
return;
visited[row][col] = true;
found = row == endRow && col == endCol;
if (!found) {
makeMove(row, col - 1);
makeMove(row, col + 1);
makeMove(row - 1, col);
makeMove(row + 1, col);
}
System.out.print("\n[" + row + "," + col + "] "); // display location
}//end makeMove
}
這個假設開始在左上角和結束是在右下角,這代碼工作就像它應該。
不過,現在我需要修改它,使它只允許對角線移動....
和我在一個展臺還在,一片空白上如何做到這一點
謝謝任何和所有幫助
沒有太大的迷宮,因爲你似乎會允許代碼穿過牆壁。 –
@MarcB我認爲這就是'迷宮[行] [col] == 1'的用途。 – Zong
@MarB a'1'代表一面牆,如果它撞到了一面牆會倒退。 – user2745043