xxxxxxxxxx
129
var rows;
var cols;
var scl = 5;
var array = [];
var pause = true;
function mousePressed(){
pause = !pause;
}
function setup() {
createCanvas(400, 400);
rows = floor(width/scl);
cols = floor(height/scl);
for(var i = 0; i < rows; i++){
array[i] = [];
for(var j = 0; j < cols; j++){
array[i][j] = 255;
}
}
//frameRate(1)
//Blinker
// array[11][11] = 0;
// array[9][11] = 0;
// array[10][11] = 0;
//interesting
// array[9][11] = 0;
// array[10][11] = 0;
// array[10][10] = 0;
// array[10][12] = 0;
//phento
// array[9][11] = 0;
// array[10][10] = 0;
// array[10][11] = 0;
// array[10][12] = 0;
// array[11][10] = 0;
//Loaf
// array[10][11] = 0;
// array[10][10] = 0;
// array[9][9] = 0;
// array[8][9] = 0;
// array[7][10] = 0;
// array[8][11] = 0;
// array[9][12] = 0;
//Block-Laying Switch Engine
array[11+20][11+20] = 0;
array[10+20][11+20] = 0;
array[10+20][10+20] = 0;
array[10+20][12+20] = 0;
array[8+20][11+20] = 0;
array[8+20][12+20] = 0;
array[8+20][13+20] = 0;
array[6+20][14+20] = 0;
array[6+20][15+20] = 0;
array[4+20][15+20] = 0;
}
function draw() {
background(220);
let aliveGen = [];
let deadGen = [];
for(var i = 0; i < rows; i++){
for(var j = 0; j < cols; j++){
let liveNeighbors = 0;
let alive;
noStroke();
//stroke(255);
//fill(array[i][j]);
//rect(i * scl,j * scl,scl,scl);
if(array[i][j] == 0){
alive = true;
fill(random(255),random(255),random(255));
ellipse(i * scl,j * scl,scl,scl);
}else{
alive = false;
}
if(i>0 && i<rows-1 && j>0 && j<cols-1){
for(let iN = i - 1; iN <= i+1; iN++){
for(let jN = j -1; jN <= j+1; jN++){
if(!(iN == i && jN == j)){
if(array[iN][jN] == 0){
liveNeighbors++;
}
}
}
}
}
if(!pause){
if(alive){
if(liveNeighbors < 2){
//dies from under population
deadGen.push(createVector(i,j));
//array[i][j] = 255;
}
if(liveNeighbors > 3){
//dies from over population
deadGen.push(createVector(i,j));
//array[i][j] = 255;
}
}else{
if(liveNeighbors == 3){
//alive from reproduction
aliveGen.push(createVector(i,j));
//array[i][j] = 0;
}
}
}
}
}
for(let d of deadGen){
array[d.x][d.y] = 255;
}
for(let a of aliveGen){
array[a.x][a.y] = 0;
}
}