1. открой поисковик
2. вбей данные из "как сгенерировать идеальный бесконечный лабиринт в с++"
3.посмотри видео и всё поймёшь
желаю удачи!!
Объяснение:
Предисловие
На написание статьи меня сподвигло практически полное отсутствие материалов на русском языке про алгоритмы генерации лабиринтов. На Хабре, из того, что вообще есть по теме, можно отметить две статьи: раз и два. Ценность и пользу из которых несет лишь вторая. В первой – просто перевод формального алгоритма и небольшое его пояснение. Что, конечно, неплохо, но очень скудно и не вызывает желания изучать тему дальше.
Если моя статья Вам понравится, я продолжу писать о различных алгоритмах. Мы рассмотрим два самых примитивных и простых случая – генерация двоичного дерева и Сайдвиндер, который, по своей сути, просто чуть измененная версия двоичного дерева с одним заметным плюсом. ОСТОРОЖНО ТРАФИК.
Дам один совет – не подглядывайте в код до тех пор, пока вы не напишите свою реализацию. Вы получите гораздо больше удовольствия и пользы от исправления багов и поиска ошибок, чем если просто переведете с одного языка на другой.
Серьезно. Прислушайтесь к совету. Вы, верно, потратите больше времени, но оно стоит стоит. У меня, например, из-за пары ошибок появился очень забавный генератор «инопланетных» текстов, который можно использовать в различных Sci-Fi играх для создания текста. Надеюсь, Вы изучаете тему для себя и никуда не спешите.
P.S.:
Я буду использовать термин «смещение», предполагая английский bias. Т.е. пристрастие алгоритма к направленности в какую-либо сторону. Например, правое смещение – алгоритм генерирует лабиринты с длинными правыми проходами.
Раскраска лабиринтов происходит относительно расстояния от крайнего левого угла поля до некоторой клетки. Чем дальше от начальной координаты – тем темнее будет цвет.
Идеальный лабиринт – такой лабиринт, в котором одна клетка связана с другой одним единственным путем. Иначе говоря, остовное дерево.
Про Lua
Алгоритм двоичного дерева
Задача 1:
var a,b: real;
var c: char;
begin
write('Введите a: ');
readln(a);
write('Введите b: ');
readln(b);
write('Введите нужную операцию (+,-,*,/): ');
readln(c);
if (c='+') then writeln('Результат: ',a+b)
else if (c='-') then writeln('Результат: ',a-b)
else if (c='*') then writeln('Результат: ',a*b)
else if (c='/') then writeln('Результат: ',a/b);
end.
Задача 2:
var a: integer;
begin
write('Введите количество кроликов: ');
readln(a);
write('Количество морковок: ',3*100+a*2);
end.
Задача 3:
var a: integer;
begin
write('Введите число: ');
readln(a);
write('Последняя цифра числа: ',a mod 10);
end.