/ / Quais são as ferramentas específicas que posso usar para criar uma matriz 2D que é um labirinto? - java

Quais são as ferramentas específicas que posso usar para criar uma matriz 2D que é um labirinto? - java

Eu tenho uma tarefa para criar um labirinto com umMatriz 2D. Disseram-me que preciso implementar o algoritmo Union-Find para gerar os labirintos de tamanho arbitrário. Então eu preciso quebrar todas as paredes até que todas as células sejam alcançadas de todas as células.

int[][] matrix = new int[N][M];

As células são os índices de array individuais, mas quais são as paredes? Eu estava pensando em fazer meu próprio tipo de dados de labirinto com construtores para as 4 direções, como

Maze maze = new Maze() //fill in constructor as needed

Os valores da matriz são de 0 a 9, o que posso usar para representar as paredes?

Respostas:

0 para resposta № 1

Use arte ASCII. Você pode usar "|" para paredes verticais e "-" para paredes horizontais. É básico, mas uma vez que você possa garantir que isso funcione, você pode passar para os gráficos que são mais agradáveis ​​aos olhos. É importante primeiro se certificar de que está funcional antes de torná-lo bonito.


0 para resposta № 2

Eu recomendo que você crie duas classes, umapara o seu labirinto inteiro e um para uma célula que representa um coordenar no seu labirinto. Se o Coordinate for realmente uma parede, use um valor bool simples. Para o seu algoritmo, talvez dê uma olhada https://en.wikipedia.org/wiki/Maze_generation_algorithm

Talvez este trecho você comece:

public class Maze {
private int X_dim, Y_dim; // the dimension of your maze
private Cell[][] cells; // 2d array of Cells

public Maze(int X_dim, int Y_dim) {
this.X_dim = X_dim;
this.Y_dim = Y_dim;
}
}

public class Cell {
private Point coordinate;
boolean visited = false;
// if true, this Cell represents a wall
boolean wall = true;

Cell(Point coordinate, boolean isWall) {
this.coordinate = coordinate;
this.wall = isWall;
}
}