游戏的超时转弯逻辑

时间:2016-11-19 17:34:17

标签: javascript node.js algorithm unity3d telegram-bot

我正在电报机器人中创建一个游戏,现在我已经到了播放"播放"州。最困难的部分是每次转机超时算法(对我而言)。

以下是细分:

  

游戏开始.. 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为这个超时转弯逻辑做了很多。

任何人都有更好的想法来解决这个问题吗?

非常感谢你们, 所有帮助将不胜感激。

由于

1 个答案:

答案 0 :(得分:1)

听起来你想要的是clearTimeout。基本上,如果玩家在接下来的五秒内回答,你会清除超时,否则,你会继续将玩家踢出正常游戏。您可以从setTimeout获取超时ID作为返回值。

我在你的代码上做了一个假设,但这基本上就是这样:

var playerTimeout = setTimeout(function () {
  removePlayer(player);
  startNextPlayersTurn();
}, 5000);

player.on('answer', function() {
  clearTimeout(playerTimeout);
  startNextPlayersTurn();
});