Estoy tratando de generar aleatoriamente un mapa de habitaciones conectadas por puertas, y he logrado generar uno usando este código:
public void generate(GameContainer gc) {
rooms = new ArrayList<Room>();
startingRoom = new Room(0);
startingRoom.setPosition(viewport.getCenterX(), viewport.getCenterY());
lastRoom = startingRoom;
rooms.add(startingRoom);
int roomsize = 25;
for (int i = 0; i <= (1000 + Math.random() * 4000); i++) {
Room room = new Room(i + 1);
int direction = (int) (Math.random() * (4));
switch (direction) {
case 0:
room.setPosition(lastRoom.x, lastRoom.y - roomsize);
break;
case 1:
room.setPosition(lastRoom.x, lastRoom.y + roomsize);
break;
case 2:
room.setPosition(lastRoom.x + roomsize, lastRoom.y);
break;
case 3:
room.setPosition(lastRoom.x - roomsize, lastRoom.y);
break;
default:
room.setPosition(lastRoom.x, lastRoom.y - roomsize);
break;
}
rooms.add(room);
lastRoom = room;
}
}
Sin embargo, esto no me permite averiguar qué puertas tiene la habitación dada. Necesito ser capaz de resolver eso para poder colocar las puertas en los lugares correctos para que puedan usarse para unir habitaciones. ¿Es posible este tipo de "mapa inteligente" con mi algoritmo actual, o debería comenzar de nuevo? ¿Qué pasos puedo tomar para que esto funcione?
Estoy usando Slick2d y Java para esto
Gracias.