https://xo-monster.herokuapp.com/
To start a game:
- Register and log in
- Press the "start" button (check out game settings if you wish)
- Share game url with other player
Тема задания - игра крестики-нолики на доске 10x10. Играют два игрока, побеждает тот, кто первым выстроит в ряд 5 клеток по горизонтали, вертикали или диагонали. Задание нужно выполнить на Ruby on Rails, выбор фронтендового фреймворка (или его отсутствия) остаётся за вами.
Нужно сделать и задеплоить в интернете приложение, через которое реально можно будет сыграть друг против друга. В качестве самого простого и бесплатного решения можно хостить игру прямо со своего компьютера через https://ngrok.com/
API должно предоставлять необходимые методы для
- добавления игроков
- старта партии между двумя игроками получения статуса текущей партии выполнения ходов
- всего, что ещё может потребоваться
Фронтенд должен собственно позволять сыграть партию
- например, первый игрок начинает партию и передаёт второму ссылку на неё
- при переходе второго игрока по ссылке он присоединяется к партии и игра начинается (но вы можете придумать и другую механику старта партии)
- первым ходит игрок, начавший партию
- во время игры оба игрока видят доску с её текущим состоянием и могут делать ход в свою очередь
- в случае, если ход игрока стал победным, эта информация выводится в интерфейсе и игра прекращается
- в случае, если на доске ни для одного игрока уже точно не осталось возможности победить игра тоже прекращается в статусе ничьи
Перечисленные ниже пункты не обязательны для MVP, но хорошо бы заложить архитектуру, не мешающую дальнейшему развитию проекта
- играть могут много пользователей сразу, одновременно могут идти тысячи партий
- было бы хорошо иметь возможность играть не только против живого игрока, но и против AI
- стоит хранить данные так, чтобы можно было воспроизвести интересную партию ход за ходом
- интересно было бы посмотреть рейтинг лучших игроков и другую статистику
- аккаунт игрока должен быть защищён от использования другими людьми
- было бы хорошо использовать API не только для веб-версии, но и для мобильного приложения
- должен быть более удобный интерфейс старта партии, чем передача ссылки
- было бы интересно иметь возможность играть не только на поле 10x10, но и на других размерах
- было бы удобно добавить максимальное время партии, после истечения которого партия переходит в состояние ничьи, либо заканчивается поражением игрока, который слишком долго не делал ход
- пригодился бы чат, работающий в рамках партии
- после завершения партии удобна была бы возможность сразу начать новую партию с теми же игроками
- у интересных игр могут быть не только участники, но и наблюдатели без возможности хода
- для каждого игрока было бы интересно посмотреть историю его партий