javascript - 制作宾果游戏。如何从一组中生成要显示的随机数,而不重复生成和显示哪个数字?
问题描述
我正在为我正在学习的课程制作宾果游戏,任务是从预先设置的 Set(); 中生成一个随机选择/元素,显示该随机值(它将是一个字母和数字,例如G78,所以不是整数),然后确保在游戏重置之前不会再次调用该数字
到目前为止,我能够生成一个随机数并显示它,但我不知道如何防止生成器重复它选择显示的集合中的哪个元素
let numbers = new Set();
.add("O65")
.add("O66")
.add("O67")
.add("O68")
.add("O69")
.add("O70")
.add("O71")
.add("O72")
.add("O73")
.add("O74")
.add("O75");
let guess = Array.from(numbers);
let checks = new Array();
function getRandomNumber()
{
function rando()
{
for(let g = guess; g = guess.length; g++)
{
let rand = guess[Math.floor(Math.random() *
guess.length)];
return rand;
}
}
let num = rando();
document.getElementById('bingo').innerHTML = num;
checks.push(num);
/*if(numbers.has(num))
{
numbers.delete(num);
}*/
}
在这里,我可以生成一个要显示的随机值,但有时我会得到一个已经被调用的值。我不希望这种情况发生,集合中的每个值都应该只生成并显示一次,直到程序被重置或整个集合被调用
解决方案
像这样的东西。将您选择的每个数字添加到“测试”列表中,然后在返回之前进行测试以确保新的随机数不在测试列表中。如果'rand'在测试列表中,再次调用rando。如果不是,则返回 'rand'
let test = []
function getRandomNumber()
{
function rando()
{
for(let g = guess; g = guess.length; g++)
{
let rand = guess[Math.floor(Math.random() *
guess.length)]}
for(m=0; m < test.length; m++){
if (rand == test[m]){
rando()
return false;
}}
return rand
}
}
}
推荐阅读
- java - 每天在特定时间重置变量并触发通知 - 即使应用程序关闭
- python - 将经纬度坐标的 CSV 文件输入 API 以提取天气数据?
- unity3d - 通过旋转向对象施加力
- c# - 如何从 DataGrid 中删除所选项目?不使用设计模式
- google-cloud-platform - Google Workspace 插件 Google Analytics 跟踪
- android - 我的 AVD 没有启动它一直在加载帮助我吗?
- go - 子文件夹中的包组织
- python - PyInstaller生成的exe文件在导入颜色模块时不起作用
- javascript - 作为参数传递的大型 JSON 数组数据在 Java servlet POST 中为空
- excel - 向 VBA 中的列表对象添加值时性能低下