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);