void drawFigure(float x, float y) {
stroke(2*(3.6*y)%360, 75, 40, 80);
fill(2*(3.6*y)%360, 75, 70, 80);
rect(0, 0, (2*y)%100+50, random(50,100));
fill(250, 50, 100-mX, x/2+30);
ellipse(140+random(-50,50), 80, (3*mY+x)%120+20, (3*mY+y)%120+20);
stroke(280, 100, 70, 75);
triangle((frameCount+x-y)%120, 120, 120-(frameCount+x-y)%120, 120, 60, 25);
colorMode(HSB, 360, 100, 100, 100);
backgroundColor = color(300,80,00);
background(backgroundColor);
int xPos = -horizSpacing+horizOffset;
while (yPos < height+vertSpacing) {
while (xPos < width+horizSpacing) {
drawFigure(map(xPos,0,width,0,100), map(yPos,0,height,0,100));
yPos = yPos + vertOffset;
vertOffset = -vertOffset;
xPos = xPos + horizSpacing;
yPos = yPos + vertSpacing+random(-20,20);
horizOffset = -horizOffset;
xPos = -horizSpacing+horizOffset;
vertOffset = abs(vertOffset);
horizOffset = abs(horizOffset);
mX = map(mouseX, 0, width, 0, 100);
mY = map(mouseY, 0, height, 0, 100);