Maze

Форк
0

3 месяца назад
3 месяца назад
README.md

Документация к проекту Maze

Введение

Проект Maze представляет собой приложение на языке Java 17 с использованием JavaFX для генерации и отображения идеальных лабиринтов и пещер. Приложение предоставляет графический интерфейс для визуализации лабиринтов и пещер, а также включает функциональность для автоматической генерации и решения лабиринтов.

Структура проекта

  • Исходный код: находится в папке src.
  • Сборка и установка: настроены с помощью Makefile.

Часть 1. Реализация проекта Maze

Функциональность

  1. Загрузка лабиринта из файла

    • Реализована кнопка для загрузки лабиринта из файла, который должен быть в формате JSON. Приложение поддерживает максимальный размер лабиринта 50x50.
    • Загруженный лабиринт корректно отображается в графическом окне размером 500x500 пикселей. Толщина стен составляет 2 пикселя, а размер ячеек вычисляется так, чтобы лабиринт полностью заполнял отведённое поле.
  2. Отображение лабиринта

    • Лабиринт отрисовывается в графическом интерфейсе с использованием JavaFX, где каждая ячейка имеет размер, вычисляемый на основе размеров окна и количества ячеек в лабиринте.

Сборка и установка

  • Цели Makefile:
    • all: Сборка всего проекта.
    • install: Установка программы в указанный каталог.
    • uninstall: Удаление установленной программы.
    • clean: Очистка скомпилированных файлов.
    • dvi: Генерация документации.
    • dist: Создание дистрибутива.
    • tests: Запуск тестов.

Часть 2. Генерация идеального лабиринта

Функциональность

  1. Генерация лабиринта

    • Реализован алгоритм Эллера для генерации идеальных лабиринтов. Идеальные лабиринты обеспечивают связность, то есть из любой точки можно попасть в любую другую, и не содержат изолированных областей или петель.
    • Пользователь вводит размерность лабиринта (количество строк и столбцов). Сгенерированный лабиринт сохраняется в формате JSON.
  2. Отображение сгенерированного лабиринта

    • Сгенерированный лабиринт отображается в окне размером 500x500 пикселей согласно требованиям.
  3. Тестирование

    • Модуль генерации идеальных лабиринтов полностью покрыт unit-тестами, которые проверяют корректность выполнения алгоритма и соответствие стандартам.

Часть 3. Решение лабиринта

Функциональность

  1. Поиск решения лабиринта

    • Пользователь может задать начальную и конечную точки для поиска пути.
    • Решение лабиринта отображается линией толщиной 2 пикселя, проходящей через середины ячеек. Цвет линии отличается от цвета стен и поля.
  2. Отображение пути

    • Путь решения лабиринта корректно визуализируется в графическом интерфейсе.
  3. Тестирование

    • Модуль решения лабиринтов покрыт unit-тестами, которые проверяют корректность нахождения и отображения пути.

Часть 4. Генерация пещер

Функциональность

  1. Генерация пещер

    • Реализована генерация пещер с использованием клеточного автомата. Пользователь может выбрать файл в формате JSON, содержащий описание пещеры.
    • Пещера отображается в отдельном окне или вкладке интерфейса. Максимальный размер пещеры — 50x50.
  2. Параметры генерации

    • Пользователь задаёт пределы «рождения» и «смерти» клетки, а также шанс на начальную инициализацию клетки. Пределы могут иметь значения от 0 до 7.
    • Клетки за границей пещеры считаются живыми.
  3. Режимы отображения

    • Пошаговый режим отрисовки итераций алгоритма.
    • Автоматическая отрисовка с заданной частотой обновления итераций.
  4. Тестирование

    • Модуль генерации пещер полностью покрыт unit-тестами, которые проверяют корректность работы алгоритма и визуализации.

Примечания

  • Код проекта соблюдает Google Style Guide для Java.
  • Используется JavaFX для графического интерфейса, который обеспечивает удобное отображение и взаимодействие с пользователем.
  • Приложение прошло тестирование на корректность выполнения всех заявленных функций и соответствие требованиям.

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.