Небольшой проект реализующий игру камень ножницы бумага на стеке Spring, Spring JDBC, MySQL, KryoNet.
Состоит из двух частей, сервер и клиент
Для запуска сервера достаточно всего лишь собрать проект командой gradlew build
, а затем запустить файл server.bat или
server.sh в папке docker. Он просто запустит docker-compose с базой данных и сервером
Чтобы запустить клиент, достаточно запустить файл client.sh
Когда игрок не подключен к серверу, он находится на начальных этапах SignUp/SignIn одновременно. В зависимости от того, какую команду он введёт, будет либо произведена регистрация, либо авторизация. Если игрок регистрируется, то после этого он попадает обратно на начальный этап
Далее он может авторизоваться в игре по данным, которые он использовал для регистрации. В момент регистрации должно устанавливаться соединение с игровым сервером по протоколу TCP. После того, как запрос на регистрацию был обработан клиент должен быть отключен от сервера. Был ли запрос успешным или нет - это не важно. В момент авторизации, если учётные данные были верными, игрок либо попадает на Этап Menu, либо на один из этапов Game Step. Это зависит от того, была ли у него уже запущена какая-либо игра.
На этом этапе можно либо отключиться от сервера, воспользовавшись командой logout, либо начать новую игру через команду start. При вводе команды start игрок попадает на этап Game Step 1.
На данных этапах происходит сама игра. Игрок первым выбирает какой из предметов он будет использовать. Это делается через ввод команд rock, paper, scissors. В ответ сервер отправляет свой вариант и объявляет о том, кто выиграл на данном этапе - игрок или сервер. Можно использовать команду logout, чтобы отключиться от сервера. На каждый этап даётся по 30 секунд времени. Если игрок за это время не выбрал свой предмет, то он проигрывает и переходит на следующий этап. Сервер предупреждает об оставшемся времени в те моменты, когда остаётся 30, 15, 5, 3 и 1 секунда до конца хода. Так же можно запросить предупреждение командой timer. Если игрок отключается каким-либо образом от сервера в момент нахождения на одном из этапов Game Step, то таймер перестаёт тикать. При повторном входе в игру, таймер продолжает отсчёт. После завершения 3 раунда, сервер подводит итоги, и через 5 секунд выкидывает игрока обратно в меню. Во время этого отсчёта он может разлогиниться командой logout
- Signup - регистрация игрока
- Формат команды:
signup=<login>=<password>
- Формат команды:
- Signin - авторизация игрока
- Формат команды:
signin=<login>=<password>
- Формат команды:
- Start - начать игру
- Формат команды:
start
- Формат команды:
- Logout - отключиться от сервера
- Формат команды:
logout
- Формат команды:
- Timer - Узнать сколько времени осталось до конца хода
- Формат команды:
timer
- Формат команды:
- Rock - камень
- Формат команды:
rock
- Формат команды:
- Paper - бумага
- Формат команды:
paper
- Формат команды:
- Scissors - ножницы
- Формат команды:
scissors
- Формат команды: