Skip to content

Instantly share code, notes, and snippets.

@nonamenix
Last active April 16, 2020 12:46
Show Gist options
  • Save nonamenix/c72fd1516bfd33b2b409c67e970ceb2e to your computer and use it in GitHub Desktop.
Save nonamenix/c72fd1516bfd33b2b409c67e970ceb2e to your computer and use it in GitHub Desktop.
Тестовое задание Камень-Ножницы-Бумага Fullstack Developer

Камень-ножницы-бумага с мультиплеером

В игру может играть одновременно несколько человек.

User story

  • Игрок заходит на страницу и подтверждает готовность участия в раунде игры (одна открытая вкладка - один игрок);
  • Случайным образом из очереди игроков текущему подбирается соперник;
  • После подбора соперника открывается игровое поле, на котором присутствуют:
    • Таймер обратного отсчета для хода;
    • Личный счет количество побед/количество сыгранных игр;
    • Кнопка прерывания текущей игровой сессии;
    • Кнопка выбора действия (камень, ножницы или бумага);
  • Игроки должны совершить свой выбор до истечения времени на таймере;
  • Игроки совершают свой выбор, подводится итог раунда:
    • В случае ничьей раунд разыгрывается заново;
    • Если один из игроков не успел сделать выбор за отведенное время, ему засчитывается поражение;
    • Если оба игрока не успевают совершить выбор, их игровые сессии завершаются (начинают игру заново);
  • В случае однозначной победы одного из игроков счетчики игроков обновляются. Игрокам предоставляется возможность начать игру заново;
  • Личный счет игрока должен быть доступен после перезагрузки страницы.

Требования к реализации

  • Frontend реализован с использование React стека;
  • Backend реализован на Python;
  • Код оформлен согласно PEP8;
  • Коммуникация проходит по websocket'у;
  • Приложение можно запустить с помощью команды docker-compose up;
  • Код должен быть выложен в репозиторий на gitlab.com либо github.com;
  • Необходимо наличие тестов, гарантирующих работоспособность кода.

User story со звездочкой

  • Перед стартом сессии игрок может ввести свой никнейм;
  • После подведения итогов раунда, игрокам предоставляется возможность сыграть новый раунд с тем же соперником;
  • В одном раунде может участвовать больше двух игроков (задаётся через конфигурацию приложения);
  • Можно посмотреть историю раундов;
  • Наличие blacklist-а при подборе соперника.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment