diff --git a/index.html b/index.html index af638da..5a39746 100644 --- a/index.html +++ b/index.html @@ -9,15 +9,19 @@
+

Guessing Game

I'm thinking of a number from 1 to 99! Can you guess it in 5 tries or less?

-
+ +
+ - -
+ + +

You guessed too high. Try again.

@@ -30,6 +34,7 @@

Guessing Game

Would you like to play again?

+
diff --git a/index.js b/index.js index 4c2a94e..f8c0a33 100644 --- a/index.js +++ b/index.js @@ -1,3 +1,5 @@ +// Cache the key elements the game updates after each guess. +const guessForm = document.getElementById('guess-form'); const guessInput = document.getElementById('guess'); const submitButton = document.getElementById('submit'); const resetButton = document.getElementById('reset'); @@ -22,69 +24,74 @@ function getRandomNumber(min, max) { return Math.floor(Math.random() * (max - min)) + min; } -function checkGuess() { - // Get value from guess input element - const guess = parseInt(guessInput.value, 10); - attempts = attempts + 1; +// Hides every feedback message so only the current game state is visible. +function hideAllMessages() { + for (let elementIndex = 0; elementIndex < messages.length; elementIndex += 1) { + messages[elementIndex].style.display = 'none'; + } +} - hideAllMessages(); +function getGuessWord(remainingAttempts) { + return remainingAttempts === 1 ? 'guess' : 'guesses'; +} - if (guess === targetNumber) { - numberOfGuessesMessage.style.display = ''; - numberOfGuessesMessage.innerHTML = `You made ${attempts} guesses`; +// Resets the game to the initial state with a new random target number. +function setup() { + targetNumber = getRandomNumber(1, 100); + console.log(`target number: ${targetNumber}`); - correctMessage.style.display = ''; + attempts = 0; + guessInput.value = ''; + submitButton.disabled = false; + guessInput.disabled = false; - submitButton.disabled = true; - guessInput.disabled = true; - } + hideAllMessages(); + resetButton.style.display = 'none'; +} - if (guess !== targetNumber) { - if (guess < targetNumber) { - tooLowMessage.style.display = ''; - } else { - tooLowMessage.style.display = ''; - } +// Checks the player's guess and updates the visible game messages. +function checkGuess(event) { + event.preventDefault(); - const remainingAttempts = maxNumberOfAttempts - attempts; + const guess = parseInt(guessInput.value, 10); + if (!Number.isInteger(guess) || guess < 1 || guess > 99) { + hideAllMessages(); numberOfGuessesMessage.style.display = ''; - numberOfGuessesMessage.innerHTML = `You guessed ${guess}.
${remainingAttempts} guesses remaining`; + numberOfGuessesMessage.innerHTML = 'Enter a number from 1 to 99.'; + resetButton.style.display = attempts > 0 ? '' : 'none'; + return; } - if (attempts ==== maxNumberOfAttempts) { + attempts += 1; + + hideAllMessages(); + + const remainingAttempts = maxNumberOfAttempts - attempts; + + numberOfGuessesMessage.style.display = ''; + numberOfGuessesMessage.innerHTML = `You guessed ${guess}.
${remainingAttempts} ${getGuessWord(remainingAttempts)} remaining`; + + if (guess === targetNumber) { + correctMessage.style.display = ''; + submitButton.disabled = true; + guessInput.disabled = true; + } else if (attempts === maxNumberOfAttempts) { + maxGuessesMessage.style.display = ''; + numberOfGuessesMessage.innerHTML = `You guessed ${guess}.
0 guesses remaining`; submitButton.disabled = true; guessInput.disabled = true; + } else if (guess < targetNumber) { + tooLowMessage.style.display = ''; + } else { + tooHighMessage.style.display = ''; } guessInput.value = ''; - resetButton.style.display = ''; } -function hideAllMessages() { - for (let elementIndex = 0; elementIndex <= messages.length; elementIndex++) { - messages[elementIndex].style.display = 'none'; - } -} - -funtion setup() { - // Get random number - targetNumber = getRandomNumber(1, 100); - console.log(`target number: ${targetNumber}`); - - // Reset number of attempts - maxNumberOfAttempts = 0; - - // Enable the input and submit button - submitButton.disabeld = false; - guessInput.disabled = false; - - hideAllMessages(); - resetButton.style.display = 'none'; -} - -submitButton.addEventListener('click', checkGuess); +guessForm.addEventListener('submit', checkGuess); resetButton.addEventListener('click', setup); setup();