Если ваш «дом» является сеткой, и вы можете перейти от любой ячейки сетки к любой другой ячейке сетки, массив в порядке. Я предполагаю, что ваши сверстники намекают на то, что вы можете не захотеть перемещаться из любой комнаты в любую соседнюю комнату (а также НЕ иметь возможности перемещаться, скажем, от 0,0 до 42,13).
Однако с древовидной структурой вы все равно не можете представить произвольный набор переходов между комнатами.
Более гибким подходом будет Список смежностей , который является специализированным типом графа . Думайте о каждой комнате как об узле и дайте каждому узлу список других комнат, в которые можно перейти. С этой структурой вы можете даже разрешить односторонние переходы (например, дверь в одну сторону из многих приключенческих игр).
псевдокод
class Room
{
string Name;
string Description
List<Room> ConnectedRooms;
}
Тогда при представлении персонажа
class Character
{
string Name;
Room CurrentRoom;
}
Чтобы увидеть, куда данный персонаж может перейти:
List<Room> availableRooms = myCharacter.CurrentRoom.ConnectedRooms;