Ich bin mir nicht sicher, ob "Labyrinth" der richtige Begriff ist. Grundsätzlich starten Benutzer in einer Single Room
mit 4 Türen (N, S, E und W). Sie können in jede Richtung gehen, und jeder nachfolgende Raum enthält einen anderen Raum mit 1 bis 4 Türen, die zu anderen Räumen führen.
Das "Labyrinth" soll unbegrenzt groß sein und wachsen, wenn Sie Räume verschieben. Es ist eine begrenzte Anzahl Rooms
verfügbar, die verfügbare Anzahl ist jedoch dynamisch und kann sich ändern.
Mein Problem ist, dass ich mir nicht sicher bin, welche Datenstruktur für diese Art von Muster am besten geeignet ist
Ich habe zuerst darüber nachgedacht, nur ein [X] [X] -Array von Room
Objekten zu verwenden, aber ich würde das wirklich lieber vermeiden, da das Ding in jede Richtung wachsen soll und nur Räume gebaut werden sollten, die "besucht" werden.
Der andere Gedanke war, dass jede Room
Klasse 4 verknüpfte Room
Eigenschaften für N, S, E und W enthält und nur mit der vorherigen verknüpft ist Room
, aber das Problem dabei ist, dass ich nicht weiß, wie ich identifizieren kann, ob ein Benutzer einen Raum betritt, der hat einen angrenzenden Raum schon "gebaut"
Zum Beispiel,
--- --- ---------- | | | | Start 5 4 | | | | --- --- --- --- --- --- ---------- --- --- | | | | | | | 1 2 3 | | | | | | --- --- --- --- ----------
Wenn der Benutzer von Start> 1> 2> 3> 4> 5 wechselt, muss Room
# 5 wissen, dass W den Startraum enthält, S Raum # 2 ist und in diesem Fall nicht verfügbar sein sollte und N entweder a sein kann Neu Room
oder eine Mauer (nichts).
Vielleicht brauche ich eine Mischung aus dem Array und den verbundenen Räumen, oder vielleicht sehe ich das einfach falsch.
Gibt es eine bessere Möglichkeit, die Datenstruktur für diese Art von "Labyrinth" zu erstellen? Oder bin ich mit meinem aktuellen Denkprozess auf dem richtigen Weg und vermisse nur ein paar Informationen?
(Falls Sie interessiert sind, ist das Projekt ein Spiel, das Munchkin Quest sehr ähnlich ist. )