2016-11-29 4 views
0

私のコードでは、すべてのプレイヤーに一度にカードを渡してから、もう一度やり直す間隔があります。私は、各プレイヤーに3枚のカードを1枚ずつ、間隔をあけて1枚ずつ扱いたいと思っています。forループJavascriptの間隔を設定する

function dealPlayers() { 

    var counter = 1; 

    var timer = setInterval(function() { 

    for (var i = 0; i < gameDB.plySeatArray.length; i++) { 

     gameDB.plySeatArray[i].addCard(getNextCard(), false); 

    }; 

    if (counter >= 3) { 
     clearInterval(timer); 
    } 

    counter++; 

    }, 1000); 

} 
+2

何が問題なのですか? – Dekel

+1

FWIW、ここで論理とプレゼンテーションを分けてください。論理はすぐに起こるはずです。それがUIにどのように表示されるかは、これとは独立しているべきです。 – deceze

+0

問題はタイムアウトにあります。それに応じてプレーヤーを扱いますが、各カードを扱う前に待つことはありません。 – Dayo

答えて

1

あなたは本当に間隔を必要としません。あなたは、次のプレイヤーを常に待ち受けて取引する再帰的な機能が必要です。

function dealCard(playerIndex) { 
    gameDB.plySeatArray[playerIndex].addCard(getNextCard(), false); 
    if ((playerIndex + 1) == gameDB.plySeatArray.length) { 
     //end of the queue, reset to the first player 
     playerIndex = 0; 
    } else { 
     playerIndex++; 
    } 

    //Check the next playerIndex's card 
    if (/*playerIndex doesnt have 3 cards, deal him in in a second*/) { 
     setTimeout(function() { 
      dealCard(playerIndex); 
     }, 1000); 
    } 
} 

dealCard(0); 
+0

ありがとうtymeJV。予期せぬトークンを==で取得しています。 "もしプレイヤーが3枚のカードを持っていなければ、2番目に* /){" – Dayo

+0

"2人から4人のプレイヤーがいるかもしれない。 – Dayo

+0

ありがとうございます。それはうまくいった。 – Dayo

関連する問題