Tôi đang cố gắng tạo ngẫu nhiên bản đồ các phòng được kết nối bằng cửa và tôi đã thành công trong việc tạo một bản đồ bằng mã này:
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;
}
}
Tuy nhiên, điều này không cho phép tôi tìm ra những cánh cửa mà căn phòng đã cho có. Tôi cần phải có khả năng tìm ra điều đó để tôi có thể đặt cửa ở đúng vị trí để chúng có thể được sử dụng để liền kề phòng. Đây có phải là loại "bản đồ thông minh" với thuật toán hiện tại của tôi không, hay tôi nên bắt đầu lại? Những bước tôi có thể làm để làm việc này?
Tôi đang sử dụng Slick2d và Java cho việc này
Cảm ơn.