Нужен сервак, к которому будут подключаться боты для игры в крестики-нолики на поле 19х19.
- В сервисе mediator создается игровая сессия через Rest вызов с данными сессии
- Mediator ждет подключения ботов путем вызова ими Rest endpoint'а в медиаторе
- Когда оба бота зарегистрировались, начинается игра
- Медиатор поочередно вызывает ботов по REST API и получает от них ответ с ходом
- В одном из полей json запроса медиатор отправляет все состояние поля, свернув поле 19х19 в строку построчно
- Фигуры:
- Пустое поле – _
- Крестик – x
- Нолик – o
- Зачеркнутый крестик – X
- Зачеркнутый нолик – O
- Зачекнутые фигуры отображаются тогда, когда они составляют победную линию
- В теле ответа также должен получить новое состояние поля, также свернутого в строку
- Необходимо выполнить проверки корректности хода
- Игра длится, пока один из ботов не соберет свои фигуры в победную линию – линия из 5 одинаковых фигур по вертикали, горизонтали или диагонали
- После окончания игры медиатор вызывает ботов по REST API, сообщая о победе или проигрыше
- Заканчивается игровая сессия
- Параллельно может выполняться несколько сессий
- Получить все текущие и законченные игровые сессии
- Получить текущее состояние сессии по id
- Получить состояние сессии по id и номеру шага
- Прописать REST API контракт для медиатора и бота
- Продумать corner cases и их решения
- Предоставить готовый сервис с использованием JVM + Spring стэка и подробной инструкцией по запуску
Функции, которые желательно сделать, но только после полной реализации
- Подсчет очков – придумать, за какие действия и сколько давать очков. Например, за победу +100 очков, за проигрыш -50 очков, за неправильный ход -2 очка, за быстрый ход (например за 0.5 секунды) +3 очка и т.д.
- WEB UI приложение для отображения игровых сессий, которое общается с сервисом медиатором
- Дополнительные предложения приветствуются