In realtà non sono sicuro che "labirinto" sia il termine corretto. Fondamentalmente gli utenti iniziano in un unico Room
che ha 4 porte (N, S, E e W). Possono andare in qualsiasi direzione e ogni stanza successiva contiene un'altra stanza con ovunque da 1 a 4 porte che vanno in altre stanze.
Il "labirinto" dovrebbe avere dimensioni illimitate e crescere man mano che si spostano le stanze. È disponibile un numero limitato di Rooms
, tuttavia il numero disponibile è dinamico e può essere modificato.
Il mio problema è che non sono sicuro della migliore struttura dati per questo tipo di modello
Per prima cosa ho pensato di usare solo una matrice [X] [X] di oggetti Room
, ma preferirei davvero evitarlo dato che la cosa dovrebbe crescere in qualsiasi direzione, e solo le stanze che sono "visitate" dovrebbe essere costruito.
L'altro pensiero era di avere ogni classe Room
contenente 4 proprietà Room
collegate per N, S, E e W, e basta collegarsi al Room
precedente, ma il problema con quello non lo faccio sapere come identificare se un utente entra in una stanza che ha già una stanza adiacente "costruita"
Ad esempio,
--- --- ---------- | | | | Start 5 4 | | | | --- --- --- --- --- --- ---------- --- --- | | | | | | | 1 2 3 | | | | | | --- --- --- --- ----------
Se l'utente si sposta da Start > 1 > 2 > 3 > 4 > 5, quindi Room
# 5 deve sapere che W contiene la stanza iniziale, S è la stanza # 2 e in questo caso non dovrebbe essere disponibile, e N può essere una nuova Room
o un muro (niente).
Forse ho bisogno di un mix dell'array e delle stanze collegate, o forse sto solo guardando nel modo sbagliato.
C'è un modo migliore di costruire la struttura dati per questo tipo di "labirinto"? O sono sulla strada giusta con il mio attuale processo di pensiero e mi mancano solo alcune informazioni?
(Nel caso tu sia interessato, il progetto è un gioco molto simile a Munchkin Quest )