Hangman #2, page 139

Chapter 8, challenge #3, page 139

by Justin Hale

HTML

<html>
<head>
    <title>Hangman!</title>
</head>
<body>
    <h1>Hangman!</h1>
    <script>
    </script>
</body>
</html>

JavaScript

var pickWord = function () {
   	  var words = [
      	"javascript",
      	"monkey",
      	"amazing",
      	"pancake",
      	"cuesta",
      	"california",
      	"risk",
      	"poker",
      	"forest",
      	"engineer"
        ];
        return words[Math.floor(Math.random() * words.length)];
    };

    // Set up the answer array
    var setupAnswerArray = function (word) {
    	var answerArray = [];
    	for (var i = 0; i < word.length; i++) {
      	answerArray[i] = "_";
       }
        
        return answerArray;
    };

	// Show Player Progress
    var showPlayerProgress = function (answerArray) {
      alert(answerArray.join(" "));
    };

	//Guess Letter or click cancel to end game
    var getGuess = function () {
      return prompt("Guess a letter, or click Cancel to stop playing.");
    };

	//Update game
    var updateGameState = function (guess, word, answerArray) {
      var appearances = 0;
      for (var j = 0; j < word.length; j++) {
        if (word[j] === guess) {
          answerArray[j] = guess;
          appearances++;
        }
      }

      return appearances;
    };

    var showAnswerAndCongratulatePlayer = function (answerArray) {
      showPlayerProgress(answerArray);
      alert("Good job! The answer was " + answerArray.join(""));
    };

    var word = pickWord();
    var answerArray = setupAnswerArray(word);
    var remainingLetters = word.length;

    while (remainingLetters > 0) { showPlayerProgress(answerArray); var guess = getGuess();
      if (guess === null) {
        break;
      } else if (guess.length !== 1) {
        alert("Please enter a single letter.");
      } else {
        var correctGuesses = updateGameState(guess, word, answerArray);
        remainingLetters -= correctGuesses;
      }
    }

    showAnswerAndCongratulatePlayer(answerArray);