xxxxxxxxxx
104
function setup() {
createCanvas(600, 400);
rectMode(CENTER);
noStroke();
allFlowers = []; //array to hold all the flower info (flower objects)
}
function draw() {
background(208, 254, 227);
drawHills()
drawButterfly()
drawFlowers()
}
// This is a class, or things called flowers, that have properties x, y, and size, these are called objects in programing.
// one useful trick is they can be used in arrays to create lists of flowers in this case
class Flower {
constructor(x, y, size) {
this.x = x;
this.y = y;
this.size = size;
}
}
function mouseClicked() {
if (mouseButton === LEFT) {
thisFlower = new Flower(mouseX, mouseY, random(5, sqrt(mouseY)))
}
allFlowers.push(thisFlower) // add it to the array of flowers
}
function drawFlowers() {
for (let i = 0; i < allFlowers.length; i++) {
drawFlower(allFlowers[i])
}
}
// this takes the flower object as a parameter and then can use all the propeties
function drawFlower(flower) {
push();
strokeWeight(3);
stroke(151, 151, 99);
line(flower.x, flower.y, flower.x, flower.y + flower.size * 3);
pop();
fill(201,210,150);
ellipse(flower.x + flower.size * 0.8, flower.y + flower.size *2 ,13,5)
push();
fill(242,210,211,200);
translate(flower.x, flower.y);
noStroke();
for (let i = 0; i < 10; i ++) {
ellipse(0, flower.size, flower.size/2, flower.size*2);
rotate(PI/5);
}
pop();
fill(199,151,151);
circle(flower.x, flower.y, flower.size);
}
function drawButterfly() {
//butterfly
push();
strokeWeight(2);
stroke(50);
line(mouseX+15,mouseY+5,mouseX-10,mouseY-25);
line(mouseX-15,mouseY+5,mouseX+10,mouseY-25);
pop();
fill(252,229,205);
ellipse(mouseX+15,mouseY-5,30,20);
ellipse(mouseX-15,mouseY-5,30,20);
fill(235,240,247);
ellipse(mouseX+15,mouseY-5,23,13);
ellipse(mouseX-15,mouseY-5,23,13);
fill(244,204,204);
ellipse(mouseX+14,mouseY+5,25,15);
ellipse(mouseX-14,mouseY+5,25,15);
fill(217,210,233);
ellipse(mouseX+14,mouseY+5,18,9);
ellipse(mouseX-14,mouseY+5,18,9);
fill(255,229,153);
ellipse(mouseX,mouseY,10,30);
}
function drawHills() {
//hills
fill(119,141,122);
ellipse(200,400,900,500);
fill(165,203,170);
ellipse(450,500,1000,500);
}