Когда какой-либо ввод получен на сервер, вам необходимо проверить, основываясь на правилах игры, и выбрать погоду, чтобы выполнить ввод или отбросить его. Как упоминал Эстебан, игровое состояние будет развиваться как конечный автомат, в том числе состояние, в котором игрок в данный момент, как ожидается, получит ход.
Разные части ввода будут разрешены в разных состояниях игры,
Если возможны следующие состояния:
- Игрок 1 Ход
- Игрок 2 хода
- Запрос игрока 1 ожидает рассмотрения
- Запрос игрока 2 ожидает рассмотрения
- Игра окончена
Тогда у вас есть список действий, когда они разрешены, и как они меняют состояние.
Игрок 1 делает ход:
Разрешенные состояния: 1 ход игрока
Новое состояние: ход игрока 2
Отмена запроса игрока 1:
Разрешенные состояния: 1 ход игрока
Новое состояние: запрос игрока 1 находится на рассмотрении
Запрос на отказ игрока 2:
Разрешенные состояния: запрос игрока 1 ожидает рассмотрения
Новое состояние: ход игрока 1
Игрок 2 подал в отставку:
Разрешенные состояния: ВСЕ
Новое состояние: игра окончена
Если игрок делает ход вне очереди, просто сбросьте его.