繁体   English   中英

游戏的每转超时逻辑

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM