xxxxxxxxxx
62
let cells = [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
let ruleset = [0, 1, 0, 1, 1, 0, 1, 0];
let _top = 0;
function setup() {
frameRate(2);
createCanvas(400, 400);
}
function draw() {
// background(220);
updateCells();
drawCells();
if (_top >= 400){
background(220);
_top = 0;
} else {
_top += 25;
}
}
function rules (a, b, c) {
if (a === 1 && b === 1 && c === 1) return ruleset[0];
else if (a === 1 && b === 1 && c === 0) return ruleset[1];
else if (a === 1 && b === 0 && c === 1) return ruleset[2];
else if (a === 1 && b === 0 && c === 0) return ruleset[3];
else if (a === 0 && b === 1 && c === 1) return ruleset[4];
else if (a === 0 && b === 1 && c === 0) return ruleset[5];
else if (a === 0 && b === 0 && c === 1) return ruleset[6];
else if (a === 0 && b === 0 && c === 0) return ruleset[7];
}
function updateCells(){
let newcells = cells.slice();
for (let i = 1; i < cells.length - 1; i++) {
const left = cells[i - 1];
const middle = cells[i];
const right = cells[i + 1];
const newstate = rules(left, middle, right);
newcells[i] = newstate;
}
cells = newcells;
}
function drawCells(){
for (let i = 0; i < cells.length; i++) {
if (cells[i] == 0) {
fill(255);
} else {
fill(0);
}
stroke(0);
rect(i*25, _top, 25, 25);
}
}