我正在电报机器人中创建一个游戏,现在我已经到了播放"播放"州。最困难的部分是每次转机超时算法(对我而言)。
以下是细分:
游戏开始.. 4名玩家
游戏目标是回答这个问题。问题是 : 提及动物名称。
回答的顺序是:玩家C - >玩家B - >玩家D - >播放机 甲
每个玩家最多可以回答5秒(可以更少)。
现在好了,比赛将在3 .. 2 .. 1开始!GO !!
玩家C回答:狗(1秒)
玩家B回答:猫(1秒)
球员D回答:鹿(1秒)
玩家答案:鸟(2秒)
当它回到玩家C时,它将是5秒,我的逻辑是 检查oldTurnId(播放器C)=== currentTurnId(播放器 C)。在这种情况下,玩家C将收到时间已经通知,并且他将被发送,但是 球员C即将第二次回答。
I have this columns on my table : previousTurnId, currentTurnId, nextTurnId
。
但我无法找到解决这个问题的方向。
仅供参考,我使用node.js来创建这个游戏,主要部分是我使用setTimeOut为这个超时转弯逻辑做了很多。
任何人都有更好的想法来解决这个问题吗?
非常感谢你们, 所有帮助将不胜感激。
由于
答案 0 :(得分:1)
听起来你想要的是clearTimeout。基本上,如果玩家在接下来的五秒内回答,你会清除超时,否则,你会继续将玩家踢出正常游戏。您可以从setTimeout
获取超时ID作为返回值。
我在你的代码上做了一个假设,但这基本上就是这样:
var playerTimeout = setTimeout(function () {
removePlayer(player);
startNextPlayersTurn();
}, 5000);
player.on('answer', function() {
clearTimeout(playerTimeout);
startNextPlayersTurn();
});