Программа Maze, позволяет генерировать и отрисовывать идеальные лабиринты и пещеры.
Программа выполнена на языке программирования С++ с применеием ООП, архитектурных паттернов и паттернов программирования.
Общая архитектура программы построена на основе паттерна MVC (Model View Controller, реализация в одноименных директориях проекта).
Также для оптимизации применены следующие паттерны программирования:
- Strategy
- Facade
- Singleton
Программа позволяет как открывать уже созданные лабиринты из .txt так и генерировать свои "идеальные лабиринты".
Идеальным считается лабиринт, в котором из каждой точки можно попасть в любую другую точку ровно одним способом.
Для генерации идеального лабиринта реализован Алгоритм Эйлера
Выстави размеры лабиринта (можно прокрутить колесом) и нажми кнопку Generate
Максимальный размер лабиринта 50 х 50 ячеек.
Лабиринты отрисовываются на экране в поле размером 500 x 500 пикселей.
Чтобы сохранить лабиринт в .txt файл нажми Save file и выбери путь.
В любом лабиринте можно найти один единственный путь от одной точки до другой.
Программа реализовывает нахождение пути между двумя точками с помощью Волнового алгоритма (алгоритм Ли)
Просто выбери две любые точки на поле лабиринта и программа построит путь между ними
В программе реализована возможность открывать из .txt файла и генерировать пещеры с использованием клеточного автомата
В Пещерах правила проще, чем в "Жизни" - есть две специальные переменные, одна для "рождения" "мертвых" клеток (предел "рождения") и одна для уничтожения "живых" клеток (предел "смерти").
Если "живые" клетки окружены "живыми" клетками, количество которых меньше, чем предел "смерти", они "умирают".
Аналогично если "мертвые" клетки находятся рядом с "живыми", количество которых больше, чем предел "рождения", они становятся "живыми".
Для генерации пещеры пользователем задаются ее размеры и шанс на начальную инициализацию клетки.
Максимальный размер пещеры 50 х 50 ячеек.
Для выполнения одного шага необходимо задають пределы "рождения" и "смерти" клетки
Далее можно выполнять шаги нажатием кнопки Next step или можно задать колличество шагов в секунду и нажать Auto.
В корневой дирректории расположен Makefile со следующими целями:
- make all - выполняет цели test, check, clean
- test - запускает Unit-тесты на основе библиотеки GTest, проверку парсинга .txt файла, проверку генерации файлов, проверку нахождения пути, шага в пещере.
* check - запускает проверку всех файлов на стилевые нормы, утечки и cppcheck - install - выполняет установку приложения в директорию Applications/
- uninstall - производит деинсталяцию приложения
- dist - архивирует дистрибутив программы в .tar файл
- dvi - запускает readme.html
- clean - выполняет полную очистку файлов установки и удаленние всех данных приложения