Помощь в написании боя для онлайн игры

303
.
vermas, полторы минуты дается на каждый раунд. Если игроки сходили быстрее этого времени, то сразу после хода последнего игрока начинается следующий раунд.
.
точка невозврата
а если один ходил а другой нет, когда начинается второй раунд?
.
ну после того как пройдут полторы минуты. они для этого и нужны, в общем
.
vermas
точка невозврата
Ясно. Ну пиши системное время для старта system_time, и поля step1, step2. Первый пошел за отведённое время, пиши step1++ и ставь ему блокировку хода до конца времени, второй пошел - системное время перезапиши, а step1 обнули, и по новой. Если первый пошел второй раз, а второй стоИт, еще раз step1++. Ждем еще, если второй не ходит в отведённое время 180сек, при третьем ходе засчитываем поражение (условие step1==2, step2==0, time()>system_time+180).
.
точка невозврата
раунд можно завершить и переписать время при условии !empty(step1), или !empty(step2), смотря кто ходит
.
vermas, а если второй раз не сходил, второй сходил, а третий раз снова нет
.
точка невозврата
No-Tactic, тогда первый сделает больше ходов. Или ты хочешь засчитать поражение за 2 несделанных хода по итогу всего боя?
.
vermas, два пропуска хода = вылет из боя
.
точка невозврата
ну тогда надо на стороне логировать ходы, и при разнице в 2хода засчитать поражение. Знаю на словах всё сложно, но поняв логику можно легко написать.
.
Может так?
В бд поля: step, time, fail
кто-то сходил. если поле степ = 0, тогда пишем туда его ид. если не равно 0, тогда обновляем время и раунд, обнуляем степ. если в поле степ твой ид, ты не можешь идти. если время кончилось, берем из бд ид того игрока, который не в поле степ (если степ = 0, то обоих) и пишем в фейл что-то типа {'id':1}
если значение больше единицы, бой окончен
Всего: 27