javascript - 我应该在这里使用数组而不是随机数生成器吗?
问题描述
我正在使用 Javascript、HTML 和 CSS 制作记忆游戏。
以下是游戏的简要说明:
- 程序生成一个随机数,显示在屏幕上。
- 大约 5 秒后,数字消失,屏幕上出现一个弹出框,要求用户输入他或她刚刚看到的数字。
- 如果该数字与屏幕上先前显示的数字匹配,则会出现一个带有“正确”字样的警告框。如果没有,则会出现一个带有文本“Nope. Nice try”的警告框。
这是我的问题: 即使我输入了正确的数字,警报框也会显示“不。不错的尝试”。
到目前为止,这是我编写的代码:(请记住,我还没有实现 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{
}
}
感谢您的阅读。
解决方案
据我所知,您将a
其视为范围大于实际范围的变量。a
是一个参数,它的范围不会超出它声明的函数。
在这种情况下,a
inrandom(a)
和a
ingetInput(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.");
}
}
推荐阅读
- sql - SQL Server 使用 where 条件创建 Unpivot 表
- java - 为什么Tomcat使用大量内存?
- python-3.x - 在 Python-Selenium 中自动下载文件时,如何以编程方式重命名文件?
- javascript - 将 window.location 转换为具有变量链接的 window.open
- oracle - 为什么这个 PL/SQL 触发器不显示任何结果?
- r - r中关于mu和polygon的问题
- php - PHP 随机/百分比机会执行选项之一
- python - 如何在其他类中打包 tkiner 对象?
- android - (DAGGER-ANDROID) 不能在 Espresso 测试中使用 @Inject 并且不能使用 mockWebServer
- android - 前台服务中的位置更新