【发布时间】:2018-09-09 05:34:27
【问题描述】:
这个函数只洗牌矩阵[y],但我希望它洗牌矩阵[y][x],但它不想正确洗牌。
我使用的代码:
function Shuffle(arguments) {
for (var k = 0; k < arguments.length; k++) {
var i = arguments[k].length;
if (i == 0)
return false;
else {
while (--i) {
var j = Math.floor(Math.random() * (i + 1));
var tempi = arguments[k][i];
var tempj = arguments[k][j];
arguments[k][i] = tempj;
arguments[k][j] = tempi;
}
return arguments;
}
}
return arguments
}
var matrix = [
];
var ab = 36;
for (var y = 0; y < ab; y++) {
matrix.push([])
for (var x = 0; x < ab; x++) {
matrix[y][x] = Math.floor(Math.random() * 1)
}
for (var x = 0; x < ab / 2; x++) {
matrix[y][x] = 1
}
}
arr = Shuffle(matrix);
console.log(arr)
var side = 16;
function setup() {
createCanvas(arr[0].length * side, arr.length * side);
background('#acacac');
frameRate()
}
function draw() {
for (var y = 0; y < arr.length; y++) {
for (var x = 0; x < arr[y].length; x++) {
if (matrix[y][x] == 0) {
fill(0, 255, 0)
rect(y * side, x * side, side, side)
} else if (matrix[y][x] == 1) {
fill("red")
rect(y * side, x * side, side, side)
} else if (matrix[y][x] == 2) {
fill(255, 255, 0)
rect(y * side, x * side, side, side)
} else if (matrix[y][x] == 3) {
fill(255, 0, 0)
rect(y * side, x * side, side, side)
}
}
}
}
所以这个函数只洗牌矩阵[y],但我希望它洗牌矩阵[y][x]。 有任何想法吗?这是截图:
.
【问题讨论】:
-
先洗行再洗列,或将其合并为一维数组洗牌然后再拆分
-
我不太擅长数组
-
我的问题是你在 while 循环之后返回,所以 for 循环并没有像它假设的那样完成
-
那我该怎么做呢?
-
只删除返回参数;在while循环之后
标签: javascript arrays canvas multidimensional-array p5.js