豚のゲームを作っています。ゲーム全体とコードはこちら: http://cisp362.info/johng/CISP362_Pig/Pig.html
私の問題は、コンピューター プレーヤーのプレイが速すぎて、列の色の変化が見えず、すべてのロールが発生したように見えることです。すぐに。setInterval と setTimeout が速度を落とすために使用できる唯一のものであることはわかっていますが、変数の結果に依存するループ内にあるため、コードを再配置して機能させる方法がわかりませんthisRoll
。thisRoll
setTimeout を使用してみましたが、残りのコードが実行され続け、変更されるのを待たないため、予測できない結果が生じますrollDie()
. do while ループの代わりに setInterval を使用してみましたが、条件ステートメントを組み込む方法や、後でクリーンアップ コードを実行する方法がわかりません。私はそれをもっと遅くしたいだけです。たぶん、私はこれをあまりにも長い間見つめていました。
function takeNPCTurn(){
do{
thisRoll = rollDie();
if(thisRoll===1){
document.getElementById("NPCRolls").innerHTML = "------------------------------------<br>You Rolled a 1 and lost your turn!<br>" + document.getElementById("NPCRolls").innerHTML
localStorage.whosTurnIsIt = "Player";
changeColumnColor('col1','lime');
changeColumnColor('col2','transparent');
runningTotal=0;
return;
}else{
runningTotal += thisRoll;
document.getElementById("NPCRolls").innerHTML = "You Rolled a " + thisRoll + ", totalling " + runningTotal+"<br>" + document.getElementById("NPCRolls").innerHTML;
}
}while(runningTotal < 20 && (parseInt(document.getElementById('NPCScore').textContent) + runningTotal) < 100);
//finish up NPC turn and switch back to player
document.getElementById('NPCScore').textContent = parseInt(document.getElementById('NPCScore').textContent) + runningTotal;
document.getElementById("NPCRolls").innerHTML = "------------------------------------<br>You held at " + runningTotal + ", bringing your score to " + document.getElementById('NPCScore').textContent + "<br>" + document.getElementById("NPCRolls").innerHTML;
runningTotal=0;
localStorage.whosTurnIsIt = "Player";
changeColumnColor('col1','lime');
changeColumnColor('col2','transparent');
if(parseInt(document.getElementById("NPCScore").textContent) >= 100){alert (losingMessage);}
}