[英]Timeout-per-turn logic for a game
我正在电报bot中创建游戏,现在我已经达到“正在播放”状态。 最困难的部分是每转超时算法(对我而言)。
细目如下:
游戏开始..有4位玩家
游戏的目的是回答问题。 问题是: 提到动物的名字。
回答的顺序是:玩家C->玩家B->玩家D->玩家A。
每个玩家最多有5秒的回答时间(可能更少)。
好的,游戏将在3 .. 2 .. 1 ...开始!
玩家C回答: 狗 (1秒)
玩家B回答: 猫 (1秒)
玩家D回答: 鹿 (1秒)
玩家A回答: 鸟 (2秒)
回到播放器C时,将是5秒钟,我的逻辑是检查oldTurnId(播放器C)是否=== currentTurnId(播放器C)。 在这种情况下,玩家C将收到时间已到的通知,他将被送走,但玩家C将第二次应答。
I have this columns on my table : previousTurnId, currentTurnId, nextTurnId
。
但是我找不到解决这个问题的任何方向。
仅供参考,我正在使用node.js来创建此游戏,而主要部分是我为此轮转超时逻辑大量使用了setTimeOut。
任何人都有解决这个问题的更好的主意吗?
非常感谢大家,所有帮助将不胜感激。
谢谢
听起来您想要的是clearTimeout 。 基本上,如果玩家在接下来的五秒钟内回答,您将清除超时,否则,您将玩家按正常情况踢出游戏。 您可以从setTimeout
获取超时ID作为返回值。
我正在对您的代码做一个假设,但是基本上就是这样:
var playerTimeout = setTimeout(function () {
removePlayer(player);
startNextPlayersTurn();
}, 5000);
player.on('answer', function() {
clearTimeout(playerTimeout);
startNextPlayersTurn();
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.