我在电报机器人中创建了一个游戏,现在我已经达到了“玩”状态。最困难的部分是每回合超时算法(对我来说)。游戏的超时逻辑
这里的故障:
赛首发..得到4名球员
游戏的目标是要回答的问题。问题是: 提及动物的名字。
顺序回答是:玩家C - >玩家B - >播放器d - >播放器 A.
每个玩家有最大5秒至回答(可以是更小)。
好吧,现在,游戏将在3 .. 2 .. 1 ..开始!
玩家C的答案:狗(1秒)
玩家B的答案:猫(1秒)
播放d答案:鹿(1秒)
播放器答案:鸟(2秒)
当它回到播放呃C,它会是5秒,而我的逻辑是 来检查oldTurnId(Player C)=== currentTurnId(播放器 C)。在这种情况下,玩家C会收到通知时间到了,他将被送出,但是玩家C将会第二次回答。
I have this columns on my table : previousTurnId, currentTurnId, nextTurnId
。
但我找不到解决这个问题的方向。
仅供参考,我使用node.js来创建这个游戏,主要部分是我使用setTimeOut很多这个超时每转的逻辑。
任何人有更好的主意来解决这个问题?
非常感谢很多家伙, 所有帮助将不胜感激。
谢谢
AHHHH,让人的想法,我不知道那件事。无论如何,感谢兄弟。稍后再尝试,并会更新结果。谢谢!! – Webster
你的意思是在超时后传递一个参数给'setTimeout'调用的函数吗?你可以只包住'setTimeout'在功能'函数startPlayerTimeout(播放器){返回的setTimeout(函数(){removePlayer(播放器);},5000); }' – cejast
还好,但如果我把它包起来,我不能使用从外部权clearTimeout功能? – Webster