Будет ли лабиринт прямоугольной сеткой?Что-то еще?
Это также зависит от того, какая часть карты будет содержать полезную информацию (проходы или объекты).
Если это прямоугольная сетка и большинство квадратов сетки будут содержать что-то, хорошие данныеструктура представляет собой двумерный массив (массив массивов), причем каждый элемент массива представляет 1 строку, каждый элемент внутренних массивов представляет 1 ячейку в этой строке, которая является объектом, содержащим данные, относящиеся к этой ячейке (соседние ячейки которых могут бытьпереместился в, что содержит ячейка, есть ли на ней символ)полезный в (например, непроходимые блоки), хорошая структура данных - это граф.
Каждая вершина графа - это проходимая ячейка.Края представляют пары ячеек, между которыми вы можете перемещаться (вы можете сделать это ориентированным графом, если некоторые двери только односторонние).Каждая вершина / ячейка является объектом, содержащим информацию об этой ячейке (например, ее местоположение в физическом лабиринте, который должен быть нарисован, и т. Д.).
Преимущество структуры массив-массив состоит в том, что ОЧЕНЬ легконарисовать его, и достаточно просто обработать (любое движение - это просто удаление индекса).Добавление / удаление стен так же просто, как и изменение данных в двух элементах массива соседних ячеек.
Преимущество структуры графа состоит в том, что он занимает намного меньше места, если проходы лабиринта очень редки (например, только 1/100поля проходит);это единственная структура, которая может представлять случайную (например, не прямоугольную сетку) геометрию, и обработка довольно проста.Добавить / удалить стены легко, так как это просто добавление ребра к графику.