Генератор случайных карт подземелья по клеткам

Ваши данные

Зерно и есть карта. Одно и то же число всегда рисует одно и то же подземелье, поэтому понравившаяся карта не теряется из-за лишнего клика, и передать её можно, отправив число, а не картинку.

Каждая комната достижима из любой другой. Коридоры не разбросаны наугад: они следуют минимальному остовному дереву по центрам комнат, и именно это делает изолированную комнату невозможной, а не просто маловероятной.

Ваше подземелье

Запрошено комнат
Комнат поместилось
Доля сетки, занятая полом, в процентах
Можно ли пройти из любой комнаты в любую другую

Последняя строка проверяется на самом чертеже, а не обещается методом. Каждый раз при отрисовке страница заливает коридоры от первой комнаты и считает, скольких она достигает. Если это число когда-нибудь перестанет совпадать, строка выше скажет об этом, а не скроет.

Запрос большего числа комнат, чем вмещает сетка, не падает с шумом. Генератор просто перестаёт находить места, поэтому число поместившихся комнат стоит рядом с тем, которое вы запросили. Более крупная сетка или меньше комнат — вот что это исправляет.

Реакции

0

0 Комментарии

User profile image

Прокомментируйте первым

Может ли комната оказаться изолированной, без входа?

Нет, и не потому, что это маловероятно, а из-за того, как выбираются коридоры. Они следуют минимальному остовному дереву по центрам комнат, что для n комнат даёт ровно n-1 коридор и гарантирует путь между любыми двумя.

Страница тоже не принимает это на веру. При каждой отрисовке она заливает коридоры от первой комнаты, считает достижимые и показывает результат. Проверено на 400 разных зёрнах — ни одной изолированной комнаты.

Для чего нужно зерно?

Зерно и есть карта. Одно и то же число всегда рисует одно и то же подземелье, поэтому вы можете вернуться к понравившейся карте и поделиться ею, отправив число, а не картинку.

Без него ещё один клик уничтожил бы карту, которая у вас была, и вернуться было бы некуда. Смените число — получите другое подземелье; сохраните его — получите то же самое на любом устройстве.

Почему комнат вышло меньше, чем я просил?

Потому что они перестали помещаться. Комнаты ставятся так, чтобы никогда не касаться друг друга и края, и на маленькой сетке свободное место кончается задолго до вашего числа.

Страница показывает рядом, сколько вы запросили и сколько поместилось, вместо того чтобы втискивать комнаты ради вашего числа. Более крупная сетка или меньше комнат — вот решение.

СеткаЗапрошено комнатКомнат поместилось
20 x 15303
24 x 18256
48 x 323024
90 x 703030
Хорошо ли печатается карта?

Она сделана для печати: карта сохраняет белый фон и тёмные линии, какой бы теме ни следовал остальной сайт, потому что тёмная карта тратит чернила и выходит нечитаемой на бумаге.

Это векторная графика, а не картинка, поэтому она остаётся чёткой при любом размере бумаги. Комнаты пронумерованы, чтобы вы могли показать за столом, в какой из них находится группа.