ドアで接続された部屋のマップをランダムに生成しようとしていますが、このコードを使用してマップを生成することに成功しました。
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を使用しています
ありがとう。