Проект представляет собой пошаговую стратегическую игру, где реализованы алгоритмы генерации армий, симуляции боя, выбора целей для атаки и поиска кратчайшего пути между юнитами.
- Генерация пресета армии компьютера.
- Используется жадный алгоритм с выбором юнитов по эффективности
(атака + здоровье) / стоимость. - Ограничение: максимум 11 юнитов каждого типа, суммарная стоимость ≤
maxPoints. - Уникальные имена юнитов в рамках армии компьютера.
- Сложность: O(n * m), где n — количество типов юнитов, m — число юнитов в армии.
- Симуляция боя между армией игрока и компьютера.
- Очерёдность ходов — по убыванию атаки, с удалением погибших юнитов перед ходом.
- Логирование каждой атаки через PrintBattleLog.
- Сложность: O(n² log n), где n — общее количество юнитов в обеих армиях.
- Определение юнитов, доступных для атаки.
- Учёт блокировки слева или справа для юнитов атакующей армии.
- Сложность: O(n), так как количество рядов фиксировано.
- Поиск кратчайшего пути между атакующим и атакуемым юнитом.
- Реализован алгоритм A* с учётом препятствий (занятые клетки).
- Поддержка диагональных перемещений.
- Сложность: O(WH * log(WH)), где W=27, H=21.
- Gradle используется для сборки.
- JAR-файл создаётся командой:
./gradlew :heroes_student_task:buildJar- Итоговый JAR находится в build/libs/heroes_task-1.0.0-all.jar.
- Игра запускается командой:
java -jar "Heroes Battle-1.0.0.jar"