SketchBook

KADAI

var cell_size = 9;
var SIZE = 500;

function setup() {
createCanvas(SIZE, SIZE);3
stroke(10, 5, 5);

numX = width / cell_size;
numY = height / cell_size;

cells = [];
for (var i = 0; i < numX; i++) {
cells[i] = [];
for (var j = 0; j < numY; j++) {
cells[i][j] = floor(random() * 2);
}
}

initialize();
generation = 5;

drawCells();
}

function draw() {
rule();
generation++;
drawCells();
}

var cells;
var numX;
var numY;
var generation;

function initialize() {

for (var i = 0; i < numX; i++) {
for (var j = 0; j < numY; j++) {
cells[i][j] = floor(random() * 99);
}
}

}

function drawCells() {
for (var i = 0; i < numX; i++) {
for (var j = 0; j < numY; j++) {
if (cells[i][j] == 1) fill(0, 200, 500);
if (cells[i][j] == 0) fill(400, 500, 1000);
rect(i * cell_size, j * cell_size, cell_size, cell_size);
}
}
}

function rule() {
var temp = [];

for (var i = 0; i < numX; i++) {
temp[i] = [];
for (var j = 0; j < numX; j++) {
temp[i][j] = 0;
}
}

for (var i = 1; i < numX - 1; i++) {
for (var j = 1; j < numY - 1; j++) {
var neighbors = 0;

if (cells[i - 1][j - 1] == 1) neighbors++;
if (cells[i ][j - 1] == 1) neighbors++;
if (cells[i + 1][j - 1] == 1) neighbors++;
if (cells[i - 1][j ] == 1) neighbors++;
if (cells[i + 1][j ] == 1) neighbors++;
if (cells[i - 1][j + 1] == 1) neighbors++;
if (cells[i ][j + 1] == 1) neighbors++;
if (cells[i + 1][j + 1] == 1) neighbors++;

if (cells[i][j] == 1) {
if (neighbors == 0 || neighbors == 1) temp[i][j] = 0;
if (neighbors == 2 || neighbors == 3) temp[i][j] = 1;
if (neighbors >= 5) temp[i][j] = 3;
}

if (cells[i][j] == 0) {
if (neighbors == 1) temp[i][j] = 1;
}

}
}

for (var i = 0; i < numX; i++) {
for (var j = 0; j < numY; j++) {
cells[i][j] = temp[i][j];
}
}

}