[英]How to copy an array array of numbers using slice()
我試圖用隨機的游戲棋子(圖像)填充游戲板(8 x 8),但不是整個棋盤都被填充。 有些將是空的。 為此,我在板上隨機生成x,y坐標,並為其分配一個隨機數。 由於fillBoard是模塊中的私有函數,因此我將其復制到copyBoard,后者是公共函數。
這個想法是隨機生成一個x,y坐標,並將其放在array [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;
}
看來您的問題僅是由初始化隨機數組元素引起的。
您可以遍歷所有行和列並僅復制初始化元素
要么
可以存儲initilised元件別處的列表/陣列(陣列元件MaxRow的+ 1 / MAXCOL + 1?)
解決方法如下:
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.