2017-05-22 22 views
0

スーパーで新しいjavascript。私は霊感の推測ゲームを作ろうとしている。 onkeyup関数以外はすべてここで動作します。コンソールログを開いて文字を入力すると、userGuess変数が定義されていないことがわかります。 onkeyup関数と一致するようにuserGuess変数を定義するにはどうすればよいですか?onkeyup変数を定義するJavaScriptの推測ゲーム

ありがとう:

//Available choices 
var letterChoices = ['a', 'b', 'c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'] 

//score 
var wins = 0; 
var losses = 0; 
var guesses = 9; 
var guessesLeft = 9; 
var guessedLetters = []; 
var letterToGuess = null; 

//computer randomly chooses a letter 

var computerGuess = letterChoices [Math.floor(Math.random()*letterChoices.length)]; 

//guesses left function 

var updateGuessesLeft = function() { 
    document.querySelector('#guessLeft').innerHTML = "Guesses Left: " + guessesLeft; 
}; 

//letter to guess function 

var updateletterToGuess = function(){ 
    this.letterToGuess = this.letterChoices[Math.floor(Math.random() * this.letterChoices.length)]; 
}; 

var updateGuessesSoFar = function(){ 
    document.querySelector('#let').innerHTML = "Your guesses so far: " + guessedLetters.join(', '); 
}; 

//reset 

var reset = function(){ 
    totalGuesses = 9; 
    guessesLeft = 9; 
    guessedLetters = []; 

    updateletterToGuess(); 
    updateGuessesSoFar(); 
    updateGuessesLeft(); 

}; 

updateGuessesLeft(); 
updateletterToGuess(); 

//user input key 

document.onkeyup = function(event) { 
    guessesLeft--; 
    var userGuess; 
    console.log(userGuess) 

    guessedLetters.push(userGuess); 
    updateGuessesLeft(); 
    updateGuessesSoFar(); 

     if (guessesLeft > 0){ 
      if (userGuess === letterToGuess){ 
       wins++; 
       document.querySelector('#wins').innerHTML = 'Wins: ' + wins; 
       alert("How did you know!?!"); 
       reset(); 
      } 
     } else if (guessesLeft == 0){ 
      losses++; 
      document.querySelector('#losses').innerHTML = 'Losses: ' + losses; 
      alert("Sorry, you're not a psychic!"); 

      reset(); 
     } 
} 
+0

あなたは 'var userGuess;を実行しています。 console.log(userGuess); 'したがって、変数 'userGuess'は' undefined'です。あなたは 'console.log'を使ってユーザー入力をしようとしていますか?参照[_What is console.log_](http://stackoverflow.com/q/4539253/2950032) –

+0

私はユーザー入力が登録されていたかどうかをテストするconsole.logを行っていました。 –

+0

私はuserGuessをguessedLettersに表示される文字列にしようとしています。 userGuessはonkeyupイベントでなければなりません。 –

答えて

0

変数userGuessそれは単に宣言されているためundefinedです。この変数に代入演算はありません。私は作業サンプルを見て、ブラウザでそれを修正し、期待どおりに動作しているようです。ここで

var userGuess = event.key; 

は、私はあなたので、あなたのコード

で少し遊んでまし出力され、次のように私がやった唯一の変化は、押されたキーにuserGuessを割り当てるにしましたあなたが許可したい文字のリストを持っている場合は、最初に以下のコードを追加して、許可された文字以外が考慮されないようにしてください。

if (letterChoices.indexOf(userGuess) === -1) return; 
+0

ありがとう、ありがとう! –

+0

これがあなたの質問に答えた場合は、これを正しい答えとして受け入れてください。乾杯! –