|
|
7a8a06 |
|
|
|
7a8a06 |
#include <helianthus.h></helianthus.h>
|
|
|
7a8a06 |
|
|
|
7a8a06 |
#define SIZE 5
|
|
|
7a8a06 |
#define LAMPSIZE 100
|
|
|
7a8a06 |
|
|
|
7a8a06 |
|
|
|
7a8a06 |
int lamps[SIZE][SIZE];
|
|
|
7a8a06 |
|
|
|
7a8a06 |
|
|
|
7a8a06 |
void toggle(int i, int j) {
|
|
|
7a8a06 |
if (i < 0 || j < 0 || i >= SIZE || j >= SIZE) return;
|
|
|
7a8a06 |
if (i > 0 ) lamps[i-1][j] = !lamps[i-1][j];
|
|
|
7a8a06 |
if (i < SIZE-1) lamps[i+1][j] = !lamps[i+1][j];
|
|
|
7a8a06 |
if (j > 0 ) lamps[i][j-1] = !lamps[i][j-1];
|
|
|
7a8a06 |
if (j < SIZE-1) lamps[i][j+1] = !lamps[i][j+1];
|
|
|
7a8a06 |
lamps[i][j] = !lamps[i][j];
|
|
|
7a8a06 |
}
|
|
|
7a8a06 |
|
|
|
7a8a06 |
|
|
|
7a8a06 |
void toggleRandom() {
|
|
|
7a8a06 |
toggle(randomNumber(0, SIZE-1), randomNumber(0, SIZE-1));
|
|
|
7a8a06 |
}
|
|
|
7a8a06 |
|
|
|
7a8a06 |
|
|
|
7a8a06 |
void init() {
|
|
|
7a8a06 |
background(colorByName("black"));
|
|
|
7a8a06 |
for(int i = 0; i < SIZE*SIZE; ++i)
|
|
|
7a8a06 |
toggleRandom();
|
|
|
7a8a06 |
}
|
|
|
7a8a06 |
|
|
|
7a8a06 |
|
|
|
7a8a06 |
void draw() {
|
|
|
7a8a06 |
saveState();
|
|
|
7a8a06 |
zoom(LAMPSIZE);
|
|
|
7a8a06 |
|
|
|
7a8a06 |
strokeWidth(0.1);
|
|
|
7a8a06 |
stroke( colorByRGB(0.25, 0.25, 0.25) );
|
|
|
7a8a06 |
for(int i = 0; i < SIZE; ++i) {
|
|
|
7a8a06 |
for(int j = 0; j < SIZE; ++j) {
|
|
|
7a8a06 |
fill(colorByName( lamps[i][j] ? "yellow" : "black" ));
|
|
|
7a8a06 |
ellipse(j + 0.2, i + 0.2, 0.6, 0.6);
|
|
|
7a8a06 |
}
|
|
|
7a8a06 |
}
|
|
|
7a8a06 |
|
|
|
7a8a06 |
if (mouseWentDown("left"))
|
|
|
ef1455 |
toggle((int)mouseTransformedY(), (int)mouseTransformedX());
|
|
|
7a8a06 |
if (keyWentDown("space"))
|
|
|
7a8a06 |
toggleRandom();
|
|
|
7a8a06 |
|
|
|
7a8a06 |
restoreState();
|
|
|
7a8a06 |
}
|
|
|
7a8a06 |
|
|
|
7a8a06 |
|
|
|
7a8a06 |
int main() {
|
|
|
ef1455 |
windowSetTitle("Lamps");
|
|
|
ef1455 |
windowSetSize(SIZE*LAMPSIZE, SIZE*LAMPSIZE);
|
|
|
ef1455 |
windowSetVariableFrameRate();
|
|
|
ef1455 |
windowSetInit(&init);
|
|
|
ef1455 |
windowSetDraw(&draw);
|
|
|
ef1455 |
windowRun();
|
|
|
7a8a06 |
return 0;
|
|
|
7a8a06 |
}
|
|
|
7a8a06 |
|