Your browser does not support the canvas tag.

previous        Show / Hide Source        Download        next
/* 
"Not So Starry Night" is an outdoor scene depicting a simple 
camp with a lit fire, mountains in the background, and a moon.
Fireflies around the base camp, and clouds moving between mountains
are activated on mouse X movement.

Ruxandra Gogorici
991437860

*/

void setup()
{
  size(400, 400);
  rectMode(CORNERS);
  ellipseMode(CORNERS);
  colorMode(RGB, 255, 255, 255, 100);
}

void draw()
{
  fill(88, 62, 119);
  noStroke();
  rect(0, 0, 400, 400);

  //Mountains & Clouds
  noStroke();
  fill(255, 255, 255, 20);
  ellipseMode(CENTER);
  ellipse(60+mouseX*2, 210, 100, 50);
  ellipse(5+mouseX*1.1, 140, 100, 50);
  ellipse(30+mouseX*1.4, 170, 100, 50);
  
  ellipseMode(CORNERS);
  strokeWeight(3);
  stroke(174, 161, 186);
  fill(202, 192, 211);
  ellipse(270, 90, 600, 900);
  ellipse(-90, 30, 100, 600);
  
  ellipseMode(CORNERS);
  strokeWeight(3);
  stroke(174, 161, 186);
  fill(216, 208, 223);
  ellipse(50, 140, 270, 600);
  
  noStroke();
  fill(255, 255, 255, 20);
  ellipseMode(CENTER);
  ellipse(-200+mouseX*2.2, 260, 200, 100); 
  ellipse(-110+mouseX*1.6, 90, 200, 80);
  
  ellipseMode(CORNERS);
  strokeWeight(3);
  stroke(174, 161, 186);
  fill(225, 219, 231);
  ellipse(200, 190, 400, 600);
  
  //Fire
  noStroke();
  ellipseMode(CENTER);
  fill(232, 107, 5, 30);
  ellipse(195, 350, 20, 40);
  fill(255, 192, 0, 90);
  ellipse(195, 353, 10*sin(frameCount*0.08), 30*sin(frameCount*0.1));
  fill(92, 82, 100);

  ellipseMode(CORNERS);
  ellipse(175, 353, 185, 345);
  rect(180, 355, 210, 345);
  ellipse(205, 345, 215, 355);

  //Tent
  stroke(131, 116, 142);
  fill(141, 126, 153);
  rect(75, 315, 130, 360);

  stroke(162, 148, 174);
  fill(152, 137, 164);
  quad(130, 315, 145, 290, 90, 290, 75, 315);

  stroke(162, 148, 174);
  fill(162, 148, 174);
  rect(130, 315, 160, 360);
  triangle(130, 315, 160, 315, 145, 290);

  //Grass
  stroke(93, 80, 105);
  fill(80, 70, 90);
  ellipse(-500, 350, 600, 500);

  //Fireflies
  ellipseMode(CENTER);
  fill(255, 240, 73);
  stroke(255, 240, 73, 90*sin(pmouseX*0.01));
  ellipse(1, 305, 2, 2);
  ellipse(310, 320, 2, 2);
  ellipse(325, 340, 2, 2);
  ellipse(360, 325, 2, 2);
  ellipse(345, 345, 2, 2);
  ellipse(370, 370, 2, 2);
  ellipse(180, 300, 2, 2);
  stroke(255, 240, 73, 90*sin(pmouseY*0.01));
  ellipse(195, 320, 2, 2);
  ellipse(55, 325, 2, 2);
  ellipse(20, 340, 2, 2);
  ellipse(90, 325, 2, 2);
  ellipse(220, 335, 2, 2);
  ellipse(245, 320, 2, 2);
  ellipse(170, 330, 2, 2);
  stroke(255, 240, 73, 90*sin(mouseX*0.01));
  ellipse(100, 300, 2, 2);
  ellipse(120, 355, 2, 2);
  ellipse(45, 365, 2, 2);
  ellipse(25, 315, 2, 2);
  ellipse(300, 335, 2, 2);
  ellipse(40, 335, 2, 2);
  ellipse(50, 280, 2, 2);
  ellipse(65, 345, 2, 2);
  ellipse(125, 340, 2, 2);
  ellipse(240, 350, 2, 2);
  ellipse(270, 335, 2, 2);
  stroke(255, 240, 73, 90*sin(mouseY*0.01));
  ellipse(305, 355, 2, 2);
  ellipse(275, 295, 2, 2);
  ellipse(280, 315, 2, 2);
  ellipse(55, 305, 2, 2);
  ellipse(365, 335, 2, 2);
  ellipse(390, 340, 2, 2);
  ellipse(135, 305, 2, 2);
  ellipse(135, 305, 2, 2);
  ellipse(385, 355, 2, 2);

  //Moon
  ellipseMode(CORNERS);
  fill(252, 248, 255);
  stroke(222, 208, 222);
  ellipse(245, 25, 315, 95);

  ellipseMode(CENTER);
  noStroke();
  fill(255, 240, 85, 10);
  ellipse(265, 60, 80*sin(frameCount*0.01), 80*sin(frameCount*0.01));
  ellipse(295, 45, 80*sin(frameCount*0.015), 80*sin(frameCount*0.015));
  ellipse(290, 75, 80*sin(frameCount*0.02), 80*sin(frameCount*0.02));
}