float eyeR; float eyeG; float eyeB; void setup(){ size(500,500); smooth(); frameRate(15); } void draw() { background(0); drawSnow(300); ellipseMode(CENTER); rectMode(CENTER); //body stroke(150); fill(150); rect(mouseX,mouseY,30,40); ellipse(mouseX,mouseY+20,30,30); //tail ellipse(pmouseX,mouseY+50,17,17); ellipse(pmouseX-(mouseX - pmouseX),mouseY+70,9,9); ellipse(pmouseX-(mouseX - pmouseX)*2,mouseY+85,4,4); //hat stroke(0); fill(245,7,103); triangle(mouseX,mouseY-145,mouseX-20,mouseY-90,mouseX+20,mouseY-90); //head noStroke(); fill(150); ellipse(mouseX,mouseY-55,100,80); stroke(255); fill(255); ellipse(mouseX,mouseY-55,90,70); //eyes stroke(0); eyeR = random(255); eyeG = random(255); eyeB = random(255); fill(eyeR,eyeG,eyeB); ellipse(mouseX-25,mouseY-55,25,25); ellipse(mouseX+25,mouseY-55,25,25); fill(255); noStroke(); ellipse(mouseX-27,mouseY-52,17,15); ellipse(mouseX+23,mouseY-52,17,15); ellipse(mouseX-21,mouseY-62,8,7); ellipse(mouseX+29,mouseY-62,8,7); //whiskers stroke(50); beginShape(); fill(50); vertex(mouseX+20,mouseY-30); bezierVertex(mouseX+40,mouseY-50,mouseX+60,mouseY,mouseX+80,mouseY-25); bezierVertex(mouseX+60,mouseY+10,mouseX+40,mouseY-40,mouseX+20,mouseY-30); endShape(); beginShape(); fill(50); vertex(mouseX-80,mouseY-25); bezierVertex(mouseX-60,mouseY,mouseX-40,mouseY-50,mouseX-20,mouseY-30); bezierVertex(mouseX-40,mouseY-40,mouseX-60,mouseY+10,mouseX-80,mouseY-25); endShape(); } void drawSnow(int numFlakes){ fill(mouseX,0,mouseY); stroke(mouseX,0,mouseY); for(int i = 0; i < numFlakes; i++){ ellipse(random(0,height),random(0,width),2,2); } }