2016-05-12 17 views
1

私は、ユーザーが1〜999の間の数字を推測しようとする10のJavascript推測ゲームを作成しようとしています。私は、数字を検証し、ループを使い、ユーザが試合を見ているときや、推測を使い果たしたときに警報を出さなければならない。テストのために番号45を使用する。それぞれの推測には、innerHTMLを使用して番号を付けて表示する必要があります。問題は、カウンタがゼロでスタックしていることです。私が逃しているものがわからない!以下のコード:Javascript Guessing Game - カウンターが動作しない

function myFunction() { 
    var userInput = document.getElementById("input").value; 
    var randomNum = 45; 
    // test for valid input number from 1 to 999 
    if (userInput < 0 || userInput > 999) { 
    alert("Your number must be from 1 to 999"); 
    } else { 
    alert("Input OK"); 
    } 
    var counter = 0; 
    while (counter < 10) { 
    counter++; 
    if (userInput == randomNum) { 
     alert("You win!"); 
    } 
    if (userInput > randomNum) { 
     document.getElementById("loopResults").innerHTML += counter + "." + " Your answer: " + userInput + "." + " Guess lower! < br/> "; 
     alert("You have " + counter + " guesses left."); 
    } else if (userInput < randomNum) { 
     document.getElementById("loopResults").innerHTML += counter + "." + " Your answer: " + userInput + "." + "Guess higher! < br/> "; 
     alert("You have " + counter + " guesses left."); 
    } 
    break; 
    } // end while loop 
} // end function myFunction() 
+5

'break 'は' while'ループを終了します。 __always__あなたはどこに置くか考えなければなりません/ –

+0

最後にelseに改行を入れてください。 – sniels

+0

ブレークは最大の問題ではなく、カウンター変数は機能スコープです。 –

答えて

3

このライン

var counter = 0; 

リセットが0に関数が呼び出されるたびに対抗します。 1つの修正は、このようにグローバル変数として設定することです。

counter = 0; // note no var keyword 
function myFunction() {...} 

次に、関数のカウンタを呼び出すと、グローバル変数が参照されます。

さらに、whileループは理にかなっていません。 counter> = 10かどうかを調べるには、単純なif文でなければなりません。カウンタ変数が正しく設定された後、このロジックを考えてみてください。

+0

ありがとう!これにより、カウンタが正しい方向に動くようになりました。 –

+0

答えとしてマークしてください:)私の担当者をビルドしてください。 –

1

whileループでロジックを実行します。

各ループで増分するカウンタ変数は、すでにループを終了させます。 whileループの最後に「休憩」を設定

あなたが実際にそれを終了したいときは、最初に

+0

ありがとう!あなたのための質問...私は最後に休憩を追加しました。そうしないと、すべてのアラートが次々とポーズをとり、ポーズを取りやめてもう一度推測します。もう一度やり直す方法を理解していない? –

+0

条件をもう一度確認できるように、ユーザーが推測を入力する別の機会を埋め込む必要があります。 あなたは推測が残っている間に、正しいかどうかを確認してください。残っている推測数を教えてください。もう一度数字を入力するように促してください。 –

+0

代わりにwhileループのないゲームロジック。彼らは推測を入力した後、カウンタ変数とインクリメントをチェックします。これが役に立つなら、 –

1

のみbreakあなたのループ後に終了することが保証されていることを意味します。あなたのケースでは、おそらくユーザーが数を推測したか、試しにいなくなったときでしょう。

breakコマンドは、ループをただちに終了します。詳細はthe MDN docsをご覧ください!

関連する問題