javascript - 在javascript中用随机数填充二维数组

标签 javascript arrays random 2d fill

如果以前在这里发布过类似的内容,但我找不到任何内容,我真的很抱歉,我还是这个网站的新手!

一段时间以来,我一直在通过 html5 和 javascript 学习一些关于游戏开发的知识,我偶然发现了制作 tileset map ,我现在有一个 tileset 和一个 2D 数组,我想在其中放入某些图 block (数字在这种情况下在 6 到 10 之间变化)。 我认为让 map 在一小组相似的图 block 之间进行选择可能是一个很酷的功能,因此我不必专门为数组中的每个图 block 编号(只需定义类型)

我目前拥有的方法可能是能够定义类型的最佳方法,但我想要一些看起来更简洁的方法和/或关于为什么我的“更简洁”版本不起作用的信息。

var ground = [
    [tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile()],
    [tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile()],
    [tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile()],
    [tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile()],
    [tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile()],
    [tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile()],
    [tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile()],
    [tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile()],
    [tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile(),tile()]];

function tile() {
    var y = (Math.random() * 5 | 0) + 6;
    return y;
}

这是我到目前为止一直在使用的代码,我必须使用 tile() 函数编辑代码的每个元素,以便在每个元素中获得一个随机数,我想要的是这样的:

for (var i = 0 ; i < 15; i++) {
    for (var j = 0; j < 9; j++) {
        ground[[i],[j]] = (Math.random() * 5 | 0) + 6;
    }
}

无需将函数添加到每个点即可填充数组。

我觉得我缺少返回函数或类似的东西,但老实说我不知道​​。

最佳答案

您的思考方向是正确的,但您的代码中存在一些错误;)

  • 您必须先初始化数组,然后才能将元素放入其中。
  • 你数了两次 i++

Javascript

var ground = []; // Initialize array
for (var i = 0 ; i < 15; i++) {
    ground[i] = []; // Initialize inner array
    for (var j = 0; j < 9; j++) { // i++ needs to be j++
        ground[i][j] = (Math.random() * 5 | 0) + 6;
    }
}

也许更好(可重复使用)

function createGround(width, height){
    var result = [];
    for (var i = 0 ; i < width; i++) {
        result[i] = [];
        for (var j = 0; j < height; j++) {
            result[i][j] = (Math.random() * 5 | 0) + 6;
        }
    }
    return result;
}
// Create a new ground with width = 15 & height = 9
var ground = createGround(15, 9);

关于javascript - 在javascript中用随机数填充二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25005561/

相关文章:

javascript - 有没有办法使用 javascript 将文件添加到 HTML5 applicationCache?

PHP 数组 : how to print only array values but not keys

javascript - 有没有解决 'Freeze' Angular scopes 和 children 未被使用的好方法

javascript - 为什么 x 在内部范围内未定义?

Python odeint、参数

javascript - 从对象数组中获取值

ios - 自动单词生成器

c++ - 加权随机数 V2(动态情况)

c# - 随机不工作

javascript - 如何不在纯 HTML5 客户端应用程序上暴露应用程序 secret 和 key