Создание Лабиринта с помощью Java

Я использую Java для создания лабиринта указанных "строк" и "столбцов" друг по другу для сходства с сеткой. Я планирую использовать рекурсивный метод в глубину для "открытия дверей" между комнатами (поле, созданное строками и столбцами).

Я нуждаюсь в помощи, пишущий открытый метод, который разорвет связь между комнатами.

1
задан user356184 2 June 2010 в 07:27
поделиться

2 ответа

попробуйте что-нибудь вроде этого: пример

1
ответ дан 3 September 2019 в 00:07
поделиться

Поскольку вы упоминаете «сначала в глубину» (-поиск) (DFS), я полагаю, ваш лабиринт - это граф, в котором узлы представляют комнаты. Узлы соединяются, если между комнатами есть незапертая дверь. Граф может быть циклическим.

У вас есть стартовая комната, и вы, возможно, ищете что-то в лабиринте. Итак, вы входите в комнату, проверяете каждую дверь, не заперта ли она или у вас есть подходящий ключ, и открываете все возможные двери. Вы можете найти ключ. Затем вы добавляете этот ключ к своей связке ключей и перезапускаете в стартовой комнате.

Формально (адаптировано из de: wikipedia ; см. Также en.wikipedia ):

DFS(node, goal)
{
  if (node == goal)
    return node;
  else if (node.contains(newKey)) 
  {
    addToKeyRing(newKey);
    resetMaze();
    DFS(startRoom, goal);
  } else 
  {
    stack := expand (node) // all unvisited rooms that can be entered pushed on stack
    while (stack is not empty)
    {
      node' := pop(stack);
      DFS(node', goal);
    }
  }
}
1
ответ дан 3 September 2019 в 00:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: