2016-11-19 7 views
0

私はテレグラムボットでゲームを作成していますが、すでに「プレイ中」の状態になっています。最も難しいのは、タイムアウトターンアルゴリズム(私にとって)です。ここでゲームのタイムアウトあたりのロジック

が内訳です:開始

ゲーム..ゲームの目的は、質問に答えることです4人の選手

を手に入れました。質問は次のとおりです。 動物の名前を挙げてください。答えるため

順序である:プレーヤーC - >プレーヤーB - >プレーヤーD - >プレーヤー A.

は、各プレイヤーは(少なくすることができる)答えるために最大5秒を有します。

さてさて、ゲームは3 .. 2 .. 1で始まります。GO !!

プレーヤーC答え:(1秒)

プレーヤーBの答え:(1秒)

プレーヤーD答え:鹿(1秒)

プレーヤー回答:bird(2秒)

そして、再生に戻るとそれは5秒で、私のロジックは で、oldTurnId(Player C)=== currentTurnId(Player C)かどうかをチェックします。この場合、プレイヤーCは、時間切れであることを通知され、彼は退場されるが、 プレイヤーCは2回目に答えようとしている。

I have this columns on my table : previousTurnId, currentTurnId, nextTurnId

しかし、私はこの問題に取り組むための方向を見つけることができません。

参考までに、node.jsを使用してこのゲームを作成していますが、主要な部分は、このタイムアウトあたりのロジックのためにsetTimeOutをたくさん使用しています。

誰もがこの問題に取り組んでいますか?

ありがとうたくさんの人、 すべての援助をいただければ幸いです。何がしたいことはclearTimeoutあるよう

おかげ

答えて

1

が鳴ります。基本的には、プレイヤーが次の5秒以内に応答するとタイムアウトをクリアします。そうでなければ、プレイヤーを通常どおりゲームから蹴飛ばすことができます。戻り値としてタイムアウトIDをsetTimeoutから取得できます。

私はあなたのコード上の仮定を作ってるんだが、これは基本的にそれが行くだろうか、次のようになります。

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

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

えーえ、明るいアイデアのいくつか、私もそのことを知ってはいけません。とにかく、ありがとう。後で試してみて、結果を更新します。ありがとう!! – Webster

+1

タイムアウト後に 'setTimeout'によって呼び出された関数にパラメータを渡すことを意味しますか? 'setTimeout'を' function startPlayerTimeout(player){戻り値setTimeout(function(){removePlayer(player);};で単にラップすることができます。 } ' – cejast

+0

大丈夫ですが、私はそれをラップすると、私は右からclearTimeout関数を使用することはできません? – Webster

関連する問題