Gnomard[] gnomards = new Gnomard[5]; void setup() { size(800, 800); smooth(); frameRate(15); for (int i = 0; i < gnomards.length; i++) { gnomards[i] = new Gnomard (); } } void draw() { background(0); drawHoops(); //drawSnow(300); for (int i=0; i < gnomards.length; i++) { gnomards [i].booger(mouseX+i*140, mouseY, pmouseX+i*140, pmouseY); } } void drawSnow(int numFlakes) { fill(mouseX, 0, mouseY); noStroke(); for (int i = 0; i < numFlakes; i++) { ellipse(random(0, height), random(0, width), 2, 2); } } void drawHoops () { noFill(); if (mousePressed == true) { stroke(random(255), random(255), random(255)); } else { noStroke(); drawSnow(300); } noFill(); for ( float x = 0; x < width; x++ ) { rect(width/2, height/2, x, x); x = x + random (60, 75); } } class Gnomard { float eyeR; float eyeG; float eyeB; float gnomX; float gnomY; float tailX; float tailY; Gnomard() { gnomX = X; gnomY = Y; } void booger(float tempGnomX, float tempGnomY, float tempTailX, float tempTailY) { gnomX = tempGnomX; gnomY = tempGnomY; tailX = tempTailX; tailY = tempTailY; ellipseMode(CENTER); rectMode(CENTER); //hat ball noStroke(); if (mousePressed == true) { fill (245, 7, 103, 80); } else { fill(0,0,0,0); } ellipse(gnomX, gnomY-150, 40, 40); ellipse(gnomX, gnomY-150, 30, 30); ellipse(gnomX, gnomY-150, 20, 20); ellipse(gnomX, gnomY-150, 10, 10); //left wing... eeeeeeek! pushMatrix(); translate(gnomX-15, gnomY); rotate(cos(frameCount%PI)); beginShape(); fill(50); noStroke(); vertex(0, 0); bezierVertex(-20, -20, -40, -30, -60, 5); bezierVertex(-40, 30, -20, -20, 0, 0); endShape(); popMatrix(); //right wing... eeeeeeek! pushMatrix(); translate(gnomX+15, gnomY); rotate(-cos(frameCount%PI)); beginShape(); fill(50); noStroke(); vertex(0, 0); bezierVertex(20, -20, 40, -30, 60, 5); bezierVertex(40, 30, 20, -20, 0, 0); endShape(); popMatrix(); //body stroke(150); fill(150); rect(gnomX, gnomY, 30, 40); ellipse(gnomX, gnomY+20, 30, 30); //tail ellipse(tailX, gnomY+50-(gnomY - tailY)/2, 17, 17); ellipse(tailX-(gnomX - tempTailX), gnomY+70-(gnomY - tailY), 9, 9); ellipse(tailX-(gnomX - tailX)*2, gnomY+85-(gnomY - tailY)*2, 4, 4); //hat noStroke(); fill(245, 7, 103); triangle(gnomX, gnomY-145, gnomX-20, gnomY-90, gnomX+20, gnomY-90); //head noStroke(); fill(150); ellipse(gnomX, gnomY-55, 100, 80); fill(255); ellipse(gnomX, gnomY-55, 90, 70); //eyes stroke(0); eyeR = random(255); eyeG = random(255); eyeB = random(255); fill(eyeR, eyeG, eyeB); ellipse(gnomX-25, gnomY-55, 25, 25); ellipse(gnomX+25, gnomY-55, 25, 25); fill(255); ellipse(gnomX-27, gnomY-52, 17, 15); ellipse(gnomX+23, gnomY-52, 17, 15); ellipse(gnomX-21, gnomY-62, 8, 7); ellipse(gnomX+29, gnomY-62, 8, 7); //stashhhhhh noStroke(); beginShape(); fill(60); vertex(gnomX+20, gnomY-30); bezierVertex(gnomX+40, gnomY-50, gnomX+60, gnomY, gnomX+80, gnomY-25); bezierVertex(gnomX+60, gnomY+10, gnomX+40, gnomY-40, gnomX+20, gnomY-30); endShape(); beginShape(); fill(60); vertex(gnomX-80, gnomY-25); bezierVertex(gnomX-60, gnomY, gnomX-40, gnomY-50, gnomX-20, gnomY-30); bezierVertex(gnomX-40, gnomY-40, gnomX-60, gnomY+10, gnomX-80, gnomY-25); endShape(); //mouth if (mousePressed == true) { fill(0); } else { fill (255); } ellipse(gnomX, gnomY-33, 10, 16); } }