Home > Software design >  Why are some guesses registering as not in range?
Why are some guesses registering as not in range?

Time:06-30

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Higher Lower</title>
  </head>

  <body>
    <h1>Higher - Lower</h1>

    <button onclick="userInput()">Input Maximum Number</button>

    <!--higherLower Function-->
    <p>Your Guess:</p>
    <input type="text" onfocus="this.value=''" id="choice" /><br /><br />
    <button onclick="higherLower()">Guess</button>

    <p id="result"></p>
  </body>
  <script src="scripts.js"></script>
</html>
let userMax;
let randomNumber;
let tries = 0;
const track = [];

function userInput() {
    userMax = prompt("Please enter a maximum number:");
   
    while (userMax < 1 || isNaN(userMax)) {
        alert("Maximum number cannot be negative, zero, or non-numbers");
        userMax = userInput();
    }

    // Generates random number
    randomNumber = Math.floor(Math.random() * Number(userMax))   1;

    return userMax;
}

function isFloat(userMax) {
    return Number(userMax) === n && n % 1 !== 0;
}

function higherLower(choice) {
    
    window.alert(randomNumber);
    
    // Declares user guess variable
    var guess=document.getElementById('choice').value;
    // User guess conditional validation
    if (isNaN(guess)) {
        alert("That is not a number!");
    }
    else if(guess < 1 || guess > userMax) {
        alert("That number is not in range, try again.");
    }
    
    // Declares random number variable
    if(randomNumber==guess) {
        document.getElementById("result").innerHTML = "You got it! It took you "   tries   " tries and your guesses were ";
        // Generates new random number after win
        randomNumber=Math.floor(Math.random() * Number(userMax))   1;
    }
    else if(randomNumber>=guess) {
        document.getElementById("result").innerHTML = "No, try a higher number.";
        tries  ;
    }
    else if(randomNumber<=guess) {
        document.getElementById("result").innerHTML = "No, try a lower number.";
        tries  ;
    }
}

I am making a number guessing game and I have an issue with the guess conditional validation. After the first guess, there seem's to be random numbers (that fall in the appropriate numerical range) that flags the "That number is not in range" alert. I am not noticing any blatant logical issues with the conditional statements but I am definitely missing something.

CodePudding user response:

Try changing:

userMax = prompt("Please enter a maximum number:");

To:

userMax = parseInt(prompt("Please enter a maximum number:"));

Although I can't test it right now.

  • Related