【问题标题】:Javascript Guessing Game - Counter Not WorkingJavascript 猜谜游戏 - 计数器不工作
【发布时间】:2016-05-12 18:09:02
【问题描述】:

我正在尝试创建一个 Javascript 猜谜游戏,其中用户有 10 次尝试猜测 1-999 之间的数字。我必须使用验证号码,使用循环并在用户获得匹配时显示警报以及当他们用完猜测时显示警报。使用数字 45 仅用于测试。每个猜测都应该使用 innerHTML 进行编号和显示。问题是,计数器卡在零位。不知道我错过了什么!代码如下:

function myFunction() {
  var userInput = document.getElementById("input").value;
  var randomNum = 45;
  // test for valid input number from 1 to 999
  if (userInput < 0 || userInput > 999) {
    alert("Your number must be from 1 to 999");
  } else {
    alert("Input OK");
  }
  var counter = 0;
  while (counter < 10) {
    counter++;
    if (userInput == randomNum) {
      alert("You win!");
    }
    if (userInput > randomNum) {
      document.getElementById("loopResults").innerHTML += counter + "." + " Your answer: " + userInput + "." + " Guess lower! < br / > ";
      alert("You have " + counter + " guesses left.");
    } else if (userInput < randomNum) {
      document.getElementById("loopResults").innerHTML += counter + "." + " Your answer: " + userInput + "." + "Guess higher! < br / > ";
      alert("You have " + counter + " guesses left.");
    }
    break;
  } // end while loop
} // end function myFunction()

【问题讨论】:

  • break 结束 while 循环。 总是你应该考虑把它放在哪里/
  • 把break放在else的末尾。
  • 中断不是最大的问题,被函数作用域的计数器变量才是。

标签: javascript


【解决方案1】:

这一行

var counter = 0;

每次调用函数时将计数器重置为 0。一种解决方法是以这种方式将其设置为全局变量

counter = 0; // note no var keyword
function myFunction() {...}

那么你在函数中对 counter 的调用将引用全局变量。

此外,您的 while 循环没有意义。应该是一个简单的 if 语句来查看 counter >= 10。在 counter 变量被正确设置后考虑这个逻辑。

【讨论】:

  • 谢谢!这有助于让柜台朝着正确的方向发展。
【解决方案2】:

单步执行您的 while 循环中的逻辑。

在每个循环中递增的计数器变量已经导致您的循环退出。

在while循环的末尾设置一个“break”意味着你保证在第一个之后退出

【讨论】:

  • 谢谢!给你的问题......我在最后添加了休息时间,因为否则,所有警报一个接一个地弹出,没有暂停来进行另一个猜测。不明白如何让它重新开始?
  • 您希望为用户嵌入另一个输入猜测的机会,以便您可以再次检查条件。我想它会像你有猜测的时候一样,检查他们是否猜对了,如果没有,告诉他们他们还剩下多少猜测,并再次提示他们输入一个数字
  • 或者,您可以在没有 while 循环的情况下分离游戏逻辑。在他们输入猜测后,检查计数器变量并递增。有一个条件,如果他们达到计数器限制,然后你告诉他们他们输了
  • 顺便说一句,如果这有帮助,我会很感激你标记为已解决 :)
  • 没问题!只需要弄清楚在哪里执行此操作...对于该站点来说还是新手。 :) 谢谢!
【解决方案3】:

只有break 您真正想要退出循环时。在您的情况下,这可能是用户猜到了数字或尝试失败的时候。

break 命令立即结束循环。查看the MDN docs 了解更多信息!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多