为什么这个javascript热/冷应用程序不会运行?

时间:2015-09-13 21:09:47

标签: javascript function

添加了一个while循环,并尝试通过在循环内输入finish来结束循环。游戏结束后游戏仍在运行。

var number = Math.floor(Math.random() * 100) + 1;  // generate random #
var guess;
var guessCount = 0;
var correctGuess = false;
var diff;

var correct = false;
while (!correct) {
    correct = guessFunction();
    var finish = false;
}

function guessFunction(){

    guess = prompt('I am thinking of a number between 1 and 100. What is it?');

    guessCount += 1;

    var guessInt = parseInt(guess);  //turn guesses into interger

    if (guess == number){           //which number is bigger, guess or number
        alert('Correct!' + 'That was a total of ' + guessCount + ' guesses.');  
        correctGuess = true;
        finish = true;
    } 
    else if (guessInt > number) {
        diff = guessInt - number;
    } 
    else if (guessInt < number) {
        diff = number - guessInt;
    }

    if (diff >= 1 && diff <= 10 && !correctGuess) {
        alert('Very Hot');
        guessFunction();
    } 
    else if (diff < 10 && diff <= 20 && !correctGuess){
        alert('Hot');
        guessFunction();
    } 
    else if (diff < 20 && diff <= 30 && !correctGuess){
        alert('Warm');
        guessFunction();
    } 
    else if (diff < 30 && diff <= 50 && !correctGuess){
        alert('Cold');
        guessFunction();
    } 
    else if (diff > 50 && !correctGuess){
        alert('Ice Cold');
        guessFunction();
    }

}
guessFunction();

尝试运行此代码,但在猜测随机数时只允许2个警报窗口。我不知道如何让它运行,也许guessFunction没有运行?

var number = Math.floor(Math.random() * 100) + 1;  // generate random #
var guess;
var guessCount = 0;
var correctGuess = false;
var diff;

function guessFunction(){
guess = prompt('I am thinking of a number between 1 and 100. What is it?');
guessCount += 1;

var guessInt = parseInt(guess);  //turn guesses into interger

if (guess == number){			//which number is bigger, guess or number
	alert('Correct!');  
} 
else if (guessInt > number) {
	diff = guessInt - number;
} 
else if (guessInt < number) {
	diff = number - guessInt;
	}
}
guessFunction();

if (diff >= 1 && diff <= 10) {
	alert('Very Hot');
        guessFunction();
} 
else if (diff < 10 && diff <= 20){
	alert('Hot');
    guessFunction();
} 
else if (diff < 20 && diff <= 30){
	alert('Warm');
    guessFunction();
} 
else if (diff < 30 && diff <= 50){
	alert('Cold');
    guessFunction();
} 
else if ( diff > 50){
	alert('Ice Cold');
    guessFunction();
}

2 个答案:

答案 0 :(得分:1)

脚本停止执行,因为您只调用了两次函数。如果你希望这个运行直到用户猜到正确的数字,你可能需要一个while循环:

var correct = false;
while (!correct) {
  // guessFunction could return true if they get it right
  correct = guessFunction();
}

答案 1 :(得分:0)

是的,您的脚本在退出前只执行两次。你的嵌套错了:

var number = Math.floor(Math.random() * 100) + 1;  // generate random #
var guess;
var guessCount = 0;
var correctGuess = false;
var diff;

function guessFunction(){

    guess = prompt('I am thinking of a number between 1 and 100. What is it?');

    guessCount += 1;

    var guessInt = parseInt(guess);  //turn guesses into interger

    if (guess == number){           //which number is bigger, guess or number
        alert('Correct!');  
        correctGuess = true;
    } 
    else if (guessInt > number) {
        diff = guessInt - number;
    } 
    else if (guessInt < number) {
        diff = number - guessInt;
    }

    if (diff >= 1 && diff <= 10 && !correctGuess) {
        alert('Very Hot');
        guessFunction();
    } 
    else if (diff < 10 && diff <= 20 && !correctGuess){
        alert('Hot');
        guessFunction();
    } 
    else if (diff < 20 && diff <= 30 && !correctGuess){
        alert('Warm');
        guessFunction();
    } 
    else if (diff < 30 && diff <= 50 && !correctGuess){
        alert('Cold');
        guessFunction();
    } 
    else if (diff > 50 && !correctGuess){
        alert('Ice Cold');
        guessFunction();
    }
}
guessFunction();

修改

我的答案比它需要的更冗长,因此它与你的问题直接相关。下一步是在脚本中实现Menello答案中提到的while循环的更好解决方案。