Maze
Документация к проекту Maze
Введение
Проект Maze представляет собой приложение на языке Java 17 с использованием JavaFX для генерации и отображения идеальных лабиринтов и пещер. Приложение предоставляет графический интерфейс для визуализации лабиринтов и пещер, а также включает функциональность для автоматической генерации и решения лабиринтов.
Структура проекта
- Исходный код: находится в папке
src
. - Сборка и установка: настроены с помощью
Makefile
.
Часть 1. Реализация проекта Maze
Функциональность
-
Загрузка лабиринта из файла
- Реализована кнопка для загрузки лабиринта из файла, который должен быть в формате JSON. Приложение поддерживает максимальный размер лабиринта 50x50.
- Загруженный лабиринт корректно отображается в графическом окне размером 500x500 пикселей. Толщина стен составляет 2 пикселя, а размер ячеек вычисляется так, чтобы лабиринт полностью заполнял отведённое поле.
-
Отображение лабиринта
- Лабиринт отрисовывается в графическом интерфейсе с использованием JavaFX, где каждая ячейка имеет размер, вычисляемый на основе размеров окна и количества ячеек в лабиринте.
Сборка и установка
- Цели
Makefile
:all
: Сборка всего проекта.install
: Установка программы в указанный каталог.uninstall
: Удаление установленной программы.clean
: Очистка скомпилированных файлов.dvi
: Генерация документации.dist
: Создание дистрибутива.tests
: Запуск тестов.
Часть 2. Генерация идеального лабиринта
Функциональность
-
Генерация лабиринта
- Реализован алгоритм Эллера для генерации идеальных лабиринтов. Идеальные лабиринты обеспечивают связность, то есть из любой точки можно попасть в любую другую, и не содержат изолированных областей или петель.
- Пользователь вводит размерность лабиринта (количество строк и столбцов). Сгенерированный лабиринт сохраняется в формате JSON.
-
Отображение сгенерированного лабиринта
- Сгенерированный лабиринт отображается в окне размером 500x500 пикселей согласно требованиям.
-
Тестирование
- Модуль генерации идеальных лабиринтов полностью покрыт unit-тестами, которые проверяют корректность выполнения алгоритма и соответствие стандартам.
Часть 3. Решение лабиринта
Функциональность
-
Поиск решения лабиринта
- Пользователь может задать начальную и конечную точки для поиска пути.
- Решение лабиринта отображается линией толщиной 2 пикселя, проходящей через середины ячеек. Цвет линии отличается от цвета стен и поля.
-
Отображение пути
- Путь решения лабиринта корректно визуализируется в графическом интерфейсе.
-
Тестирование
- Модуль решения лабиринтов покрыт unit-тестами, которые проверяют корректность нахождения и отображения пути.
Часть 4. Генерация пещер
Функциональность
-
Генерация пещер
- Реализована генерация пещер с использованием клеточного автомата. Пользователь может выбрать файл в формате JSON, содержащий описание пещеры.
- Пещера отображается в отдельном окне или вкладке интерфейса. Максимальный размер пещеры — 50x50.
-
Параметры генерации
- Пользователь задаёт пределы «рождения» и «смерти» клетки, а также шанс на начальную инициализацию клетки. Пределы могут иметь значения от 0 до 7.
- Клетки за границей пещеры считаются живыми.
-
Режимы отображения
- Пошаговый режим отрисовки итераций алгоритма.
- Автоматическая отрисовка с заданной частотой обновления итераций.
-
Тестирование
- Модуль генерации пещер полностью покрыт unit-тестами, которые проверяют корректность работы алгоритма и визуализации.
Примечания
- Код проекта соблюдает Google Style Guide для Java.
- Используется JavaFX для графического интерфейса, который обеспечивает удобное отображение и взаимодействие с пользователем.
- Приложение прошло тестирование на корректность выполнения всех заявленных функций и соответствие требованиям.