|
4 / 4 / 0
Регистрация: 01.10.2011
Сообщений: 33
|
||||||
Генерация случайного лабиринта25.10.2011, 20:24. Показов 13491. Ответов 9
Метки нет (Все метки)
Вообщем требуется сгенерировать лабиринт 12х12 с одним входом и выходом. Лабиринт представляется символьным массивом, где '#' - стенка, а '.' - путь, по которому можно пройти. Собственно у меня затык с пониманием как надо реализовать. Максимум что получилось по нормальному одну длинную дорожку вправо и вниз сделать. Всё остальное вместо лабиринта рисует некое поле.
Собственно первое что пришло в голову сделать рекурсивный вариант. Но он у меня получился крайне плохо. В основном нужны советы именно по алгоритму и в каком направлении думать. Готовый код не очень нужен ![]() Примерный код(там внутри правда еще функция путешествия по лабиринту, она не совсем правильная, но я её представляю как дорабатывать, просто сначала надо сгенерировать лабиринт, чтобы все ошибки увидеть).
0
|
||||||
| 25.10.2011, 20:24 | |
|
Ответы с готовыми решениями:
9
Генерация случайного числа, максимально случайного Генерация лабиринта Генерация лабиринта |
|
63 / 35 / 13
Регистрация: 21.10.2010
Сообщений: 538
|
|
| 25.10.2011, 21:29 | |
|
Ну я бы сделал примерно так:
Есть матрица 12 на 12, начинаем в 0 0, и далее рекурсивная рандомная функция, то есть смотришь генерируешь число от 0 до 3, в какую сторону идти, если точка занята, то следующую смотришь, если все заняты, то функцию обрывается, и генерируешь её заново, и так пока функция не выйдет за пределы массива, то есть не найдет выход, ну и естественно в время путешествия отмечаешь нужные точки, а потом проходишься по готовой матрице и отмечаешь не отмеченные точки матрицей
0
|
|
|
4 / 4 / 0
Регистрация: 01.10.2011
Сообщений: 33
|
||
| 25.10.2011, 22:14 [ТС] | ||
1
|
||
|
63 / 35 / 13
Регистрация: 21.10.2010
Сообщений: 538
|
|
| 25.10.2011, 22:20 | |
|
Есть еще предложения перед тем как перейти на след точку, посмотри граничит ли она с другими, которые уже входят в путь, если да то выбираешь следующую точку, если таких точек нет, рекурсия обрывается
0
|
|
|
78 / 10 / 2
Регистрация: 11.10.2010
Сообщений: 88
|
|
| 25.10.2011, 23:09 | |
|
не из Дейтелов задачка?
0
|
|
|
4 / 4 / 0
Регистрация: 01.10.2011
Сообщений: 33
|
||
| 25.10.2011, 23:17 [ТС] | ||
|
0
|
||
|
4 / 4 / 0
Регистрация: 01.10.2011
Сообщений: 33
|
|
| 27.10.2011, 10:34 [ТС] | |
|
Надеюсь что кто-нибудь еще сможет помочь, дать пару идей и прочее.
0
|
|
|
23 / 6 / 2
Регистрация: 22.02.2015
Сообщений: 10
|
||||||
| 22.02.2015, 20:50 | ||||||
|
Вводятся ширина и высота, лабиринт генерируется, и сам находит выход. Вам предлагается выбрать, просматривать, как ищется путь или нет.(yes/no). Удачи
0
|
||||||
|
3 / 3 / 1
Регистрация: 19.02.2014
Сообщений: 115
|
|
| 18.04.2015, 23:03 | |
|
А может кто пояснить если не трудно.Что делается в строчках с 53 по 85 в коде что привел ЯрославК? Пытаюсь разобраться в коде,понимаю что там вроде как "рисуются" линии прохода от входа до выхода,но не могу понять каким образом
. С 25й по 53юю как бы все понятно,что и как "рисуется",сначала рамка,потом вход\выход и 1ые точки.А вот потом,сколько ни сидел ни соображал,не могу врубиться .И может у кого есть код с пояснениями,что и как строится?По книге Дейтела там просят сделать лабиринт в двумерном массиве,единственное что смог сделать,это дополнить этот код и скопировать лабиринт из одномерного массива что тут приводится в двумерный.Но все же хочется понять алгоритм.Поясните пожалуйста,кому не трудно.
0
|
|
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,631
|
||||||
| 26.02.2017, 03:41 | ||||||
|
Долго мучался, но кое что, вроде бы, получилось.
0
|
||||||
| 26.02.2017, 03:41 | |
|
Помогаю со студенческими работами здесь
10
Генерация 6 свободного лабиринта Генерация случайного числа Генерация случайного числа Генерация случайного списка
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|