void setup()
{
//set screen size
size(400, 400);
//no outlines
noStroke();
}
//looping function at framerate
void draw()
{
//blue sky
background(107, 177, 211);
//clouds white and semi-transparent
fill(255, 100);
//clouds move left to right with time
rect(0 + frameCount / 5.5, 64, 80, 32, 20);
fill(255, 60);
rect(110 + frameCount / 5.5, 15, 48, 32, 18);
fill(255, 120);
rect(135 + frameCount / 5.5, 40, 120, 45, 18);
fill(255, 90);
rect(-250 + frameCount / 5.5, 90, 180, 75, 23);
fill(255, 80);
rect(-550 + frameCount / 5.5, 30, 200, 85, 23);
//ground
fill(50, 98, 19);
rect(0, 300, 400, 200);
//tree
fill(116, 64, 21);
triangle(128, 384, 176, 384, 176, 368);
triangle(176, 384, 176, 400, 192, 384);
triangle(208, 384, 224, 384, 216, 400);
triangle(224, 384, 224, 368, 256, 384);
triangle(176, 368, 224, 368, 200, 288);
triangle(200, 320, 176, 240, 224, 240);
triangle(176, 240, 144, 208, 176, 224);
triangle(224, 240, 224, 224, 256, 224);
triangle(240, 224, 256, 224, 272, 240);
triangle(224, 224, 240, 224, 240, 208);
triangle(240, 224, 256, 224, 288, 192);
triangle(288, 192, 288, 208, 256, 224);
//tree branches move with mouseX for wind
triangle(176, 224, 176, 192, 192 + mouseX * 0.05, 224);
triangle(176, 208, 176, 192, 144 + mouseX * 0.03, 176);
triangle(176, 192, 160, 160, 144 + mouseX * 0.05, 160);
triangle(192, 224, 224, 224, 224, 192);
triangle(224, 192, 224, 208, 240, 176);
triangle(224, 208, 240, 176, 256 + mouseX * 0.05, 160);
triangle(224, 192, 240, 176, 240 + mouseX * 0.03, 144);
triangle(240, 160, 256, 144, 288 + mouseX * 0.05, 128);
triangle(288, 208, 288, 192, 320 + mouseX * 0.03, 160);
triangle(256, 224, 272, 216, 320 + mouseX * 0.05, 216);
triangle(288, 192, 288, 200, 336 + mouseX * 0.03, 192);
triangle(176, 240, 160, 224, 96 + mouseX * 0.05, 224);
triangle(128, 224, 144, 224, 112 + mouseX * 0.03, 208);
triangle(144, 208, 144, 192, 80 + mouseX * 0.05, 176);
triangle(144, 208, 144, 192, 176 + mouseX * 0.05, 240);
triangle(128, 192, 136, 192, 96 + mouseX * 0.03, 128);
triangle(160, 192, 176, 192, 144 + mouseX * 0.05, 96);
triangle(160, 192, 176, 192, 192 + mouseX * 0.03, 112);
triangle(176, 176, 184, 160, 208 + mouseX * 0.05, 144);
triangle(240, 160, 240, 144, 288 + mouseX * 0.03, 112);
triangle(240, 144, 240, 128, 272 + mouseX * 0.05, 64);
triangle(240, 144, 240, 128, 256 + mouseX * 0.03, 144);
triangle(240, 144, 240, 128, 224 + mouseX * 0.05, 96);
triangle(160, 144, 144, 144, 160 + mouseX * 0.05, 96);
rect(176, 368, 48, 16);
rect(192, 272, 16, 48);
rect(176, 224, 48, 16);
//leaf colour changes from green to fall colours with mouseY
fill(41 + mouseY / 4., 139, 35);
//leaves grow with increasing mouseY
//leaves move right to left with mouseX for wind
ellipse(96 + mouseX * 0.03, 224, mouseY / 14., mouseY / 45.);
ellipse(112 + mouseX * 0.02, 208, mouseY / 16., mouseY / 50.);
fill(41 + mouseY / 3., 139, 35);
ellipse(80 + mouseX * 0.04, 176, mouseY / 13., mouseY / 42.);
ellipse(96 + mouseX * 0.02, 128, mouseY / 18., mouseY / 53.);
fill(41 + mouseY / 4., 139, 35 - mouseY);
ellipse(144 + mouseX * 0.05, 96, mouseY / 16., mouseY / 50.);
ellipse(144 + mouseX * 0.02, 144, mouseY / 16., mouseY / 50.);
ellipse(144 + mouseX * 0.03, 160, mouseY / 19., mouseY / 55.);
fill(41 + mouseY / 6., 139 - mouseY/13, 35);
ellipse(144 + mouseX * 0.02, 176, mouseY / 15., mouseY / 41.);
ellipse(160 + mouseX * 0.04, 96, mouseY / 16., mouseY / 50.);
ellipse(192 + mouseX * 0.02, 112, mouseY / 16., mouseY / 50.);
ellipse(208 + mouseX * 0.02, 144, mouseY / 21., mouseY / 57.);
fill(41 + mouseY / 6., 139 - mouseY/13, 35 - mouseY / 8);
ellipse(224 + mouseX * 0.03, 96, mouseY / 16., mouseY / 50.);
ellipse(272 + mouseX * 0.02, 80, mouseY / 16., mouseY / 50.);
ellipse(288 + mouseX * 0.05, 112, mouseY / 16., mouseY / 50.);
ellipse(288 + mouseX * 0.02, 128, mouseY / 13., mouseY / 45.);
fill(41 + mouseY / 4., 139, 35);
ellipse(256 + mouseX * 0.03, 160, mouseY / 16., mouseY / 50.);
ellipse(240 + mouseX * 0.02, 208, mouseY / 22., mouseY / 58.);
ellipse(320 + mouseX * 0.04, 160, mouseY / 16., mouseY / 50.);
fill(41 + mouseY / 3., 139, 35 - mouseY / 6);
ellipse(336 + mouseX * 0.02, 192, mouseY / 12., mouseY / 41.);
ellipse(320 + mouseX * 0.03, 216, mouseY / 16., mouseY / 50.);
ellipse(272 + mouseX * 0.02, 240, mouseY / 24., mouseY / 58.);
}