Gat*_*reh 5 javascript arrays random 2d fill
我真的很抱歉,如果之前有这样的事情发布在这里,但我找不到任何东西,我仍然是网站的新手!
所以有一段时间我现在已经通过html5和javascript学习了一些关于游戏开发的知识,我偶然发现了制作tileset地图,我现在有一个tileset和一个2D数组,我想把某些瓷砖放入(数量在6之间变化)在这种情况下10).我认为这可能是一个很酷的功能,使地图在一小组相似的瓷砖之间进行选择,所以我不必专门为数组中的每个瓷砖编号(只需定义类型)
我目前的方法可能是最好的能够定义类型,但我想要一些看起来更清洁的东西和/或信息为什么我的"清洁"版本不起作用.
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;
}
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止使用的代码,我必须使用tile()函数编辑代码的每个元素,以便在每个元素中获得一个随机数,我想要的是这样的:
for (var i = 0 ; i < 15; i++) {
for (var j = 0; j < 9; j++) {
ground[[i],[j]] = (Math.random() * 5 | 0) + 6;
}
}
Run Code Online (Sandbox Code Playgroud)
填充数组而不必将函数添加到每个点.
我有一种感觉,我错过了返回功能或类似的东西,但老实说,我不知道.
您正在考虑正确的方向,但您的代码中存在一些错误;)
使用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;
}
}
Run Code Online (Sandbox Code Playgroud)
也许更好(可重复使用)
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);
Run Code Online (Sandbox Code Playgroud)