В игру может играть одновременно несколько человек.
- Игрок заходит на страницу и подтверждает готовность участия в раунде игры (одна открытая вкладка - один игрок);
- Случайным образом из очереди игроков текущему подбирается соперник;
- После подбора соперника открывается игровое поле, на котором присутствуют:
- Таймер обратного отсчета для хода;
- Личный счет количество побед/количество сыгранных игр;
- Кнопка прерывания текущей игровой сессии;
- Кнопка выбора действия (камень, ножницы или бумага);
- Игроки должны совершить свой выбор до истечения времени на таймере;
- Игроки совершают свой выбор, подводится итог раунда:
- В случае ничьей раунд разыгрывается заново;
- Если один из игроков не успел сделать выбор за отведенное время, ему засчитывается поражение;
- Если оба игрока не успевают совершить выбор, их игровые сессии завершаются (начинают игру заново);
- В случае однозначной победы одного из игроков счетчики игроков обновляются. Игрокам предоставляется возможность начать игру заново;
- Личный счет игрока должен быть доступен после перезагрузки страницы.
- Frontend реализован с использование React стека;
- Backend реализован на Python;
- Код оформлен согласно PEP8;
- Коммуникация проходит по websocket'у;
- Приложение можно запустить с помощью команды docker-compose up;
- Код должен быть выложен в репозиторий на gitlab.com либо github.com;
- Необходимо наличие тестов, гарантирующих работоспособность кода.
- Перед стартом сессии игрок может ввести свой никнейм;
- После подведения итогов раунда, игрокам предоставляется возможность сыграть новый раунд с тем же соперником;
- В одном раунде может участвовать больше двух игроков (задаётся через конфигурацию приложения);
- Можно посмотреть историю раундов;
- Наличие blacklist-а при подборе соперника.