boolean world[][]; void setup() { size(200, 200); frameRate(10); world = new boolean[width][height]; randomize(); } void draw() { loadPixels(); for (int i = 0; i < width; i++) { for (int j = 0; j < height; j++) { if (world[i][j]) pixels[j*width+i] = color(255); else pixels[j*width+i] = color(0); } } updatePixels(); for (int i = 0; i < width; i++) { for (int j = 0; j < height; j++) { int neighbors = livingNeighbors(i, j); if (world[i][j] == false && neighbors == 3) { world[i][j] = true; } if (world[i][j] == true && (neighbors < 2 || neighbors > 3)) { world[i][j] = false; } } } } void mousePressed() { randomize(); } void randomize() { for (int i = 0; i < width; i++) { for (int j = 0; j < height; j++) { if (random(1) < 0.5) { world[i][j] = true; } } } } int livingNeighbors(int px, int py) { int sum = 0; for (int i = -1; i < 2; i++) { for (int j = -1; j < 2; j++) { if (i == 0 && j == 0) continue; if (i+px < 0 || i+px >= width) continue; if (j+py < 0 || j+py >= height) continue; if (green(pixels[(py+j)*width + (px+i)]) > 0) { sum += 1; } } } return sum; }