/* This sketch demonstrates toggling of a Boolean variable to allow the user to switch between two views with a mouse click. Processing Sketch by Michael Goldwasser */int W = 400; // actual width of canvas boolean daytime = true; color nightsky = color(25, 25, 112); color daysky = color(135, 206, 235); float scale = W/300.0; // we will write to hypothetical canvas with width 300 void setup() { size(W, int(200*scale)); drawDaytime(); // start with daytime scene before first mouse click } void draw() { // nothing done here. All drawing done in response to mouse press } void mousePressed() { if (daytime) { daytime = false; drawNighttime(); } else { daytime = true; drawDaytime(); } } void drawDaytime() { background(daysky); // sun noStroke(); fill(255, 255, 0); ellipse(scale*250, scale*50, scale*30, scale*30); // sunrays strokeWeight(3*scale); stroke(255, 255, 0); line(scale*230, scale*70, scale*215, scale*85); line(scale*270, scale*70, scale*285, scale*85); line(scale*270, scale*30, scale*285, scale*15); line(scale*230, scale*30, scale*215, scale*15); strokeWeight(1); drawCommon(); } void drawNighttime() { background(nightsky); // draw a skyfull of stars that twinkle with each draw stroke(255); strokeWeight(scale); for (int j=0; j < 100; j++) { point(random(300*scale), random(110*scale)); } // moon noStroke(); fill(180, 200, 220); ellipse(scale*250, scale*50, scale*30, scale*30); fill(nightsky); ellipse(scale*260, scale*50, scale*30, scale*30); // mask to leave cresent shape drawCommon(); // include the common stuff } // this includes all of the stuff that is common to day and night void drawCommon() { // grass fill(0, 255, 0); stroke(0, 255, 0); strokeWeight(1); rect(0, scale*120, scale*300, scale*80); // tree stroke(0); fill(0, 100, 0); triangle(scale*50, scale*80, scale*30, scale*140, scale*70, scale*140); // house facade fill(255); rect(scale*110, scale*100, scale*60, scale*60); // house roof fill(127); quad(scale*105, scale*105, scale*175, scale*105, scale*170, scale*85, scale*110, scale*85); // chimney stroke(255, 0, 0); fill(255, 0, 0); rect(scale*148, scale*72, scale*15, scale*28); // window fill(0); strokeWeight(2*scale); rect(scale*123, scale*110, scale*15, scale*20); }