xxxxxxxxxx
109
function make2DArray(cols, rows) {
let arr = new Array(cols);
for(let i = 0; i < arr.length; i++){
arr[i] = new Array(rows);
for(let j = 0; j < arr[i].length; j++){
arr[i][j] = 0;
}
}
return arr;
}
let w;
let grid;
let nextGrid;
let neighbors;
let cols, rows;
let state;
let rule;
let nb;
function setup() {
createCanvas(900, 900);
w = 3;
cols = width / w;
rows = height / w;
grid = make2DArray(cols, rows);
// for(i = 0; i < rows; i++){
// for(j = 0; j < cols; j++){
// grid[i][j] = floor(random(2));
// }
// }
rule = [1, 0, 0, 1, 0, 0, 1, 1]
neighbors = [];
noStroke();
}
function draw() {
background(220);
nextGrid = grid;
// for(i = 0; i < rows; i++){
// for(j = 0; j < cols; j++){
// state = grid[i][j];
// fill(state * 100);
// rect(i * w, j * w, w);
// }
// }
// if(frameCount % 10 == true){
for(i = 0; i < rows; i++){
for(j = 0; j < cols; j++){
state = grid[i][j];
fill(state * 100);
rect(i * w, j * w, w);
if(i > 0 && i < rows - 1){
neighbors[0] = grid[i - 1][j];
neighbors[1] = grid[i][j];
neighbors[2] = grid[i + 1][j];
} else if(i == 0 && j > 0){
neighbors[0] = grid[i][j - 1];
neighbors[1] = grid[i][j];
neighbors[2] = grid[i + 1][j];
} else if(i == 0 && j == 0){
neighbors[0] = grid[rows - 1][cols - 1];
neighbors[1] = grid[i][j];
neighbors[2] = grid[i + 1][j];
} else if(i == rows - 1 && j > 0){
neighbors[2] = grid[i][j - 1];
neighbors[0] = grid[i - 1][j];
neighbors[1] = grid[i][j];
} else if(i == rows - 1 && j == 0){
neighbors[2] = grid[0][j + 1];
neighbors[0] = grid[i - 1][j];
neighbors[1] = grid[i][j];
}
if(neighbors[0] == 0 && neighbors[1] == 0 && neighbors[2] == 0) {
nextGrid[i][j] = 1;
}
if(neighbors[0] == 0 && neighbors[1] == 0 && neighbors[2] == 1) {
nextGrid[i][j] = 0;
}
if(neighbors[0] == 0 && neighbors[1] == 1 && neighbors[2] == 1) {
nextGrid[i][j] = 1;
}
if(neighbors[0] == 1 && neighbors[1] == 1 && neighbors[2] == 1) {
nextGrid[i][j] = 0;
}
if(neighbors[0] == 1 && neighbors[1] == 0 && neighbors[2] == 1) {
nextGrid[i][j] = 1;
}
if(neighbors[0] == 1 && neighbors[1] == 1 && neighbors[2] == 0) {
nextGrid[i][j] = 0;
}
if(neighbors[0] == 1 && neighbors[1] == 0 && neighbors[2] == 0) {
nextGrid[i][j] = 1;
}
if(neighbors[0] == 0 && neighbors[1] == 1 && neighbors[2] == 0) {
nextGrid[i][j] = 0;
}
}
}
// }
grid = nextGrid;
}