나를 위해 미로를 생성하는 코드를 작성했습니다. 미로는 (nxn) 셀로 구성되며, 각 셀은 벽 (북쪽, 남쪽, 동쪽 서쪽)을 나타내는 부울 값을가집니다. 세포의 주 벽이 내 인쇄 기능의 이중 벽 복도 모양의 종류를 생산하기 때문에, 그러나아스키 미로에서 벽면 양면 인쇄를 중단하려면 어떻게해야합니까?
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();
}
}
:
그것은 잘 작동, 나는 아래의 기능이 미로를 출력 썼다 :
+--++--++--++--++--++--++--++--++--++--+
| || || |
+--++ ++--++--++ ++--++--++ ++ ++--+
+--++ ++--++--++ ++--++--++ ++ ++--+
| || || || || |
+ ++--++--++ ++ ++ ++--++--++--++ +
+ ++--++--++ ++ ++ ++--++--++--++ +
| || || || || || || |
+ ++ ++ ++--++ ++ ++ ++ ++ ++ +
+ ++ ++ ++--++ ++ ++ ++ ++ ++ +
| || || || || || || |
+ ++ ++ ++ ++ ++--++--++--++--++ +
+ ++ ++ ++ ++ ++--++--++--++--++ +
| || || || || |
+ ++--++--++--++--++--++ ++--++ ++ +
+ ++--++--++--++--++--++ ++--++ ++ +
| || || || || |
+ ++--++ ++ ++ ++--++--++ ++--++ +
+ ++--++ ++ ++ ++--++--++ ++--++ +
| || || || || || |
+--++--++--++ ++ ++ ++ ++ ++ ++ +
+--++--++--++ ++ ++ ++ ++ ++ ++ +
| || || || || || || |
+ ++ ++--++ ++ ++ ++ ++--++--++ +
+ ++ ++--++ ++ ++ ++ ++--++--++ +
| || || || || || || |
+ ++ ++ ++--++--++--++ ++ ++ ++--+
+ ++ ++ ++--++--++--++ ++ ++ ++--+
| || || |
+--++--++--++--++--++--++--++--++--++--+
것 같습니다 그래서 난 내 인쇄 기능을 수정하는 방법 : 내가 두려워
+--+--+--+--+--+--+--+--+--+--+
| | | |
+--+ +--+--+ +--+--+ + +--+
| | | | | |
+ +--+--+ + + +--+--+--+ +
| | | | | | | |
+ + + +--+ + + + + + +
| | | | | | | |
+ + + + + +--+--+--+--+ +
| | | | | |
+ +--+--+--+--+--+ +--+ + +
| | | | | |
+ +--+ + + +--+--+ +--+ +
| | | | | | |
+--+--+--+ + + + + + + +
| | | | | | | |
+ + +--+ + + + +--+--+ +
| | | | | | | |
+ + + +--+--+--+ + + +--+
| | | |
+--+--+--+--+--+--+--+--+--+--+
필자는 비슷한 문제에 직면하게 될 것입니다. 필자가 미로를 그리기 시작했을 때 ascii보다는 실제 그래픽을 사용하기 시작했습니다.
printMaze 메서드를 수정하여 첫 번째 예제에서 두 번째 예제로 변경하는 방법은 무엇입니까?
내 클래스의 소스 코드에 관심이있는 사람이 있다면 here입니다.
이 방법을 사용하는 경우 각 셀에 대해 두 개의 벽 (북쪽 벽과 서쪽 벽) 만 저장해야합니다. 남쪽과 동쪽 벽은 단지 인접한 공간의 북쪽과 서쪽 벽의 여분 복사물이며, 어쨌든 무시됩니다. 미로의 경계는 자동으로 벽으로 둘러싸여 있습니다. – RMorrisey