2017-05-22 16 views
0

슈퍼 자바 스크립트에 새. 나는 심령 추측 게임을 만들려고 노력하고있다. onkeyup 함수를 제외한 모든 것은 여기서 작동합니다. 콘솔 로그를 열고 문자를 입력하면 userGuess 변수가 정의되지 않았 음을 알 수 있습니다. onkeyup 함수와 일치하도록 userGuess 변수를 어떻게 정의합니까?onkeyup 변수를 정의하는 자바 스크립트 추측 게임

감사 :

//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'를 사용하여 사용자 입력을 시도합니까? See [_What is console.log_] (http://stackoverflow.com/q/4539253/2950032) –

+0

사용자 입력이 등록되고 있는지 테스트하기 위해 console.log를하고있었습니다. –

+0

userGuess가 guessedLetters에 표시되는 문자열이되도록하려고합니다. userGuess는 onkeyup 이벤트 여야합니다. –

답변

0

이 단지 선언되어 있기 때문에 변수 userGuessundefined입니다. 이 변수에는 할당 연산이 없습니다. 작업 샘플을보고 브라우저에서 수정했으며 예상대로 작동하는 것 같습니다. 여기

var userGuess = event.key; 

내가 당신 때문에 코드

와 비트 주위에 재생하여 얻은 출력은 다음과 같이 내가 한 유일한 변화는 누른 키에userGuess를 할당 이었다 허용하려는 문자 목록이 있으면 처음에 다음 코드를 추가하여 허용 된 문자 이외의 문자가 고려되지 않도록 할 수 있습니다.

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

정말 고마워요. –

+0

귀하의 질문에 대한 답변이 맞으면이 대답을 정답으로 받아주십시오. 건배! –