Я пытаюсь случайным образом сгенерировать карту комнат, соединенных дверями, и мне удалось сгенерировать одну из них, используя этот код:
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;
}
}
Однако это не позволяет мне выяснить, какие двери имеет данная комната. Мне нужно уметь это выяснить, чтобы я мог расположить двери в правильных местах, чтобы их можно было использовать в соседних комнатах. Возможна ли такая «умная карта» с моим текущим алгоритмом, или я должен начать все сначала? Какие шаги я могу предпринять, чтобы заставить это работать?
Я использую Slick2d и Java для этого
Спасибо.