void setup() {
size(400, 400);
}
void draw() {
noStroke();
background(127, 192, 216);
fill(137, 227, 78);
ellipse(200, 400, 600, 300);
rectMode(CENTER);
//shadow
noStroke();
fill(55, 55, 55, 90);
ellipse(200, 290, 50+sin(millis()/100) *2, 10);
//hair
noStroke();
fill(152, 119, 66);
ellipse(200, 220+sin(millis()/100) *2, 60+sin(millis()/100), 100);
//face and neck
fill(245, 220, 220);
ellipse(200, 200+sin(millis()/100) *2, 40, 40);
rect(200, 230, 10, 40);
//pants
fill(180, 171, 140);
rect(200, 267+sin(millis()/100)*2, 30, 20, 5);
triangle(185, 260+sin(millis()/100)*2, 215, 260+sin(millis()/100)*2, 200, 280+sin(millis()/100)*2);
//shirt
fill(183, 245, 194);
rect(200, 243+sin(millis()/100) *2, 30, 40, 5);
//eyes
fill(53, 105, 129);
ellipse(190, 195+sin(millis()/100) *2, 7, 10);
ellipse(210, 195+sin(millis()/100) *2, 7, 10);
//darkness
fill(0, 0, 0, mouseY/2);
rect(200, 200, 400, 400);
//stars
fill(249, 252, 156, mouseY*.75);
noStroke();
ellipse(60.5, 10.5, 4, 4);
ellipse(128, 15, 4, 4);
ellipse(266, 10, 4, 4);
ellipse(10, 17, 4, 4);
ellipse(213, 9, 4, 4);
ellipse(289, 7, 4, 4);
ellipse(375, 12, 4, 4);
ellipse(392, 10, 4, 4);
ellipse(44, 4, 4, 4);
ellipse(64, 7, 4, 4);
ellipse(350, 10, 4, 4);
ellipse(246, 18, 4, 4);
ellipse(145, 26, 4, 4);
ellipse(100, 21, 4, 4);
ellipse(240, 12, 4, 4);
ellipse(197, 21, 4, 4);
ellipse(164, 5, 4, 4);
ellipse(20, 20, 4, 4);
ellipse(362, 15, 4, 4);
ellipse(330, 31, 4, 4);
//fireflies (bottom rows)
fill(249, 252, 156, mouseY*2);
ellipse(50, 370, 5+sin(millis()/100)*2, 5+sin(millis()/100)*2);
ellipse(100, 340, 5+sin(millis()/100)*2, 5+sin(millis()/100)*2);
ellipse(150, 370, 5+sin(millis()/100)*2, 5+sin(millis()/100)*2);
ellipse(200, 340, 5+sin(millis()/100)*2, 5+sin(millis()/100)*2);
ellipse(250, 370, 5+sin(millis()/100)*2, 5+sin(millis()/100)*2);
ellipse(300, 340, 5+sin(millis()/100)*2, 5+sin(millis()/100)*2);
ellipse(350, 370, 5+sin(millis()/100)*2, 5+sin(millis()/100)*2);
//(top rows)
ellipse(50, 310, 5+sin(millis()/100)*2, 5+sin(millis()/100)*2);
ellipse(100, 280, 5+sin(millis()/100)*2, 5+sin(millis()/100)*2);
ellipse(150, 310, 5+sin(millis()/100)*2, 5+sin(millis()/100)*2);
ellipse(250, 310, 5+sin(millis()/100)*2, 5+sin(millis()/100)*2);
ellipse(300, 280, 5+sin(millis()/100)*2, 5+sin(millis()/100)*2);
ellipse(350, 310, 5+sin(millis()/100)*2, 5+sin(millis()/100)*2);
//firefly halos (bottom rows)
fill(249, 252, 156, mouseY*.4);
ellipse(50, 370, 15+sin(millis()/100)*2, 15+sin(millis()/100)*2);
ellipse(100, 340, 15+sin(millis()/100)*2, 15+sin(millis()/100)*2);
ellipse(150, 370, 15+sin(millis()/100)*2, 15+sin(millis()/100)*2);
ellipse(200, 340, 15+sin(millis()/100)*2, 15+sin(millis()/100)*2);
ellipse(250, 370, 15+sin(millis()/100)*2, 15+sin(millis()/100)*2);
ellipse(300, 340, 15+sin(millis()/100)*2, 15+sin(millis()/100)*2);
ellipse(350, 370, 15+sin(millis()/100)*2, 15+sin(millis()/100)*2);
//(top rows)
ellipse(50, 310, 15+sin(millis()/100)*2, 15+sin(millis()/100)*2);
ellipse(100, 280, 15+sin(millis()/100)*2, 15+sin(millis()/100)*2);
ellipse(150, 310, 15+sin(millis()/100)*2, 15+sin(millis()/100)*2);
ellipse(250, 310, 15+sin(millis()/100)*2, 15+sin(millis()/100)*2);
ellipse(300, 280, 15+sin(millis()/100)*2, 15+sin(millis()/100)*2);
ellipse(350, 310, 15+sin(millis()/100)*2, 15+sin(millis()/100)*2);
//moon/sun
fill(248, 250, mouseY/3);
ellipse(mouseX, mouseY/3, 30, 30);
fill(39, 62, 70, mouseY/2.5);
ellipse(mouseX+5.1, mouseY/3, 20, 20);
}