Na verdade, não tenho certeza de que "labirinto" seja o termo correto. Basicamente, os usuários começam em um único Room
com 4 portas (N, S, E e W). Eles podem ir em qualquer direção e cada sala subsequente contém outra sala com de 1 a 4 portas que vão para outras salas.
O "labirinto" deve ter tamanho ilimitado e crescer à medida que você move as salas. Há um número limitado de Rooms
disponíveis, no entanto, o número disponível é dinâmico e pode ser alterado.
Meu problema é que não tenho certeza da melhor estrutura de dados para esse tipo de padrão
Primeiro pensei em usar apenas uma série de Room
objetos [X] [X] , mas prefiro evitar isso, já que a coisa deve crescer em qualquer direção, e apenas as salas "visitadas" devem ser construídas.
O outro pensamento era que cada Room
classe contivesse 4 Room
propriedades vinculadas para N, S, E e W e apenas vinculasse à anterior Room
, mas o problema com isso não sei como identificar se um usuário entra em uma sala que tem uma sala adjacente já "construída"
Por exemplo,
--- --- ---------- | | | | Início 5 4 | | | | --- --- --- --- --- --- ---------- --- --- | | | | | | | 1 2 3 | | | | | | --- --- --- --- ----------
Se o usuário passar de Iniciar> 1> 2> 3> 4> 5, o Room
nº 5 precisará saber que W contém a sala inicial, S é a sala nº 2 e, nesse caso, não deve estar disponível, e N pode ser um novo Room
ou uma parede (nada).
Talvez eu precise de uma mistura da matriz e das salas interligadas, ou talvez esteja apenas vendo isso da maneira errada.
Existe uma maneira melhor de construir a estrutura de dados para esse tipo de "labirinto"? Ou estou no caminho certo com o meu processo de pensamento atual e só estou perdendo algumas informações?
(Caso você esteja interessado, o projeto é um jogo muito semelhante ao Munchkin Quest )