Skip to content

Commit

Permalink
Add tasks definitions
Browse files Browse the repository at this point in the history
  • Loading branch information
nypi committed Dec 1, 2021
1 parent d6bfcb9 commit 746898d
Showing 1 changed file with 68 additions and 0 deletions.
68 changes: 68 additions & 0 deletions TASKS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# Задачи

Всем задачам мы назначили сложность:
- `A` сложно
- `B` очень сложно
- `C` крайне сложно

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

Мы ожидаем, что вы примените в процессе работы над проектом знания, которые получили в рамках курса и что код будет структурированным: отдельные модули и алгоритмы вынесены в классы/пакеты.

## Бот `A`

Задача бота - шагать по карте. Есть пример реализации starter-bot, с которого начинаете разработку. Вам предстоит реализовать и комбинировать следующие функции для принятия решения о ходе.

- Исследование карты. Бот должен стремиться собрать информацию о карте и посетить участки, которые он еще “не видел”.

- Обход препятствий. Алгоритм обхода может быть как простым, например, поворачивать в случайном направлении при достижении заблокированной ячейки, так и более сложным (A* или поиск в ширину).

- Сбор монет. При принятии решения, к какой монете должен идти бот, могут учитываться разные факторы, например, расстояние до нее, наличие рядом с ней других ботов и других монет.

- (опционально) DEATMATCH: убегать от опасных ботов и охотиться на слабых.

## Генератор карт `B`

Генератор на вход принимает параметры карты и формирует на выходе один или несколько файлов карт в описанном формате. Параметры: ширина, высота, количество ботов-участников, количество препятствий на карте: низкое/среднее/высокое.

- Алгоритм генерации. Необходимо выбрать и реализовать один или несколько алгоритмов задания препятствий. лабиринт, симуляция реального ландшафта, свой вариант.

- Подбор подходящих параметров view/mining/attack радиусов. Для указанного размера и алгоритма генерации подобрать способ вычисления перечисленных параметров для каждой карты.

- Автоматический выбор стартовых позиций ботов на карте.

- (опционально) Симметричность карты. Обеспечить симметричность карт для равенства начальных условий для игроков.

## Консольный редактор карт `A`

Редактор на вход принимает путь к файлу карты, выводит ее на экран, позволяет изменять через команды пользователя и сохранять результат.

- Загрузка и отображение карты.

- Редактирование: изменение размеров, заблокированных ячеек, начальных позиций ботов.

- Редактирование параметров карты: view/mining/attack радиусов.

- (опционально) Вместо консольного реализовать графический редактор на JavaFX (с этим пунктом сложность существенно выше, плюс придется самостоятельно разобраться с JavaFX)

## Графический визуализатор матчей `C`

Визуализатор (или плеер) на вход получает путь к файлу лога матча и проигрывает анимацию матча по раундам.

- Отображение карты, объектов на ней и событий матча (появление/сбор монет, атаки, перемещения ботов).

- Вывод названий и текущих весов ботов (количества собранных монет).

- (опционально) Перемотка (слайдер) и возможность поставить анимацию на паузу.

## Статистика и рейтинг `C`

Приложение анализирует накопленные логи матчей и формирует отчет с различными статистическими параметрами и рейтингом ботов.

- Список матчей с названиями ботов участников и результатами.

- Таблица общего рейтинга ботов.

- Статистика с метриками по каждому боту: например, средний процент исследования карты, процент побед в атаках, скорость/эффективность сбора монет и т.п.

- (опционально) Отдельные рейтинг ботов по каждой карте.

0 comments on commit 746898d

Please sign in to comment.