2016-10-15 11 views
0

私が構築しているこのハングマンゲームに問題があります。私はあなたが正しい文字を推測しないと、guessNumber変数が1つ減少するように基本的な機能を追加しています。私の現在のコードで問題になっているのは、プレーヤーが間違った文字を推測すると、whileループが完全に終了するということです。私のwhileループまたは位置を構造化していますか?guessNumber--;?私はこのコードを約1時間使いこなしてきましたが、まだこれを理解できません!Javascriptの値を減らしてループを終了するときの問題

<!DOCTYPE html> 
<html> 
<head> 
    <title>Hangman</title> 
</head> 
<body> 
<h1>Hangman</h1> 
<script> 
// array of words 
var words = [ 
"trajectory", "symphony", "desire", "antfarm", "dancer", "happiness", "positioning", 
"hobbit", "obituary", "cheetah", "sunrise", "antithesis", "wrong", "diamonds", 
"partnership", "oblique", "sanctuary"]; 

// pick a random word 

var word = words[Math.floor(Math.random() * words.length)]; 

// set up the answer array 
var answerArray = []; 

for (var i = 0; i < word.length; i++) { 
    answerArray[i] = "_"; 
} 

var remainingLetters = word.length; 

//amount of guesses 

var guessNumber = 5; 

//the game loop 

while (remainingLetters > 0 && guessNumber > 0) { 
    //show the player their progress 
    alert("Your word is " + answerArray.join(" ") + "and you have " +guessNumber+ " guesses left"); 

    //get a guess from player 
    var guess = prompt("Guess a letter, or click cancel to stop playing."); 
    if (guess === null) { 
     //exit the loop 
     alert("Ok you can quit"); 
     break; 
    } else if (guess.length !== 1) { 
     alert("Please enter a single letter."); 
    } else 
     //update the game state with the guess 
     for (var j = 0; j < word.length; j++) { 
      if (word[j] === guess) { 
       answerArray[j] = guess; 
       remainingLetters--; 
      } 
     } else { 
     guessNumber--; 
     } 
    } 
    //end game loop 

//alert to congratulate player 
alert(answerArray.join(" ")); 
alert("Good job! The answer was " + word); 

</script> 
</body> 
</html> 
+1

あなたは何の結果を期待していますか?あなたはどんな結果を得ていますか? – Soviut

答えて

2

ループで文字が見つからないたびに、guessNumbersが減っていました。 guessNumbers--はループの外側にある必要があるため、入力ごとに1回だけ推測数が減少します。

// array of words 
 
var words = [ 
 
"trajectory", "symphony", "desire", "antfarm", "dancer", "happiness", "positioning", 
 
"hobbit", "obituary", "cheetah", "sunrise", "antithesis", "wrong", "diamonds", 
 
"partnership", "oblique", "sanctuary"]; 
 

 
// pick a random word 
 

 
var word = words[Math.floor(Math.random() * words.length)]; 
 

 
// set up the answer array 
 
var answerArray = []; 
 

 
for (var i = 0; i < word.length; i++) { 
 
    answerArray[i] = "_"; 
 
} 
 

 
var remainingLetters = word.length; 
 

 
//amount of guesses 
 

 
var guessNumber = 5; 
 

 
//the game loop 
 

 
while (remainingLetters > 0 && guessNumber > 0) { 
 
    //show the player their progress 
 
    alert("Your word is " + answerArray.join(" ") + "and you have " +guessNumber+ " guesses left"); 
 

 
    //get a guess from player 
 
    var guess = prompt("Guess a letter, or click cancel to stop playing."); 
 
    if (guess === null) { 
 
     //exit the loop 
 
     alert("Ok you can quit"); 
 
     break; 
 
    } else if (guess.length !== 1) { 
 
     alert("Please enter a single letter."); 
 
    } else { 
 
     //update the game state with the guess 
 
     for (let j = 0; j < word.length; j++) {   
 
      if (word[j] === guess) { 
 
       answerArray[j] = guess; 
 
       remainingLetters--; 
 
      } 
 
     } 
 
     guessNumber--; 
 
    } 
 
} //end game loop 
 

 
//alert to congratulate player 
 
alert(answerArray.join(" ")); 
 
if (remainingLetters === 0) alert("Good job! The answer was " + word); 
 
else alert("No more guesses! The answer was " + word);
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <title>Hangman</title> 
 
</head> 
 
<body> 
 
<h1>Hangman</h1> 
 
    
 
    
 
</body> 
 
<html>

+1

ありがとうJecoms!私はそれを実行し、それは動作しています。ループ内に適切に配置する必要がある場所とちょうど混同していたと思います。時には問題を長時間見ても助けにならないことがあります。助けてくれてありがとう! – choudlette

+0

@choudlette np :)時にはバグを修正しようと壁に当たった後で新鮮な目が必要な場合もあります。 – Jecoms

関連する問題