//Austin Treu
//Section C
//atreu@andrew.cmu.edu
//Project-02
var eyeSize, irisSize, faceW, faceH,
backR = 75, backG = 220, backB = 200,
faceR = 255, faceG = 255, faceB = 255,
eyeR = 0, eyeG = 255, eyeB = 255,
mouthW, mouthH, mouthX, mouthY,
earW, earH, earShape = 0;
function setup() {
createCanvas(480, 640);
eyeSize = width/10, irisSize = eyeSize - 10;
faceW = width/2, faceH = height/2;
mouthX = width/2, mouthY = height/2 + eyeSize;
mouthW = width/6, mouthH = height/8;
earW = width/20, earH = height/10;
}
function draw() {
background(backR,backG,backB);
//draw face
fill(faceR, faceG, faceB);
ellipse(width / 2, height / 2, faceW, faceH);
//calculate and draw eyes
var eyeLX = width/2 - faceW * 0.25;
var eyeRX = width/2 + faceW * 0.25;
fill(255);
ellipse(eyeLX, height/2, eyeSize, eyeSize);
ellipse(eyeRX, height/2, eyeSize, eyeSize);
fill(eyeR, eyeG, eyeB);
ellipse(eyeLX, height/2, irisSize, irisSize);
ellipse(eyeRX, height/2, irisSize, irisSize);
//draw mouth
fill(255);
arc(mouthX, mouthY, mouthW, mouthH, 0, PI, CHORD);
//draw ears
fill(faceR, faceG, faceB);
if(earShape == 0){
//circle ears
ellipse(width/2-faceW/2-faceW/30, height/2, earW, earH);
ellipse(width/2+faceW/2+faceW/30, height/2, earW, earH);
}
else if(earShape == 1){
//triangle ears
triangle(width/2-faceW/2, height/2-faceW/10,
width/2-faceW/2, height/2+faceW/10,
width/2-faceW/2-earW, height/2+earH);
triangle(width/2+faceW/2, height/2-faceW/10,
width/2+faceW/2, height/2+faceW/10,
width/2+faceW/2+earW, height/2+earH);
}
else if(earShape == 2){
//line ears
line(width/2-faceW/2, height/2,
width/2-faceW/2-earW, height/2-earH);
line(width/2+faceW/2, height/2,
width/2+faceW/2+earW, height/2-earH);
}
else{
//do nothing - no ears
}
}
function mousePressed() {
//randomize face size
faceW = random(width/4, width/2+width/4);
faceH = random(height/4, height-height/8);
//randomize eye sizes
eyeSize = random(10, 30);
irisSize = eyeSize - 10;
//randomize background color
backR = random(0, 255);
backG = random(0, 255);
backB = random(0, 255);
//base face color off swapped back values
faceR = backG;
faceG = backB;
faceB = backR;
//base eye color off swapped back values
eyeR = backB;
eyeG = backR;
eyeB = backG;
//randomize mouth size
mouthW = faceW - random(20,100);
mouthH = faceH/2 - random(0,30);
//randomize ear size and shape
earShape = int(random(0,4));
earW = random(width/20, width/10);
earH = random(height/20, height/5);
}
I decided to take an approach to this project looking at the faces as being more alien or robot than human, as it ultimately allowed me to add more interesting adjustments when it came to color and shapes. It provided me with some good practice in debugging the small things (e.g. semicolon in the wrong place… oops!).