xxxxxxxxxx
105
class Grid {
constructor() {
this.grid = [];
for (let i=0; i<cols; i++) {
this.grid[i] = [];
for (let j=0; j<rows; j++) {
this.grid[i][j] = floor(random(2));
}
}
}
display() {
for (let i=0; i<cols; i++) {
for (let j=0; j<rows; j++) {
if (this.grid[i][j] == 0) {
fill(255);
} else {
fill(0);
}
noStroke();
rect(i*size, j*size, size, size);
}
}
}
update() {
let next = [];
for (let i=0; i<cols; i++) {
next[i] = [];
for (let j=0; j<rows; j++) {
let sum = this.checkNeighbors(i, j, this.grid);
if (this.grid[i][j] == 1 && sum < 2) {
next[i][j] = 0;
} else if (this.grid[i][j] == 1 && (sum == 2 || sum == 3)) {
next[i][j] = 1;
} else if (this.grid[i][j] == 1 && sum > 3) {
next[i][j] = 0;
} else if (this.grid[i][j] == 0 && sum == 3) {
next[i][j] = 1;
} else {
next[i][j] = this.grid[i][j];
}
if (this.grid[i][j] == 0) {
fill(255);
} else {
fill(0);
}
noStroke();
rect(i*size, j*size, size, size);
}
}
this.grid = next;
}
checkNeighbors(x, y) {
let sum = 0;
for (let i=-1; i<2; i++) {
for (let j=-1; j<2; j++) {
sum += this.grid[(x+i+cols)%cols][(y+j+rows)%rows];
}
}
sum -= this.grid[x][y];
return sum;
}
resetCanvas() {
for (let i=0; i<cols; i++) {
this.grid[i] = [];
for (let j=0; j<rows; j++) {
this.grid[i][j] = 0;
}
}
}
drawGrid(x, y) {
let margin = 2;
for (let i=-margin; i<margin; i++) {
for (let j=-margin; j<margin; j++) {
this.grid[x + i][y + j] = 1;
}
}
}
randGrid() {
for (let i=0; i<cols; i++) {
this.grid[i] = [];
for (let j=0; j<rows; j++) {
this.grid[i][j] = floor(random(2));
}
}
}
}