No estoy seguro de que "laberinto" sea el término correcto. Básicamente, los usuarios comienzan en una sola Room
que tiene 4 puertas (N, S, E y W). Pueden ir en cualquier dirección, y cada habitación posterior contiene otra habitación con de 1 a 4 puertas que van a otras habitaciones.
Se supone que el "laberinto" tiene un tamaño ilimitado y crecerá a medida que se trasladen las habitaciones. Hay un número limitado de Rooms
disponibles, sin embargo, el número disponible es dinámico y puede cambiar.
Mi problema es que no estoy seguro de la mejor estructura de datos para este tipo de patrón
Primero pensé en usar una matriz [X] [X] de Room
objetos, pero realmente preferiría evitar eso ya que se supone que la cosa debe crecer en cualquier dirección, y solo se deben construir habitaciones que se "visiten".
El otro pensamiento era que cada Room
clase contuviera 4 Room
propiedades vinculadas para N, S, E y W, y solo se vinculara a la anterior Room
, pero el problema con eso es que no sé cómo identificar si un usuario entra en una sala que tiene una habitación adyacente ya "construida"
Por ejemplo,
--- --- ---------- El | El | El | El | Inicio 5 4 El | El | El | El | --- --- --- --- --- --- ---------- --- --- El | El | El | El | El | El | El | 1 2 3 El | El | El | El | El | El | --- --- --- --- ----------
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 sala # 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 mezcla de la matriz y las habitaciones vinculadas, o tal vez solo estoy mirando esto de la manera incorrecta.
¿Existe 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 solo me faltan algunos datos?
(En caso de que esté interesado, el proyecto es un juego muy similar a Munchkin Quest )