I'm writing a guessing game in javascript. I don't know how to validate that the number is inbetween 0 and 100 through the code

Viewed 119

The exercise I'm doing is to write a guessing game.

It asks for you to write a function for the user to enter a guessed number, write a second function to validate the code, write a third function that checks the number and tells the user if it's too high or too low.

My problem is that when I get to the too high or too low part it stops validating whether the number is in between 1 and 100. I've tried everything that I know and I'm still really confused. The code worked otherwise before I put in the ValidNUm variable.

I feel like this could be an easy answer and I'm not getting it so I'm sorry. point is I need the guessing game to validate the number, if it's wrong they will enter a number till it is correct, then it tells them wether that validated number is too high or too low.

What happened before is that it validates the number but doesn't pass on the valid number to be assessed.

var GuessedNumber, RandomNum, ValidNum;

RandomNum = 24; //Math.floor((Math.random() * 100) + 1);
GuessedNumber = EnterGuess();
ValidNum = ValidateGuess(GuessedNumber);

NumberCheck(GuessedNumber, RandomNum, ValidNum);

function EnterGuess() {
  var ArgGuessNum;

  ArgGuessNum = parseFloat(prompt("Please guess a number between 1 and 100"));
  return ArgGuessNum;
}

function ValidateGuess(ArgGuessNum) {
  var ArgValidNum;

  while (ArgGuessNum < 1 || ArgGuessNum > 100) {
    ArgGuessNum = parseFloat(
      prompt("Please guess a valid number between 1 and 100")
    );
  }

  if (ArgGuessNum > 0 || ArgGuessNum < 100) {
    ArgValidNum = ArgGuessNum;
    return ArgValidNum;
  }
  alert("valid number");
}

function NumberCheck(ArgGuessNum, ArgRandomNum, ArgValidNum) {
  var ctr = 1;

  while (ArgValidNum != ArgRandomNum) {
    if (ArgValidNum > ArgRandomNum) {
      ArgGuessNum = parseFloat(
        prompt("Uh-Oh the number is  too high! enter another guess")
      );
      ValidateGuess(ArgGuessNum);
    } else if (ArgValidNum < ArgRandomNum) {
      ArgGuessNum = parseFloat(
        prompt("Uh-Oh the number is  too low! enter another guess")
      );
      ValidateGuess(ArgGuessNum);
    }
    ctr++;
  }

  alert("you took " + ctr + " guesses");
}
1 Answers

When you validate the guessed number inside the NumberCheck(...) you are not assigning the resulting 'valid' number back to a variable (so it's never considered in the next iteration of the loop.

You need to add something like ArgValidNum = ValidateGuess(ArgValidNum);

I also went and simplified the NumberCheck(...) since you are comparing only two numbers: the one guessed and the 'randomly' created at the beginning.

See demo code below

var GuessedNumber, RandomNum, ValidNum;

RandomNum = 24; //Math.floor((Math.random() * 100) + 1);
GuessedNumber = EnterGuess();
ValidNum = ValidateGuess(GuessedNumber);

NumberCheck(RandomNum, ValidNum);

function EnterGuess() {
  return parseFloat(prompt("Please guess a number between 1 and 100"));
}

function ValidateGuess(ArgGuessNum) {
  var ArgValidNum;

  while (ArgGuessNum < 1 || ArgGuessNum > 100) {
    ArgGuessNum = parseFloat(
      prompt("Please guess a valid number between 1 and 100")
    );
  }

  if (ArgGuessNum > 0 || ArgGuessNum <= 100) {
    ArgValidNum = ArgGuessNum;
    return ArgValidNum;
  }
  console.log("valid number");
}

function NumberCheck(ArgRandomNum, ArgValidNum) {
  var ctr = 1;

  while (ArgValidNum !== ArgRandomNum) {
    if (ArgValidNum > ArgRandomNum) {
      ArgValidNum = parseFloat(
        prompt("Uh-Oh the number is  too high! enter another guess")
      );
      ArgValidNum = ValidateGuess(ArgValidNum);
    } else if (ArgValidNum < ArgRandomNum) {
      ArgValidNum = parseFloat(
        prompt("Uh-Oh the number is  too low! enter another guess")
      );
      ArgValidNum = ValidateGuess(ArgValidNum);
    }
    ctr++;
  }

  alert("you took " + ctr + " guesses");
}

Related