Skip to content

Latest commit

 

History

24 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

drawing

Maze for macOS

Описание программы

Программа 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 и Unit-тесты на матрицы

В корневой дирректории расположен Makefile со следующими целями:

  • make all - выполняет цели test, check, clean
  • test - запускает Unit-тесты на основе библиотеки GTest, проверку парсинга .txt файла, проверку генерации файлов, проверку нахождения пути, шага в пещере.
    * check - запускает проверку всех файлов на стилевые нормы, утечки и cppcheck
  • install - выполняет установку приложения в директорию Applications/
  • uninstall - производит деинсталяцию приложения
  • dist - архивирует дистрибутив программы в .tar файл
  • dvi - запускает readme.html
  • clean - выполняет полную очистку файлов установки и удаленние всех данных приложения

About

Implementation of labyrinths and caves

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages