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;
Коды символов тут.
Затем надо писать вспомогательную функцию для поиска случайного маршрута к финишу.