xxxxxxxxxx
153
// Array of flowers.
let flowers = [];
// Array of butterflies
let butterflies = [];
function setup() {
createCanvas(400, 400);
// Generate 20 flowers.
flowerPower();
// Generate 5 butterflies.
butterflyGarden(5);
}
function draw() {
background('lightblue');
// Call your new function.
updateAndDrawFlowers();
updateAndDrawButterflies();
}
function updateAndDrawButterflies() {
for (let butterfly of butterflies) {
// Draw the butterfly.
drawButterfly(butterfly);
// Make the butterfly flutter around.
butterfly.x += random(-10, 10);
butterfly.y += random(-10, 10);
}
}
function butterflyGarden(numButterfly) {
for(let i = 0; i < numButterfly; i+=1){
// Create a flower in a random location.
let butterfly1 = createButterfly();
// Add the flower to the flowers array.
butterflies.push(butterfly1);
}
}
function createButterfly() {
let butterfly = {
x: random(10, 390),
y: random(10, 390),
emoji: '🦋',
size: random(10, 50)
}
return butterfly;
}
function drawButterfly(butterfly) {
textSize(butterfly.size);
text(butterfly.emoji, butterfly.x, butterfly.y);
}
function mousePressed() {
let flower = createFlower();
// reassign x to be mouseX
flower.x = mouseX + random(-30, 30);
// reassign y to be mouseY
flower.y = mouseY + random(-30, 30) ;
// add the flower to the flowers array
flowers.push(flower);
}
function updateAndDrawFlowers() {
for (let flower of flowers) {
// Draw the flower.
drawFlower(flower);
// Apply wilting effect by reducing size by 1%
flower.size *= 0.99;
// Reduce lifespan
flower.lifespan -= 1;
if (flower.lifespan <= 0) {
// Save index of the flower.
let i = flowers.indexOf(flower);
// Remove wilted flower.
flowers.splice(i, 1);
}
}
}
// Function to create 20 flowers.
function flowerPower(){
for(let i = 0; i < 20; i+=1){
// Create a flower in a random location.
let flower1 = createFlower();
// Add the flower to the flowers array.
flowers.push(flower1);
}
}
function createFlower() {
let flower = {
x: random(20,380),
y: random(20,380),
size: random(20, 75),
lifespan: random(255,300),
color: color(random(255), random(255), random(255))
};
return flower;
}
function drawFlower(flower) {
// Draw stem.
noStroke();
fill(0, 230, 0);
strokeWeight(2);
rect(flower.x-flower.size/20, flower.y, flower.size/10, height-flower.y);
// Draw petals.
stroke(flower.color);
strokeWeight(8);
let petalOffset = flower.size/3;
line(flower.x - petalOffset, flower.y - petalOffset, flower.x + petalOffset, flower.y + petalOffset);
line(flower.x - petalOffset, flower.y + petalOffset, flower.x + petalOffset, flower.y - petalOffset);
noStroke();
fill(flower.color);
ellipse(flower.x, flower.y, flower.size/2, flower.size);
ellipse(flower.x, flower.y, flower.size, flower.size/2);
// Draw an orange center.
fill(250, 181, 111);
circle(flower.x, flower.y, flower.size/2);
}