Tôi đã viết một số mã tạo mê cung cho tôi. Mê cung bao gồm các ô (n x n), mỗi ô có giá trị boolean để biểu diễn một bức tường (bắc, nam, đông tây).Làm thế nào tôi có thể ngừng in cả hai mặt của bức tường trong mê cung ascii của tôi?
Nó đang làm việc tốt, và tôi đã viết các chức năng dưới đây để in ra mê cung:
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();
}
}
Tuy nhiên, do các tế bào phần tường tôi sản xuất một loại một đôi tường hành lang nhìn vào chức năng in của tôi:
+--++--++--++--++--++--++--++--++--++--+
| || || |
+--++ ++--++--++ ++--++--++ ++ ++--+
+--++ ++--++--++ ++--++--++ ++ ++--+
| || || || || |
+ ++--++--++ ++ ++ ++--++--++--++ +
+ ++--++--++ ++ ++ ++--++--++--++ +
| || || || || || || |
+ ++ ++ ++--++ ++ ++ ++ ++ ++ +
+ ++ ++ ++--++ ++ ++ ++ ++ ++ +
| || || || || || || |
+ ++ ++ ++ ++ ++--++--++--++--++ +
+ ++ ++ ++ ++ ++--++--++--++--++ +
| || || || || |
+ ++--++--++--++--++--++ ++--++ ++ +
+ ++--++--++--++--++--++ ++--++ ++ +
| || || || || |
+ ++--++ ++ ++ ++--++--++ ++--++ +
+ ++--++ ++ ++ ++--++--++ ++--++ +
| || || || || || |
+--++--++--++ ++ ++ ++ ++ ++ ++ +
+--++--++--++ ++ ++ ++ ++ ++ ++ +
| || || || || || || |
+ ++ ++--++ ++ ++ ++ ++--++--++ +
+ ++ ++--++ ++ ++ ++ ++--++--++ +
| || || || || || || |
+ ++ ++ ++--++--++--++ ++ ++ ++--+
+ ++ ++ ++--++--++--++ ++ ++ ++--+
| || || |
+--++--++--++--++--++--++--++--++--++--+
Làm thế nào tôi nên sửa đổi chức năng in của tôi vì vậy nó trông giống như:
+--+--+--+--+--+--+--+--+--+--+
| | | |
+--+ +--+--+ +--+--+ + +--+
| | | | | |
+ +--+--+ + + +--+--+--+ +
| | | | | | | |
+ + + +--+ + + + + + +
| | | | | | | |
+ + + + + +--+--+--+--+ +
| | | | | |
+ +--+--+--+--+--+ +--+ + +
| | | | | |
+ +--+ + + +--+--+ +--+ +
| | | | | | |
+--+--+--+ + + + + + + +
| | | | | | | |
+ + +--+ + + + +--+--+ +
| | | | | | | |
+ + + +--+--+--+ + + +--+
| | | |
+--+--+--+--+--+--+--+--+--+--+
tôi sợ Tôi sẽ phải đối mặt với một vấn đề tương tự khi tôi cuối cùng nhận được điểm tôi bắt đầu vẽ mê cung của tôi bằng cách sử dụng đồ họa thực tế hơn là ascii là tốt.
Làm cách nào để sửa đổi phương thức printMaze của tôi để nó đi từ ví dụ đầu tiên sang phương thức thứ hai?
Trong trường hợp bất kỳ ai quan tâm đến mã nguồn cho lớp của tôi để tạo các mã này là here.
Nếu bạn sử dụng phương pháp này, bạn chỉ nên lưu trữ hai bức tường (tường phía bắc và phía tây) cho mỗi ô; các bức tường phía nam và phía đông chỉ là những bản sao dự phòng của các bức tường phía bắc và phía tây của các không gian liền kề, và dù sao thì cũng sẽ bị bỏ qua. Các ranh giới của mê cung được tự động tường. – RMorrisey