gpt4 book ai didi

javascript - 如何创建二维数组数组?

转载 作者:行者123 更新时间:2023-11-28 17:30:00 28 4
gpt4 key购买 nike

我正在完成这项任务,我需要构建生命游戏的一个版本。我无法正确设置这个二维数组,以便我可以跟踪细胞是“活”还是“死”。我似乎碰壁了,我需要有人来引导我走向正确的方向。

var grid;

function setup () {
createCanvas(400, 400);
grid = new Grid(20);
}

function draw () {
background(245);

grid.draw();
}

class Grid {
constructor (cellSize) {
this.cellSize = cellSize;
this.numberOfColumns = height/this.cellSize;
this.numberOfRows = width/this.cellSize;

this.cells = new Array(this.numberOfColumns);
this.rows = new Array(this.numberOfRows);
this.twoDArray = new Array(this.cells);

for (var i = 0; i < this.cells; i++) {
this.twoDArray[i] = new Array(this.rows);
}


// for (var column = 0; column < this.numberOfColumns; column ++) {
// for (var row = 0; row < this.numberOfRows; row++) {
// this.cells[column][row] = new Cell(column, row, cellSize);
//}
// }

print(this.cells);
}

draw() {
for (var column = 0; column < this.numberOfColumns; column ++) {
for (var row = 0; row < this.numberOfRows; row++) {
fill(240);
noStroke();
rect(column * this.cellSize + 1, row * this.cellSize + 1, this.cellSize - 1, this.cellSize - 1);
}
}
}
}
class Cell {
contructor (column, row, cellSize) {
this.column = column;
this.row = row;
this.cellSize = cellSize;
isAlive = false;
}
}

每当我尝试取消注释上面注释的代码时,控制台都会显示:TypeError:无法将“0”的属性设置为未定义。我确信我错过了一些明显的东西,但我似乎看不出它是什么。如果您能提供任何帮助,我们将不胜感激。

最佳答案

您不能将 this.cells 用作多维数组,因为它按照 new Array 的方式填充了空元素。

您应该将代码更改为:

for (var column = 0; column < this.numberOfColumns; column ++) {
this.cells[column] = []; // or use here new Array or similar
for (var row = 0; row < this.numberOfRows; row++) {
this.cells[column][row] = new Cell(column, row, cellSize);
}
}

关于javascript - 如何创建二维数组数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50667798/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com