No estoy realmente seguro de que "laberinto" sea el término correcto. Básicamente, los usuarios comienzan en un solo Room
que tiene 4 puertas (N, S, E y W). Pueden ir en cualquier dirección, y cada habitación subsiguiente contiene otra habitación con entre 1 y 4 puertas que van a otras habitaciones.
Se supone que el "laberinto" tiene un tamaño ilimitado y que crece a medida que mueves habitaciones. Hay un número limitado de Rooms
disponible, sin embargo, el número disponible es dinámico y puede cambiar.
Mi problema es que no estoy seguro de cuál es la mejor estructura de datos para este tipo de patrón
La primera vez que pensé fue en usar una matriz [X] [X] de objetos Room
, pero realmente preferiría evitar eso ya que se supone que la cosa crece en cualquier dirección, y solo las habitaciones que están "visitadas" debe ser construido.
La otra idea era que cada clase Room
contuviera 4 propiedades Room
vinculadas para N, S, E y W, y solo un enlace al Room
anterior, pero no tengo el problema. saber cómo identificar si un usuario ingresa a una habitación que tiene una habitación adyacente ya "construida"
Por ejemplo,
--- --- ---------- | | | | Start 5 4 | | | | --- --- --- --- --- --- ---------- --- --- | | | | | | | 1 2 3 | | | | | | --- --- --- --- ----------
Si el usuario se mueve desde Inicio > 1 > 2 > 3 > 4 > 5, entonces Room
# 5 necesita saber que W contiene la sala de inicio, S es la habitación # 2 y en este caso no debería estar disponible, y N puede ser un nuevo Room
o una pared (nada).
Tal vez necesito una combinación de la matriz y las habitaciones vinculadas, o tal vez lo esté viendo de forma incorrecta.
¿Hay una mejor manera de construir la estructura de datos para este tipo de "laberinto"? ¿O estoy en el camino correcto con mi proceso de pensamiento actual y me estoy perdiendo algunos datos?
(En caso de que estés interesado, el proyecto es un juego muy similar a Munchkin Quest )