PImage pattern; int side = 31; int thickness = 10; Cell[][] grid; void setup(){ size(310,310); frameRate(12); // load qr pattern image pattern = loadImage("qrcode.png"); grid = new Cell[side][side]; for (int i=0; i 0; boolean fixed = green(c) > 0; if (!fixed) state = (random(0,1) > 0.5); grid[i][j] = new Cell(state,fixed); } } noStroke(); } void draw(){ background(0); preProcessGrid(); processGrid(); renderGrid(); } void preProcessGrid(){ for (int i=0; i=side) continue; for (int j=-1; j<=1; j++){ if (((y+j)<0)||(y+j)>=side) continue; if ((i!=0)||(j!=0)){ if (grid[x+i][y+j].isAlive()) n++; } } } return n; } void mousePressed() { for (int i=0; i