Простые рамки для рисования сгенерированного лабиринта в Stack Overflow

Я создаю лабиринт, используя рандомизированную версию Крускала. Логика программы для создания лабиринта не является проблемой для меня. У меня проблемы с выяснением, как бы я на самом деле шел к физическому отображению рисунка лабиринта.

Насколько я понимаю, начальный лабиринт начинался бы как сетка H by W, где каждая клетка имеет все свои «границы» / стены. Мой единственный опыт рисования на C ++ — это просто печатать символы в терминале, чтобы представлять разные фигуры. Однако он не подходит для более сложных рисунков, таких как ячейка определенной ширины и высоты, окруженная четырьмя гораздо более тонкими черными линиями. Я полагаю, что я мог бы окружить каждого персонажа ячейки 8 символами стены, но это кажется довольно громоздким и не очень элегантным (стены выглядели бы громоздкими / не тонкими).

Я видел несколько потрясающих скриншотов на SO, которые люди делали из своего сгенерированного лабиринта, где они могли легко рисовать тонкие стены, окружающие клетки. Я никогда не использовал библиотеку графиков / рисунков в C ++, и после нескольких часов поиска я все еще совершенно потерян.

Для тех алгоритмических фанатиков, какие простейшие фреймворки для рисования простых сеток / лабиринтов в C ++?

0

Решение

Без специальной библиотеки для отображения изображений вы не сможете фактически показать свое изображение. OpenCV имеет фантастический набор инструментов для генерации, редактирования и отображения изображений. Есть огромное количество учебные пособия от пошаговой установки вашей системы до выполнения любых действий с OpenCV.

Достаточно простой метод, независимо от того, какие библиотеки вы используете

  1. Создать изображение в памяти с N пикселей на единицу в вашей сетке. Так что ваше изображение будет (N * H) x (N * W) пиксели большие
  2. Установите все пиксели на один цвет
  3. Обведите каждую единицу в вашей сетке, которая является путем, и нарисуйте квадрат второго цвета на вашем изображении из (N* W, N* H) до (N* [W + 1], N* [Н + 1])
  4. Нарисуйте изображение для вашего выходного объекта

В итоге вы получите двухцветное изображение со стенами, цветом фона и контуром цвета переднего плана.

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

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]