[英]How do I create a 2D array of arrays?
我正在从事这项工作,需要构建《人生游戏》的一个版本。 我在正确设置此2D数组时遇到麻烦,因此我无法跟踪单元格是“存活”还是“死亡”。 我似乎撞墙了,我需要有人将我朝正确的方向发展。
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);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.