Aslında "labirent" in doğru terim olduğundan emin değilim. Temel olarak, kullanıcılar Room
4 kapılı (N, S, E ve W) bir single ile başlar . Herhangi bir yöne gidebilirler ve sonraki odaların her birinde diğer odalara giden 1 ila 4 kapı arasında başka bir oda bulunur.
"Labirent" boyutunda sınırsız olması ve oda hareket ettikçe büyümek gerekiyordu. Sınırlı sayıda Rooms
mevcuttur, ancak mevcut sayı dinamiktir ve değişebilir.
Benim sorunum, bu tür bir kalıp için en iyi veri yapısından emin değilim.
İlk önce sadece bir [X] [X] Room
nesne dizisi kullanmayı düşündüm , ama olayın herhangi bir yöne doğru büyümesi gerektiğinden ve sadece “ziyaret edilen” odaların inşa edilmesi gerektiğinden kaçınmayı tercih ederim.
Diğer düşünce, her bir Room
sınıfın Room
N, S, E ve W için 4 bağlantılı özellik içermesi ve sadece bir önceki ile bağlantı kurmasıydı Room
, ancak bir kullanıcının bir odaya girip girmeyeceğini nasıl belirleyeceğimi bilmiyorum. zaten "inşa edilmiş" bir bitişik odaya sahip
Örneğin,
--- --- ---------- | | | | 5 4 Başlat | | | | --- --- --- --- --- --- ---------- --- --- | | | | | | | 1 2 3 | | | | | | --- --- --- --- ----------
Kullanıcı Başlat> 1> 2> 3> 4> 5’den hareket ederse, Room
# 5’in W’nin başlangıç odasını içerdiğini bilmesi gerekir, S oda # 2’dir ve bu durumda kullanılamamalıdır ve N ya yeni Room
veya bir duvar (hiçbir şey).
Belki dizinin ve bağlantılı odaların bir karışımına ihtiyacım var ya da belki sadece bu yanlış yola bakıyorum.
Bu tür "labirent" için veri yapısını oluşturmanın daha iyi bir yolu var mı? Yoksa şu anki düşünce sürecimle doğru yolda mıyım ve sadece birkaç bilgi parçasını mı kaçırıyorum?
(İlgilendiğiniz takdirde, proje Munchkin Quest'e çok benzeyen bir oyundur )