Javascript 我猜数字游戏中的while循环有问题吗

Javascript 我猜数字游戏中的while循环有问题吗,javascript,html,loops,for-loop,while-loop,Javascript,Html,Loops,For Loop,While Loop,所以,我在开始一段时间或for循环创建一个回合计数时遇到了问题,从6开始,允许猜数字的用户在输之前只旋转6圈,并给出一条消息,说明他输了,这个数字应该是猜出来的。每次他在文本框中输入猜测时,回合计数将逐个递减到0。我不知道在哪里创建while循环,在哪里放置while循环。是否有多种方法创建此操作 谢谢大家! //creating the guessing game function using if and else if statements var guessGame = func

所以,我在开始一段时间或for循环创建一个回合计数时遇到了问题,从6开始,允许猜数字的用户在输之前只旋转6圈,并给出一条消息,说明他输了,这个数字应该是猜出来的。每次他在文本框中输入猜测时,回合计数将逐个递减到0。我不知道在哪里创建while循环,在哪里放置while循环。是否有多种方法创建此操作

谢谢大家!

    //creating the guessing game function using if and else if statements
var guessGame = function(){
    var guess = document.getElementById("guessTextbox").value;
    var guessOutput = document.getElementById("gameStatus");

    //if guessed number is equal to the random number, winning display message is shown
    if (guess == guessNum){
        guessOutput.value = guessOutput.value + "You've guessed correctly! The correct number was: " + guessNum;
    }
    //else if statement for guesses not in the 1-100 range displaying error/incorrect message
    else if (guess > 100 || guess < 1){
        guessOutput.value = guessOutput.value + "Incorrect number range!";
    }
    else if (guess > guessNum){
        guessOutput.value = guessOutput.value + "The guess is too high!";
    }
    else if (guess < guessNum){
        guessOutput.value = guessOutput.value + "The guess is too low!";
    }
    //else if guess is NOT a number, displays message
    else if (isNaN(guess)){
        guessOutput.value = guessOutput.value + "Input value is not a number!";
    }
};
//使用if和else if语句创建猜测游戏函数
var guessGame=函数(){
var guess=document.getElementById(“guessTextbox”).value;
var guessOutput=document.getElementById(“游戏状态”);
//如果猜测的数字等于随机数,则显示中奖显示消息
if(guess==guessNum){
guessOutput.value=guessOutput.value+“您猜对了!正确的数字是:”+guessNum;
}
//else if语句,用于猜测不在1-100范围内,显示错误/不正确消息
否则如果(猜测>100 | |猜测<1){
guessOutput.value=guessOutput.value+“数字范围不正确!”;
}
else if(猜测>猜测数量){
guessOutput.value=guessOutput.value+“猜测太高了!”;
}
else if(猜测
可能您应该将它放在调用函数的位置,并降低每次调用的猜测。把你的信息告诉他,他的猜测是不正确的。但我不知道你会怎么称呼它。如果在单击事件中调用它,则不需要循环。只需将var猜测值设为5;例如,在页面加载和减少它在您的功能。然后在函数末尾检查它是否为0。

以下是实现该目标的一种方法。我留下了一些评论来帮助您导航。如果我能澄清什么,请告诉我

// When initialized, guessGame returns a function that allows
// 6 guesses and then reveals the random number.
function guessGame() {

    // Start with 6 turns.
    this.turns = 6;

    // Generate random number guessNum s.t. 1 < guessNum < 100
    this.guessNum = Math.floor(Math.random() * (100 - 2)) + 2;

    return function() {
      var guessOutput = document.getElementById("gameStatus");

      // If no turns left, output the message and return.
      if (this.turns === 0) {
        guessOutput.value = guessOutput.value + "You've ran out of turns! The correct number was: " + this.guessNum;
        return;
      }

      // Otherwise, match the next guess against guessNum.
      var guess = parseInt(document.getElementById("guessTextbox").value, 10);

      // If equal, display the winning message
      if (guess === this.guessNum){
          guessOutput.value = guessOutput.value + "You've guessed correctly! The correct number was: " + this.guessNum;
      }
      // If not in range, display error message
      // Advice: might want to move this before the equality check.
      else if (guess > 100 || guess < 1){
          guessOutput.value = guessOutput.value + "Incorrect number range!";
      }
      // If greater than, ...
      else if (guess > this.guessNum){
          guessOutput.value = guessOutput.value + "The guess is too high!";
      }
      // If less than, ...
      else if (guess < this.guessNum){
          guessOutput.value = guessOutput.value + "The guess is too low!";
          }
      // If not a number, display error.
      // Advice: might want to move this to the top of the checks.
      else if (isNaN(guess)){
          guessOutput.value = guessOutput.value + "Input value is not a number!";
      }

      // Decrement the number of turns.
      this.turns -= 1;

    // This helps the embedded function locate the random number.
    }.bind(this);
}

你明白了。本例中的while循环充当游戏循环。非零数求值truthy,因此while循环将一直运行,直到guestesremaining等于falsy(在本例中为0)。我没有因为玩家猜测超出范围和非整数猜测而惩罚他,但是如果你想要的话,这是一个很容易的改变。在本例中,为了简单起见,我让用户输入了一个prompt()。作为旁注,在测试正确答案之前,通常首先检查有效值(即NaN、null等)。您可能还希望在用户输入上解析int()

        //creating the guessing game function using if and else if statements
function guessGame(){
    var guessesRemaining = 6,
        guessNum = Math.floor(Math.random() * 100) + 1;
        guessOutput = document.getElementById("gameStatus");

    while(guessesRemaining){ // non-zero numbers are truthy
        var guess = prompt();
        //if guessed number is equal to the random number, winning display message is shown
        if (guess == guessNum){
            guessOutput.value = guessOutput.value + " You've guessed correctly! The correct number was: " + guessNum;
            guessesRemaining = 0; // No more guesses needed!!!
        }
        else if (isNaN(guess)){
            guessOutput.value = guessOutput.value + " Input value is not a number!";
            // decriment here if penalty for invalid guess is incurred
        }
        //else if statement for guesses not in the 1-100 range displaying error/incorrect message
        else if (guess > 100 || guess < 1){
            guessOutput.value = guessOutput.value + " Incorrect number range!";
            // decriment here if penalty for invalid guess is incurred
        }
        else if (guess > guessNum){
            guessOutput.value = guessOutput.value + " The guess is too high!";
            guessesRemaining--; // decriment remaining guesses
        }
        else if (guess < guessNum){
            guessOutput.value = guessOutput.value + " The guess is too low!";
            guessesRemaining--; // decriment remaining guesses
        }
    }
};
//使用if和else if语句创建猜测游戏函数
函数猜游戏(){
var GuessRemaining=6,
guessNum=Math.floor(Math.random()*100)+1;
guessOutput=document.getElementById(“游戏状态”);
而(猜测){//非零数字是真实的
var guess=prompt();
//如果猜测的数字等于随机数,则显示中奖显示消息
if(guess==guessNum){
guessOutput.value=guessOutput.value+“您猜对了!正确的数字是:”+guessNum;
GuessRemaining=0;//无需更多猜测!!!
}
else if(isNaN(猜测)){
guessOutput.value=guessOutput.value+“输入值不是数字!”;
//如果发生无效猜测的惩罚,则在此递减
}
//else if语句,用于猜测不在1-100范围内,显示错误/不正确消息
否则如果(猜测>100 | |猜测<1){
guessOutput.value=guessOutput.value+“数字范围不正确!”;
//如果发生无效猜测的惩罚,则在此递减
}
else if(猜测>猜测数量){
guessOutput.value=guessOutput.value+“猜测太高了!”;
猜测减少--;//减少剩余的猜测
}
else if(猜测

如果您需要了解任何内容,请告诉我。

guessOutput
是一个DOM元素,除非它是一个输入元素,否则它没有
属性。你的HTML是什么样子的?这是做什么的?@Brandon我们已经将
guessGame
定义为一个对象<代码>回合数
猜测数
是它的属性。为了让返回的函数能够引用这些属性,返回的函数必须知道如何找到它们。通过将拥有这些属性的
this
绑定到函数,我们允许它共享父函数的那些属性。这就是
这个
的目的。当然,它有很多应用。当你有机会的时候,读一读。啊,是的,刚刚了解了一些对象和属性是如何工作的,这让人很困惑,但是帮助很大,谢谢!
// When initialized, guessGame returns a function that allows
// 6 guesses and then reveals the random number.
function guessGame() {

    // Start with 6 turns.
    this.turns = 6;

    // Generate random number guessNum s.t. 1 < guessNum < 100
    this.guessNum = Math.floor(Math.random() * (100 - 2)) + 2;

    return function() {
      var guessOutput = document.getElementById("gameStatus");

      // If no turns left, output the message and return.
      if (this.turns === 0) {
        guessOutput.value = guessOutput.value + "You've ran out of turns! The correct number was: " + this.guessNum;
        return;
      }

      // Otherwise, match the next guess against guessNum.
      var guess = parseInt(document.getElementById("guessTextbox").value, 10);

      // If equal, display the winning message
      if (guess === this.guessNum){
          guessOutput.value = guessOutput.value + "You've guessed correctly! The correct number was: " + this.guessNum;
      }
      // If not in range, display error message
      // Advice: might want to move this before the equality check.
      else if (guess > 100 || guess < 1){
          guessOutput.value = guessOutput.value + "Incorrect number range!";
      }
      // If greater than, ...
      else if (guess > this.guessNum){
          guessOutput.value = guessOutput.value + "The guess is too high!";
      }
      // If less than, ...
      else if (guess < this.guessNum){
          guessOutput.value = guessOutput.value + "The guess is too low!";
          }
      // If not a number, display error.
      // Advice: might want to move this to the top of the checks.
      else if (isNaN(guess)){
          guessOutput.value = guessOutput.value + "Input value is not a number!";
      }

      // Decrement the number of turns.
      this.turns -= 1;

    // This helps the embedded function locate the random number.
    }.bind(this);
}