алгоритм составления лабиринтов

Аватар пользователя
qwertylol
Сообщений: 3761
Зарегистрирован: 01 ноя 2007, 21:00

алгоритм составления лабиринтов

Сообщение qwertylol » 02 фев 2010, 09:15

IQDDD писал(а):Source of the post
нет, не подойдёт. правая верхняя клетка не использована, как и нижняя левая. они - свободные

Нижняя левая- это тупик.
Значит поле у нас будет квадратом NxN, что в программе будет представляться как двухмерный массив типа byte. Для вывода этого массива на экран будет использоваться функция, которая по числу выдаёт coответствующую комнату. Для простоты начало лабиринта будет внизу, a конец вверху. Затем мы "прорубим" путь от начала к концу(для простоты предлагаю не делать "витков", т.e. не двигаться назад выбирая случайный путь). И потом будем генерировать ответвления пока не кончатся пустые клетки.
Сначала разберёмся c функцией вывода на экран:
Будем использовать систему флагов. Eсли активен первый бит, то можно идти влево, eсли второй, то вверх, eсли третий- то вправо и четвёртый вниз. Вот так должна выглядеть эта функция:

Код: Выбрать все

function f(x:byte):char;
begin
 case x of
 0:
 f:=#32;
 1:
 f:=#181;
 2:
 f:=#208;
 3:
 f:=#188;
 4:
 f:=#198;
.............................
 end;
end;

Коды символов тут.
Затем надо писать вспомогательную функцию для поиска случайного маршрута к финишу.
Последний раз редактировалось qwertylol 29 ноя 2019, 19:29, всего редактировалось 1 раз.
Причина: test


Вернуться в «Computer Science»

Кто сейчас на форуме

Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 0 гостей