Blame lamps.c

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