我正在节点&中创建一个绘图/猜测游戏插座。 简单地说: 我有一个 Room ,游戏(扩展Room)和一个 Round (每场10个)。 每轮用户被指定为抽屉,猜测者有 45秒来猜测这个词。
首次猜测计时器是否高于20秒时,计时器 减少 至20秒。
我不确定,但这就是我的开始:
课程回合:
function Round(id, game){
var ROUNDTIME = 45,
timer = new Date();
this.id = id;
this.game = game;
this.endTime = timer.setSeconds(timer.getSeconds() + ROUNDTIME);
...
}
课程游戏:
function Game(){
this.MAX_ROUNDS = 10;
this.rounds = [];
this.currentRound = null;
...
}
Game.prototype.start = function(){
this.nextRound;
}
Game.prototype.nextRound = function(){
if(this.rounds.length <= this.MAX_ROUNDS){
this.currentRound = new Round(this.rounds.length + 1, this);
...
} else {
this.endGame();
}
}
Game.prototype.endGame = function(){
...
}
之后我有一个Round函数,每次提交答案/消息时都会检查答案。在第一次回答时,我将endTime减少到20秒。
所以有2个问题:
答案 0 :(得分:1)
function Round(id, game,loseCallbackFn){
var ROUNDTIME = 45, startTime = new Date();
this.id = id;
this.game = game;
this.endTime = startTime.getTime()+45*1000;
this.timerId = setTimeout(loseCallbackFn,45*1000);
...
}
...
Round.onWrongGuess(){
if((this.endTime-(new Date()).getTime())>20*1000) {// he has more than 20s left
clearTimeout(this.timerId);
this.timerId = setTimeout(loseCallbackFn,20*1000);
...
}else{
loseCallbackFn();
}
}
...