Skip to content

yofumoru/java_game

Repository files navigation

Heroes Task

Описание Проекта

Проект представляет собой пошаговую стратегическую игру, где реализованы алгоритмы генерации армий, симуляции боя, выбора целей для атаки и поиска кратчайшего пути между юнитами.

Реализованные алгоритмы

1. GeneratePreset

  • Генерация пресета армии компьютера.
  • Используется жадный алгоритм с выбором юнитов по эффективности (атака + здоровье) / стоимость.
  • Ограничение: максимум 11 юнитов каждого типа, суммарная стоимость ≤ maxPoints.
  • Уникальные имена юнитов в рамках армии компьютера.
  • Сложность: O(n * m), где n — количество типов юнитов, m — число юнитов в армии.

2. SimulateBattle

  • Симуляция боя между армией игрока и компьютера.
  • Очерёдность ходов — по убыванию атаки, с удалением погибших юнитов перед ходом.
  • Логирование каждой атаки через PrintBattleLog.
  • Сложность: O(n² log n), где n — общее количество юнитов в обеих армиях.

3. SuitableForAttackUnitsFinder

  • Определение юнитов, доступных для атаки.
  • Учёт блокировки слева или справа для юнитов атакующей армии.
  • Сложность: O(n), так как количество рядов фиксировано.

4. UnitTargetPathFinder

  • Поиск кратчайшего пути между атакующим и атакуемым юнитом.
  • Реализован алгоритм 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"

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published