Tecnología

Inicio

Cómo hacer un laberinto en Java

Cómo hacer un laberinto en Java


Laberintos han sido un elemento popular de la cultura desde que Teseo entró en el laberinto para matar al minotauro en la mitología griega. La tecnología ha avanzado mucho desde entonces, como las computadoras son capaces de generar instantáneamente completamente laberintos aleatorios usando el software de programación como Java. Mientras que un script de generación de laberinto podría incluir a millones de diferentes variables, cada generador de laberinto tiene que tener unos requisitos básicos con el fin de ejecutar correctamente.

Instrucciones

1 Crear secuencia de comandos de apertura del laberinto:

public class {Maze

private int N;
private boolean[][] north;
private boolean[][] east;
private boolean[][] south;
private boolean[][] west;
private boolean[][] visited;
private double size;
private boolean done = false;

público Maze (int N) {
this.N = N;
StdDraw.setXscale (0, N + 2);
StdDraw.setYscale (0, N + 2);
en eso();
generar();
}

2 Establecer un mecanismo de seguridad que impide que el programa de volver a visitar las células:

private void init() {
// initialize border cells as already visited
visited = new boolean[N+2][N+2];
for (int x = 0; x < N+2; x++) visited[x][0] = visited[x][N+1] = true;
for (int y = 0; y < N+2; y++) visited[0][y] = visited[N+1][y] = true;

3 Establecer todas las células en el laberinto de su presencia:

// initialize all cells as present
north = new boolean[N+2][N+2];
east = new boolean[N+2][N+2];
south = new boolean[N+2][N+2];
west = new boolean[N+2][N+2];
for (int x = 0; x < N+2; x++)
for (int y = 0; y < N+2; y++)
north[x][y] = east[x][y] = south[x][y] = west[x][y] = true;
}

4 Incluir laberinto líneas de generación de código:

private void generate(int x, int y) {
visited[x][y] = true;

while (! visitado [x] [y + 1] ||! visitado [x + 1] [y] ||! visitados [x] [y-1] ||! visitado [x-1] [y]) {

while (true) {
doble r = Math.random ();
si (r & lt; 0,25 & amp; & amp;! visitaron [x] [y + 1]) {
norte [x] [y] = sur [x] [y + 1] = false;
generar (x, y + 1);
descanso;
}
else if (r> = 0,25 & amp; & amp; r & lt; 0,50 & amp; & amp;! visitaron [x + 1] [y]) {
al este [x] [y] = oeste [x + 1] [y] = false;
generar (x + 1, y);
descanso;
}
else if (r> = 0,5 & amp; & amp; r & lt; 0,75 & amp; & amp;! visitaron [x] [y-1]) {
al sur [x] [y] = norte [x] [y-1] = false;
generar (x, y-1);
descanso;
}
else if (r> = 0,75 & amp; & amp; r & lt; 1,00 & amp; & amp;! visitaron [x-1] [y]) {
al oeste [x] [y] = Medio [x-1] [y] = false;
generar (x-1, y);
descanso;
}
}
}
}

5 Crear variables y líneas únicas de código para personalizar la secuencia de comandos básicos laberinto de creación de Java, tales como una línea que elimina al azar porciones de paredes, crea aleatoriamente porciones de paredes, o incluso un script que inserta puntos de teletransporte a otras zonas del laberinto.