Как я могу создать такую карту?
Я пытаюсь сделать базовые карты улиц для игры в C. Каждый блок представлен 1 или 0 в массиве. На изображении 1 является белым и представляет собой улицу. Черный равен нулю и представляет собой строительный блок. Улица должна быть на одном блоке повсюду, и вы можете добраться от любой части улицы до любой другой улицы.
Я пробовал несколько быстрых алгоритмов, но они не дают мне вариации, как на изображении. Один из моих методов - выбор случайных горизонтальных и вертикальных линий, но затем я получаю неинтересный план типа тартана.
Я попытался перевернуть случайные биты по всему изображению, но тогда это грязно, чтобы проверить, доступны ли все куски улицы, и фиксировать их, если они не являются.
Мое следующее лучшее предположение состоит в том, чтобы генерировать случайные сегменты линии горизонтально и вертикально, а не полные линии, но тогда я уверен, что все еще могут генерировать изолированные фрагменты улицы.
Я мог бы использовать генетический алгоритм для создания кандидатов, но я действительно не хочу идти на эту проблему, если есть гораздо более простое решение.
Есть ли очевидное решение, о котором я не думаю? Решение должно иметь возможность генерировать заданное изображение, а также другие варианты.
Требуется ли, чтобы здания были прямоугольными? – Rob
Нет, это не является обязательным требованием, если все еще действуют правила. –