首页 > 解决方案 > 我应该在这里使用数组而不是随机数生成器吗?

问题描述

我正在使用 Javascript、HTML 和 CSS 制作记忆游戏。

以下是游戏的简要说明:

这是我的问题: 即使我输入了正确的数字,警报框也会显示“不。不错的尝试”。

到目前为止,这是我编写的代码:(请记住,我还没有实现 setInterval/setTimeout 函数。为方便起见,我制作了“隐藏”函数手册。)

JS:

/* game level = easy 

numbers from 1-9000 are generated */

function random(a){
    a = Math.floor(Math.random() * (9000 - 1) + 1);
    
    document.getElementById("screen").innerText = a;
}

function getInput(a){
    var input = window.prompt("Enter the number you just saw:");
    
    if(input === a){
        alert("Correct!");
    }
    else{
        alert("Nope. Nice try.");
    }
}

/* hide toggle */

function hide() {
  var x = document.getElementById("screen");
  if (x.style.display === "none") {
    x.style.display = "none";
  } else {
    x.style.display = "none";
  }
} 

我的问题:使用 1-9000 的数字数组代替是否理想?

有了一个数组,我想我可以做这样的事情:

for(var i = 0; i < arr.length; i++){
   if(//){
  }
  else{
  }
}

感谢您的阅读。

标签: javascriptjavahtmlarrays

解决方案


据我所知,您将a其视为范围大于实际范围的变量。a是一个参数,它的范围不会超出它声明的函数。

在这种情况下,ainrandom(a)aingetInput(a)是两个不相关的实体,其范围不重叠。

一个解决方案可能是创建a一个全局变量并在任何函数之外声明它,比如

var a;

function random(){
    a = Math.floor(Math.random() * (9000 - 1) + 1);
    document.getElementById("screen").innerText = a;
}

function getInput(){
    var input = window.prompt("Enter the number you just saw:");
    
    if(input == a){ // make '===' into '==' instead btw
        alert("Correct!");
    }
    else{
        alert("Nope. Nice try.");
    }
}

推荐阅读