我试图用随机游戏棋子(图像)填充游戏板(8乘8),但不是整个棋盘都填满了。有些人会空着。为此,我在板上随机生成x,y坐标并为其分配一个随机数。由于fillBoard是模块中的私有函数,我将它复制到copyBoard,这是公共函数。
这个想法是随机生成一个x,y坐标并将它放在一个数组[x],array [y]中。我在复制阵列阵列时遇到了麻烦,因为并非所有这些都是定义的。我想知道你是怎么做到的?
这是我到目前为止所得到的。它显示错误,因为splice()不能用于未定义的变量。
function fillBoard(){
var x, y;
monsters=[]; //empty array
x = Math.floor(Math.random()*cols);
y = Math.floor(Math.random()*rows);
monsters[x] = []; /* making x variable an array */
monsters[x][y] = Math.floor(Math.random() * numMonsterTypes);
}
function copyBoard() {
var copy = [],
x;
for (x = 0; x < cols; x++) {
if(monsters[x]){
copy[x] = monsters[x].slice(0); //slice(array) -> returns the selected elements in an array
};
};
return copy;
}
答案 0 :(得分:0)
看起来您的问题仅来自于初始化的随机数组元素
您可以遍历所有行和列并仅复制初始化元素
或
你可以在其他地方存储一个列表/数组的初始化元素(数组元素maxRow + 1 / maxCol + 1?)
答案 1 :(得分:0)
以下是解决方案:
function fillBoard(){
var x, y;
monsters=[]; //empty array
x = Math.floor(Math.random()*cols);
y = Math.floor(Math.random()*rows);
monsters[x] = []; /* making x variable an array */
monsters[x][y] = Math.floor(Math.random() * numMonsterTypes);
}
function copyBoard() {
var copy = [],
x;
for (x = 0; x<cols; x++){
copy[x] = [];
if(monsters[x]){
copy[x] = monsters[x].slice(0);;
};
};
return copy;
}