私は私のために迷路を生成するいくつかのコードを書いた。迷路は(n×n)個のセルから構成され、各セルは壁(北、南、東西)を表すブール値を有する。私はasciiの迷路で壁の両側を印刷することを止めることができますか?
それが正常に動作している、と私は迷路を印刷するには、以下の機能を書いた:
public static void printMaze(Cell[][] maze)
{
for(int i = 0; i < maze.length; i++)
{
for(int j = 0; j < maze[i].length; j++)
{
System.out.print((maze[i][j].walls.get(Dir.NORTH)) ? "+--+" : "+ +");
}
System.out.println();
for(int j = 0; j < maze[i].length; j++)
{
System.out.print((maze[i][j].walls.get(Dir.WEST)) ? "|" : " ");
System.out.print(" ");
System.out.print((maze[i][j].walls.get(Dir.EAST)) ? "|" : " ");
}
System.out.println();
for(int j = 0; j < maze[i].length; j++)
{
System.out.print((maze[i][j].walls.get(Dir.SOUTH)) ? "+--+" : "+ +");
}
System.out.println();
}
}
しかし、細胞は、私は私の印刷機能では二重壁の廊下の外観のようなものを作る壁を共有するため:
+--++--++--++--++--++--++--++--++--++--+
| || || |
+--++ ++--++--++ ++--++--++ ++ ++--+
+--++ ++--++--++ ++--++--++ ++ ++--+
| || || || || |
+ ++--++--++ ++ ++ ++--++--++--++ +
+ ++--++--++ ++ ++ ++--++--++--++ +
| || || || || || || |
+ ++ ++ ++--++ ++ ++ ++ ++ ++ +
+ ++ ++ ++--++ ++ ++ ++ ++ ++ +
| || || || || || || |
+ ++ ++ ++ ++ ++--++--++--++--++ +
+ ++ ++ ++ ++ ++--++--++--++--++ +
| || || || || |
+ ++--++--++--++--++--++ ++--++ ++ +
+ ++--++--++--++--++--++ ++--++ ++ +
| || || || || |
+ ++--++ ++ ++ ++--++--++ ++--++ +
+ ++--++ ++ ++ ++--++--++ ++--++ +
| || || || || || |
+--++--++--++ ++ ++ ++ ++ ++ ++ +
+--++--++--++ ++ ++ ++ ++ ++ ++ +
| || || || || || || |
+ ++ ++--++ ++ ++ ++ ++--++--++ +
+ ++ ++--++ ++ ++ ++ ++--++--++ +
| || || || || || || |
+ ++ ++ ++--++--++--++ ++ ++ ++--+
+ ++ ++ ++--++--++--++ ++ ++ ++--+
| || || |
+--++--++--++--++--++--++--++--++--++--+
、それがどのように見えるので、どのように私は私の印刷機能を変更する必要があります:私は恐れて
+--+--+--+--+--+--+--+--+--+--+
| | | |
+--+ +--+--+ +--+--+ + +--+
| | | | | |
+ +--+--+ + + +--+--+--+ +
| | | | | | | |
+ + + +--+ + + + + + +
| | | | | | | |
+ + + + + +--+--+--+--+ +
| | | | | |
+ +--+--+--+--+--+ +--+ + +
| | | | | |
+ +--+ + + +--+--+ +--+ +
| | | | | | |
+--+--+--+ + + + + + + +
| | | | | | | |
+ + +--+ + + + +--+--+ +
| | | | | | | |
+ + + +--+--+--+ + + +--+
| | | |
+--+--+--+--+--+--+--+--+--+--+
私も同様の問題に直面するつもりですが、実際にはアスキーではなく実際のグラフィックを使用して迷路を描き始めるということになります。
printMazeメソッドを最初の例から2番目の例に変更するにはどうすればよいですか?
誰かが興味がある場合は、これらを生成するための私のクラスのソースコードはhereです。
この方法を使用する場合は、各セルに2つの壁(北と西の壁)のみを保存する必要があります。南と東の壁は隣接する空間の北と西の壁の冗長なコピーであり、とにかく無視されます。迷路の境界線は自動的に囲まれています。 – RMorrisey