2017-02-07 5 views
-1

私がしようとしているのは、推測の数に基づいて数を正しく推測したときに、ユーザーが制限なしに任意の数を入力できる最終的な段階になる簡単な推測ゲームです。しかし、私のコードでは、数値を入力してボタンを複数回押すと、数値が変更されていなくてもヒントが「高」から「下」に変化しても、数字が正しく推測されたときに表示されるメッセージは表示します。ここで私のコードは、私は初心者ですので、コード内のエラーとなるようにバインドされており、どんな助けもありがとうございます。Javascriptのゲームを推測する

<fieldset> 
    <input type="number" id="guess" /> 
    <button onClick="checknum();">Check Number</button> 
</fieldset> 

<fieldset> 
    <p>Your current status:</p> 
    <output id="status_output">You have yet to guess anything.</output> 
</fieldset> 

<script type="text/javascript"> 

    function checknum(){ 

     var randomNumber = Math.floor((Math.random() * 100) + 1); 
     var guessNumber = document.getElementById("guess").value; 
     //var guessNumber = parseInt(guess.value); 
     var statusOutput = document.getElementById('status_output'); 
     var counter = 0;  
     var isguessed = false; 

     do { 
      counter = (counter + 1) 
      if (guessNumber < randomNumber) { 
       statusOutput.value = ("Higher"); 
      } 
      else if (guessNumber > randomNumber) { 
       statusOutput.value = ("Lower"); 
      } 
      else if (guessNumber = randomNumber) { 
       set (isguessed = true()); 
       statusOutput.value = ("Correct" + mark()); 
      } 
     } 
     while (isguessed = false); 
    } 

    function mark(){ 
     if (counter < 10){ 
      statusOutput.value("Excellent"); 
     } 
     else if (counter > 10 && counter <20){ 
      statusOutput.value("Okay"); 
     } 
     else 
      statusOutput.value("Needs Practice"); 
    } 

</script> 
+0

'しばらく(isguessed =偽)' 'されるべきである(trueまたはfalseのブール式の戻り値:偽

isguessed === falseにisguessed variblesを割り当てisguessed === false); '(3は1の代わりに等しくなります)、最後のelse if文と同じ問題です。 – Keatinge

+0

両方の関数で** statusOutput **を使用する場合は、両方の関数の外で変数を宣言する必要があります。それ以外の場合は、 'mark()'にアクセスできません。 javacript closuresを参照してください。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures – dommmm

+0

また、** statusOutput **に値を割り当てる2つの方法を使用しています。 'statusOutput.value =(" Higher " ); and 'statusOutput.value(" Excellent ");'。最初の方法は正しいです。 2番目の方法は値を割り当てる 'jquery'スタイルで、バニラのjavascriptでは動作しません。また、最初のメソッドで文字列を囲む必要はありません。これは十分です。 'statusOutput.value =" Higher ";' – dommmm

答えて

0

あなたの間では、isguessedという名前の変数にfalseを割り当てています。 代わりにwhile (isguessed === false)を実行します。偽

isguessed = falseに設定されているisguessed場合、これはチェックします: