실제로 "미로"가 올바른 용어인지 확실하지 않습니다. 기본적으로 사용자 Room
는 4 개의 도어 (N, S, E 및 W)가 있는 싱글에서 시작 합니다. 그들은 어느 방향 으로든 갈 수 있으며, 그 다음 각 방에는 다른 방으로가는 1-4 개의 출입구가있는 다른 방이 있습니다.
"미로"는 크기가 무제한이며 방을 움직일 때 성장해야합니다. Rooms
사용 가능한 수는 제한되어 있지만 사용 가능한 수는 동적이며 변경 될 수 있습니다.
내 문제는이 유형의 패턴에 가장 적합한 데이터 구조를 확신하지 못한다는 것입니다.
나는 단지 [X] [X] 배열의 Room
객체를 사용하는 것에 대해 처음으로 생각 했지만, 어떤 방향 으로든 성장해야하므로 "방문"된 방만 건축해야한다는 점을 피하고 싶습니다.
다른 생각은 각 Room
클래스 Room
에 N, S, E 및 W에 대한 4 개의 연결된 속성을 포함 시키고 이전에 링크하는 것이 Room
었지만 사용자가 방에 들어 갔는지 식별하는 방법을 모른다는 문제 이미 "건축 된"인접 방이 있습니다
예를 들어
--- --- ---------- | | | | 시작 5 4 | | | | --- --- --- --- --- --- ---------- --- --- | | | | | | | 1 2 3 | | | | | | --- --- --- --- ----------
사용자가 시작> 1> 2> 3> 4> 5에서 이동하면 Room
# 5는 W에 시작 룸이 포함되어 있음을 알아야하고, S는 룸 # 2이며이 경우 사용할 수 없으며 N은 다음 중 하나 일 수 있습니다. 새로운 Room
또는 벽 (아무것도).
어쩌면 배열과 연결된 방을 혼합해야하거나 아마도 이것을 잘못보고있을 것입니다.
이 유형의 "미로"에 대한 데이터 구조를 구축하는 더 좋은 방법이 있습니까? 아니면 현재의 사고 과정을 제대로 따르고 있으며 몇 가지 정보가 누락 되었습니까?
(관심이있는 경우 프로젝트는 Munchkin Quest 와 매우 유사한 게임입니다 )