boolean [] [] cellFull = new boolean[10][10];
int [] [] cellArray = new int[numCellsY] [numCellsX];
int [] [] colours = {{196, 63, 63}, {59, 120, 189}, {255, 243, 64}, {85, 176, 57}, {255, 255, 255}};
for (int i = 0; i < numCellsY; i++) {
for (int j = 0; j < numCellsX; j++) {
int shapeNum = (int) random(0, 15);
cellArray[i][j] = shapeNum;
translate(j * cellDim + cellDim/2, i * cellDim + cellDim/2);
rotate((int) (random(0, 4)) * PI/2);
int currentCellY = (int) (mouseY / cellDim);
int currentCellX = (int) (mouseX / cellDim);
int newShape = (cellArray[currentCellY][currentCellX] + (int) (random(1, 15))) % 15;
cellArray[currentCellY][currentCellX] = newShape;
translate(currentCellX * cellDim + cellDim/2, currentCellY * cellDim + cellDim/2);
rotate((int) (random(0, 4)) * PI/2);
rect(-cellDim/2, -cellDim/2, cellDim, cellDim);
void drawShape(int shapeNum)
line(-cellDim/2, 0, cellDim/2, 0);
line(0, -cellDim/2, 0, cellDim/2);
line(cellDim/2 - margin, 0, cellDim/2, 0);
line(-cellDim/2 + margin, 0, -cellDim/2, 0);
line(0, cellDim/2 - margin, 0, cellDim/2);
line(0, -cellDim/2 + margin, 0, -cellDim/2);
int colNum = (int) (random(0, numColours));
fill(colours[colNum][0], colours[colNum][1], colours[colNum][2]);
float flipCoin = random(0, 10);
ellipse(0, 0, smallCirc, smallCirc);
ellipse(0, 0, cellDim/2 - margin, cellDim/2 - margin);
ellipse(0, 0, cellDim/2 - margin, cellDim/2 - margin);
arc(0, 0, cellDim/2 - margin, cellDim/2 - margin, 0, 3 * PI/2);
arc(0, 0, cellDim/2 - margin, cellDim/2 - margin, -PI/2, PI/2);
line(0, 0, -cellDim/2, 0);
ellipse(0, 0, smallCirc, smallCirc);
rect(-cellDim/2 + margin, -cellDim/2 + margin, cellDim - 2 * margin, cellDim - 2 * margin);
rect(-cellDim/2 + margin, -cellDim/2 + margin, cellDim - 2 * margin, cellDim - 2 * margin);
line(-cellDim/2 + margin, -cellDim/2 + margin, cellDim/2 - margin, -cellDim/2 + margin);
line(-cellDim/2 + margin, -cellDim/2 + margin, -cellDim/2 + margin, cellDim/2 - margin);
line(cellDim/2 - margin, -cellDim/2 + margin, cellDim/2 - margin, 0);
line(-cellDim/2 + margin, cellDim/2 - margin, 0, cellDim/2 - margin);
line(-cellDim/2 + margin, -cellDim/2 + margin, 0, -cellDim/2 + margin);
line(-cellDim/2 + margin, -cellDim/2 + margin, -cellDim/2 + margin, cellDim/2 - margin);
line(-cellDim/2 + margin, cellDim/2 - margin, 0, cellDim/2 - margin);
line(0, 0, cellDim/2, 0);
ellipse(0, 0, smallCirc, smallCirc);
line(0, -cellDim/2 + margin, cellDim/2 - margin, 0);
line(0, -cellDim/2 + margin, -cellDim/2 + margin, 0);
line(0, cellDim/2 - margin, cellDim/2 - margin, 0);
line(0, cellDim/2 - margin, -cellDim/2 + margin, 0);
line(0, -cellDim/2 + margin, cellDim/2 - margin, 0);
line(0, -cellDim/2 + margin, -cellDim/2 + margin, 0);
line(0, cellDim/2 - margin, cellDim/2 - margin, 0);
line(0, cellDim/2 - margin, -cellDim/2 + margin, 0);
line(0, -cellDim/2 + margin, cellDim/2 - margin, 0);
line(0, -cellDim/2 + margin, -cellDim/2 + margin, 0);
line(0, cellDim/2 - margin, -cellDim/2 + margin, 0);
line(0, -cellDim/2 + margin, cellDim/2 - margin, 0);
line(0, -cellDim/2 + margin, -cellDim/2 + margin, 0);
line(0, 0, 0, cellDim/2);
ellipse(0, 0, smallCirc, smallCirc);
line(0, -cellDim/2, 0, cellDim/2);
line(-cellDim/2, 0, -cellDim/4, 0);
line(cellDim/2, 0, cellDim/4, 0);
ellipse(-cellDim/4, 0, smallCirc, smallCirc);
ellipse(cellDim/4, 0, smallCirc, smallCirc);
line(0, -cellDim/2, 0, -cellDim/4);
line(0, cellDim/2, 0, cellDim/4);
line(-cellDim/2, 0, -cellDim/4, 0);
line(cellDim/2, 0, cellDim/4, 0);
ellipse(0, cellDim/4, smallCirc, smallCirc);
ellipse(0, -cellDim/4, smallCirc, smallCirc);
ellipse(-cellDim/4, 0, smallCirc, smallCirc);
ellipse(cellDim/4, 0, smallCirc, smallCirc);