Your browser does not support the canvas tag.

previous        Show / Hide Source        Download        next
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);
}