Estou tentando gerar aleatoriamente um mapa de salas conectadas por portas e consegui gerar uma 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;
}
}
No entanto, isso não me permite descobrir quais portas o quarto tem. Eu preciso ser capaz de descobrir isso para que eu possa colocar as portas nos lugares corretos para que possam ser usadas em salas adjacentes. Esse tipo de "mapa inteligente" é possível com meu algoritmo atual ou devo começar de novo? Que etapas posso tomar para que isso funcione?
Estou usando Slick2d e Java para isso
Obrigado.