Brendan Hsu's Generative Flower

Code

var scrollSpeed = 2;
 
function buildArray (n, fillFunction) {
  let outputArray = [];
  for (let i = 0; i < n; i++) {
    outputArray.push(fillFunction(i))
  }
  return outputArray 
}
 
 
function setup() {
  // Create the canvas
  createCanvas(1700,800);
   x1 = 0;
  x2 = width;
    noLoop()
 
}
 
function randomRange (min, max) {
  return min + ((max-min) * Math.random())
}
 
 
class Flower {
  constructor(x,y,size,group){
    this.x = x;
    this.y = y;
    this.size=size;
    this.group=group
 
  }
  draw(){
     // A design for a simple flower
  translate(this.x, this.y);
    //scale
    scale(this.size);
 
 // noStroke();
    stroke("blue")
 
    for (var i = 0; i < 10; i ++) {
    if (this.group==1){
    fill("White")}
       if (this.group==2){
    fill(color(random(0,255),random(0,100),random(0,999)));}
    ellipse(50, 80, 20, 80);
    rotate(PI/5);
      circle(50, 50, 50);
  }
    resetMatrix();
  }
}   
 
let myFlower = new Flower ();
 
function flowerRows(noOfRows,rowLength,size,x,y,group,width){
return buildArray(noOfRows,i2=> buildArray(rowLength,i => new Flower(randomRange(x+0, x+width),y+50*(i2+1),size,group)))
}
 
let myFlower4=flowerRows(20,20,0.15,40,0,1,400)
 
let myFlower5=flowerRows(20,5,0.5,469,0,2,1200)
 
 
const myFlower6 = ['1', '2', '3', '4', '5','6','7','8','9'];
 
const myFlower7 = ['1', '2', '3', '4', '5','6','7','8','9'];
 
 
function draw() {
  background('gray');
 
  x1 -= scrollSpeed;
  x2 -= scrollSpeed;
  if (x1 < -width){
    x1 = width;
  }
  if (x2 < -width){
    x2 = width;
  }
  // Set colors
  fill(100, 1, 300, 200);
  stroke(200, 100, 190);
 
  // white flowers
  myFlower4.forEach(x => x.forEach(y => y.draw()))
 
  // blue and purple flowers
  myFlower5.forEach(x => x.forEach(y => y.draw()))
 
 
  }