let columns, rows, states, cells, button;
columns = floor(width / 2);
rows = floor(height / 2);
states = [current, next];
cells = new Array(columns);
for (let x = 0; x < columns; x++) {
cells[x] = new Array(rows);
for (let x = 0; x < columns; x++) {
for (let y = 0; y < rows; y++) {
cells[x][y] = new Array(states);
let cAlive = color((255));
let cDead = color("green");
for (let x = 0; x < columns; x++) {
for (let y = 0; y < rows; y++) {
if ((cells[x][y][current] == alive)) {
rect(x * w, y * w, w, w);
for (let x = 0; x < columns; x++) {
for (let y = 0; y < rows; y++) {
cells[x][y][current] = floor(random(2));
for (let x = 0; x < columns; x++) {
for (let y = 0; y < rows; y++) {
let neighbors = cells[(x + 1) % columns][y][0] +
cells[x][(y + 1) % rows][0] +
cells[(x + columns - 1) % columns][y][0] +
cells[x][(y + rows - 1) % rows][0] +
cells[(x + 1) % columns][(y + 1) % rows][0] +
cells[(x + columns - 1) % columns][(y + 1) % rows][0] +
cells[(x + columns - 1) % columns][(y + rows - 1) % rows][0] +
cells[(x + 1) % columns][(y + rows - 1) % rows][0];
if ((cells[x][y][current] == alive) && (neighbors < under)) {
cells[x][y][next] = dead;
} else if ((cells[x][y][current] == alive) && (neighbors > over)) {
cells[x][y][next] = dead;
} else if ((cells[x][y][current] == dead) && (neighbors == rep)) {
cells[x][y][next] = alive;
cells[x][y][next] = cells[x][y][current];
for (let i = 0; i < columns; i++) {
for (let j = 0; j < rows; j++) {
cells[i][j][current] = cells[i][j][next]