/*
"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));
}