Итак, я делаю эту утешительную игру.
Но я не могу понять этот бит или почему неправильно так делать.
В общем, у меня есть 10 комнат
поэтому в комнате есть следующие вещи:
- номер комнаты
-Hashmap, который содержит номер в качестве значения и строку в качестве ключа
Теперь проблема в том, что из комнаты можно выйти из четырех направлений: север, восток, юг, запад, так что это строка / ключ в хэш-карте
Он также может иметь 2 выхода или 1 или 3.
Таким образом, в этой хэш-карте я сохраняю направление в качестве ключа и в качестве значения другой объект комнаты, чтобы я мог отслеживать, какой выход идет в какую комнату.
поэтому у меня есть метод для добавления выходов. это выглядит так:
Код
public class Room {
private int RoomNo;
private HashMap<String, Room> Exits;
public Room(int roomNo){
Exits = new HashMap<String, Room>();
this.RoomNo = roomNo;
}
public void Addexits(Room room, String exitDirection){
Exits.put(exitDirection,room);
}
А потом в игровом классе я создаю 10 комнат и использую метод addexits для добавления выходов, которые выглядят так:
Rooms = new ArrayList<Room>();
//initialize all rooms
room1 = new Room(1);
room1.Addexits(room4,"West");
room1.Addexits(room3,"East");
room2 = new Room(2);
room2.Addexits(room2,"North");
room2.Addexits(room2,"South");
room3 = new Room(3);
room3.Addexits(room3,"West");
room3.Addexits(room3,"East");
room4 = new Room(4);
room4.Addexits(room4,"West");
room4.Addexits(room4,"East");
Однако, как вы можете видеть с комнатой1, я пытаюсь добавить 2 выхода 1 на западе к комнате4 и 1 на востоке к комнате3, однако, когда я запускаю это, это показывает это в хэш-карте:
Запад -> ноль
Восток -> ноль
Но когда я добавляю 2 выхода для обоих объектов room1, он выглядит так, как должно быть:
Запад -> комната1
Восток -> комната1
Так что я действительно не понимаю, что я делаю неправильно, каждая комната имеет свою собственную хэш-карту при создании, и комнаты уже созданы, так что это не должно быть проблемой.