let cnt=0,n=256;
let dArray=[];
function setup(){
createCanvas(600,600);
r=20;
co=floor(width/(2*r));
ro=floor(height/(2*r));
randomDead();
frameRate(1);
background(40);
}
function draw(){
scale(0.6,0.6)
stroke(255);
translate(width/3+40,width/2-25);
rotate(PI/6);
cnt=0;
for (let j=0;j<=co;j++){//columns
for (let i=ro;i>=0;i--){//rows
x=r*j*1.5;
y=-r*12+r*sqrt(3)*i+r*j/1.15;
if(dArray[cnt]===0){
fill(0,0,0);
}
if(dArray[cnt]===1){
fill(0,i*20,200+j*2)
}
stroke(0)
polygon(x,y,r,6);
fill(20)
cnt=cnt+1
}
}
switchDead()
}
function polygon(x, y, radius, npoints) {
let angle = TWO_PI / npoints;
beginShape();
for (let a = 0; a < TWO_PI; a += angle) {
let sx = x + cos(a) * radius;
let sy = y + sin(a) * radius;
vertex(sx, sy);
}
endShape(CLOSE);
}
function randomDead(){
n = (co+1)*(ro+1);
dArray=[]
for(let i=0;i<n;i++){
tmp=random(-1,1);
if(tmp<=0){
dArray[i]=1;
}
if(tmp>0){
dArray[i]=0;
}
}
}
function switchDead(){
tmp =0
for(let k=0;k<n;k++){
if(dArray[k]===true){
tmp=tmp+1;
}
}
if(tmp===0){
}
cnt1=0
for (let j=0;j<=co;j++){//columns
for (let i=ro;i>=0;i--){//rows
if(j!=0&&i!=0&&i!=ro&&j!=co){
sumd = dArray[cnt1+co+1]+dArray[cnt1+co+2]+dArray[cnt1-co-1]+dArray[cnt1-co-2]+dArray[cnt1+1]+dArray[cnt1-1];
print(cnt1,sumd)
}
if(i===0&&j!=0&&j!=co){
sumd = dArray[cnt1+co+1]+dArray[cnt1-co-1]+dArray[cnt1-co-2]+dArray[cnt1-1];
}
if(i===15&&j!=0&&j!=co){
sumd = dArray[cnt1+co+1]+dArray[cnt1-co-1]+dArray[cnt1+co+2]+dArray[cnt1+1];
}
if(j===15&&i!=0&&i!=co){
sumd = dArray[cnt1-co-1]+dArray[cnt1-co-2]+dArray[cnt1+1]+dArray[cnt1-1];
}
if(j===0&&i!=0&&i!=co){
sumd = dArray[cnt1+co+1]+dArray[cnt1+co+2]+dArray[cnt1+1]+dArray[cnt1-1];
}
if(i===0&&j===0){
sumd = dArray[cnt1+co+1]+dArray[cnt1+1];
}
if(i===0&&j===15){
sumd = dArray[cnt1-1]+dArray[cnt1-co-1]+dArray[cnt1-co-2];
}
if(i===15&&j===0){
sumd = dArray[cnt1+1]+dArray[cnt1+co+1]+dArray[cnt1+co+2];
}
if(i===15&&j===15){
sumd = dArray[cnt1+1]+dArray[cnt1-co-1];
}
if(dArray[cnt1]===1 && (sumd===6|| sumd===5||sumd===1|| sumd===0)){
dArray[cnt1]=0;
}else if(dArray[cnt1]===0 && (sumd===4|| sumd===3)){
dArray[cnt1]=1;
}
cnt1=cnt1+1
}
}
}
function mousePressed(){
randomDead();
}