Я насправді не впевнений, що "лабіринт" - це правильний термін. В основному користувачі починаються з одного, Room
який має 4 двері (N, S, E і W). Вони можуть їхати в будь-якому напрямку, і кожна наступна кімната містить ще одну кімнату з місцями від 1 до 4 дверних прорізів, які йдуть в інші приміщення.
"Лабіринт", як передбачається, має бути необмеженим за розміром і рости по мірі переміщення кімнат. Існує обмежена кількість Rooms
доступних, однак доступна кількість динамічна і може змінюватися.
Моя проблема полягає в тому, що я не впевнений у найкращій структурі даних для такого типу шаблонів
Я спершу подумав про те, щоб просто використовувати [X] [X] масив Room
об’єктів, але я дійсно вважаю за краще уникати цього, оскільки річ повинна рости в будь-якому напрямку, і слід будувати лише кімнати, які "відвідуються".
Інша думка полягала в тому, щоб кожен Room
клас містив 4 пов'язані Room
властивості для N, S, E і W і просто посилався на попередній Room
, але проблема з цим я не знаю, як визначити, чи заходить користувач у приміщення, яке має сусідню кімнату, вже "побудовану"
Наприклад,
--- --- ---------- | | | | Початок 5 4 | | | | --- --- --- --- --- --- ---------- --- --- | | | | | | | 1 2 3 | | | | | | --- --- --- --- ----------
Якщо користувач переходить з Пуск> 1> 2> 3> 4> 5, то Room
№5 повинен знати, що W містить початкову кімнату, S - кімната №2, і в цьому випадку вона не може бути доступною, і N може бути або нова Room
або стіна (нічого).
Можливо, мені потрібна суміш масиву та пов'язаних кімнат, а може я просто дивлюся на це неправильно.
Чи є кращий спосіб побудови структури даних для цього типу "лабіринту"? Або я на правильному шляху зі своїм поточним мислительним процесом, і мені просто не вистачає кількох відомостей?
(Якщо вам цікаво, проект є дуже схожою на Munchkin Quest )