//announcing variables
float eyeType = 0;
float hairStyle = 0;
float mouthType = 0;
float clothesStyles = 0;
float extraStuff = 0;
//setup
void setup()
{
size(400, 400);
rectMode(CENTER);
ellipseMode(CORNERS);
noStroke();
smooth();
frameRate(50);
println ("Customize your character!");
}
void draw() {
//draw the background
//sunny background
if (mouseX < width/3) {
background (178 - mouseY/4, 219 - mouseY/4, 255 - mouseY/4);
//grass
fill (46, 140, 3);
rect (200, 370, 400, 80);
//flowers
fill (255, 220, 0);
ellipse (30, 352, 34, 356);
ellipse (86, 380, 90, 384);
ellipse (150, 366, 154, 370);
ellipse (208, 390, 212, 394);
ellipse (259, 348, 263, 352);
ellipse (302, 376, 306, 380);
ellipse (350, 357, 355, 361);
ellipse (369, 390, 373, 384);
//sun
fill (255, 251, 133);
ellipse (350, 10, 390, 50);
fill (255, 251, 133, random(50, 255));
quad (347, 30, 235, -5, 240, 45, 350, 41);
quad (353, 13, 300, -40, 252, -5, 347, 22);
quad (362, 5, 355, -5, 380, -5, 375, 5);
quad (382, 11, 400, -20, 420, 5, 392, 20);
quad (393, 30, 420, 20, 420, 60, 388, 43);
quad (385, 48, 400, 70, 400, 130, 372, 52);
quad (367, 52, 380, 150, 320, 170, 358, 49);
quad (350, 50, 290, 170, 220, 70, 348, 45);
//clouds
fill (255, 255, 255, 100);
ellipse (-10, 18, 51, 50);
ellipse (110, -5, 181, 23);
ellipse (160, 15, 210, 40);
ellipse (80, 50, 141, 80);
ellipse (180, 90, 245, 125);
ellipse (150, 111, 210, 144);
} else if (mouseX < 2*width/3) {
//sunset sky
background (242 - mouseY, 118 - mouseY, 0 - mouseY);
//sun
fill (255, 63, 87, random(50, 150));
ellipse (20, 290, 110, 380);
fill (255, 63, 87, random(50, 150));
ellipse (0, 270, 130, 400);
fill (255, 155, 13, 255);
ellipse (40, 310, 90, 360);
//ground
fill (147, 92, 163);
rect (200, 370, 400, 80);
} else {
//night sky
background (53 - mouseY/4, 71 - mouseY/4, 140 - mouseY/4);
//ground
fill (255);
rect (200, 370, 400, 80);
//moon
ellipse (20, 20, 80, 80);
fill (53 - mouseY/4, 71 - mouseY/4, 140 - mouseY/4);
ellipse (50, 30, 90, 65);
//stars
fill (255, 255, 255, random(50, 200));
ellipse (100, -2, 140, 40);
ellipse (110, 10, 130, 30);
fill (255, 255, 255, random(50, 200));
ellipse (150, 70, 200, 120);
ellipse (163, 80, 190, 110);
fill (255, 255, 255, random(50, 200));
ellipse (210, 140, 245, 180);
ellipse (220, 150, 240, 170);
fill (255, 255, 255, random(50, 200));
ellipse (240, 20, 280, 70);
ellipse (250, 30, 270, 60);
fill (255, 255, 255, random(50, 200));
ellipse (290, 90, 330, 127);
ellipse (300, 97, 320, 120);
fill (255, 255, 255, random(50, 200));
ellipse (350, 50, 390, 85);
ellipse (362, 57, 383, 82);
fill (255, 255, 255, 255);
quad(120, 12, 117, 20, 120, 24, 123, 20);
quad(180, 83, 178, 97, 180, 102, 184, 97);
quad(231, 157, 229, 160, 231, 164, 233, 160);
quad(260, 40, 252, 49, 260, 57, 262, 49);
quad(311, 100, 308, 110, 311, 118, 318, 110);
quad(378, 60, 370, 70, 378, 79, 380, 70);
}
//this draws the character base
//head and neck
fill (185, 136, 101);
rect (277, 200, 8, 18);
fill (192, 161, 131);
ellipse (247, 140, 303, 198);
ellipse (238, 160, 255, 182);
ellipse (295, 160, 312, 182);
fill (190, 66, 72, 180);
ellipse (250, 167, 270, 187);
ellipse (280, 167, 300, 187);
//body
fill (192, 161, 131);
triangle (277, 204, 277, 213, 243, 213);
triangle (277, 204, 277, 213, 315, 213);
quad (255, 213, 248, 300, 310, 300, 302, 213);
quad (243, 213, 209, 280, 218, 286, 260, 213);
quad (315, 213, 343, 280, 333, 286, 295, 213);
quad (248, 300, 240, 360, 260, 365, 270, 300);
quad (290, 300, 300, 365, 320, 360, 310, 300);
fill (0);
quad (254, 220, 252, 250, 306, 250, 302, 220);
quad (249, 280, 248, 300, 310, 300, 309, 280);
//this draws the options box
fill (0, 0, 0, 150);
rect (50, 240, 60, 180);
fill (255, 13, 255);
triangle (40, 170, 40, 190, 60, 180);
fill (218, 114, 126);
triangle (40, 200, 40, 220, 60, 210);
fill (189, 242, 93);
triangle (40, 230, 40, 250, 60, 240);
fill (41, 217, 194);
triangle (40, 260, 40, 280, 60, 270);
fill (155, 102, 220);
triangle (40, 290, 40, 310, 60, 300);
drawEyes();
drawHair();
drawMouth();
drawClothes();
drawExtra();
}
//draw clothes
void drawClothes() {
if (clothesStyles == 1) {
fill (255);
rect (277, 204, 8, 8);
triangle (277, 204, 277, 213, 243, 213);
triangle (277, 204, 277, 213, 315, 213);
quad (255, 213, 248, 300, 310, 300, 302, 213);
quad (243, 213, 229, 240, 243, 243, 260, 213);
quad (315, 213, 326, 240, 311, 243, 295, 213);
fill (0);
rect (265, 212, 8, 12);
rect (290, 212, 8, 12);
quad (255, 217, 240, 310, 318, 310, 302, 217);
quad (245, 320, 240, 360, 260, 365, 268, 320);
quad (291, 320, 300, 365, 320, 360, 314, 320);
fill (255);
quad (241, 350, 240, 360, 260, 365, 263, 350);
quad (297, 350, 300, 365, 320, 360, 318, 350);
} else if (clothesStyles == 2){
fill (0);
triangle (277, 204, 277, 213, 243, 213);
triangle (277, 204, 277, 213, 315, 213);
quad (255, 213, 248, 300, 310, 300, 302, 213);
quad (243, 213, 229, 240, 243, 243, 260, 213);
quad (315, 213, 326, 240, 311, 243, 295, 213);
fill (185, 136, 101);
rect (277, 200, 8, 8);
triangle (273, 204, 281, 204, 277, 215);
fill (23, 46, 120);
quad (248, 300, 240, 360, 260, 365, 270, 300);
quad (290, 300, 300, 365, 320, 360, 310, 300);
quad (249, 280, 248, 300, 310, 300, 309, 280);
fill (0);
quad (241, 350, 240, 360, 260, 365, 263, 350);
quad (297, 350, 300, 365, 320, 360, 318, 350);
fill (255);
ellipse (270, 230, 290, 250);
rect (280, 250, 10, 10);
fill (0);
ellipse (273, 235, 277, 240);
ellipse (283, 235, 287, 240);
triangle (280, 240, 283, 245, 277, 245);
} else if (clothesStyles == 3){
fill (0);
quad (249, 280, 237, 320, 320, 320, 309, 280);
fill (255, 131, 226);
triangle (277, 204, 277, 213, 243, 213);
triangle (277, 204, 277, 213, 315, 213);
quad (255, 213, 245, 295, 314, 295, 302, 213);
quad (243, 213, 214, 270, 224, 276, 260, 213);
quad (315, 213, 339, 270, 327, 275, 295, 213);
fill (0);
triangle (271, 204, 277, 204, 274, 212);
triangle (277, 204, 283, 204, 280, 212);
fill (0);
quad (241, 350, 240, 360, 260, 365, 263, 350);
quad (297, 350, 300, 365, 320, 360, 318, 350);
ellipse (260, 220, 280, 240);
ellipse (275, 220, 295, 240);
triangle (260, 230, 295, 230, 278, 270);
}
}
//draw hair
void drawHair() {
if (hairStyle == 1) {
fill (0);
rect (275, 150, 65, 20);
triangle (303, 145, 247, 145, 247, 170);
triangle (307, 145, 280, 145, 307, 190);
quad (235, 160, 255, 160, 260, 250, 230, 230);
quad (293, 157, 312, 157, 318, 230, 290, 250);
} else if (hairStyle == 2) {
fill (255, 167, 180);
rect (275, 145, 56, 10);
fill(204, 16, 115);
quad (234, 155, 252, 155, 243, 200, 220, 200);
quad (243, 200, 220, 200, 225, 245, 255, 245);
quad (225, 245, 255, 245, 255, 290, 225, 290);
quad (300, 155, 317, 150, 340, 200, 315, 200);
quad (340, 200, 315, 200, 305, 245, 335, 245);
quad (305, 245, 335, 245, 340, 290, 305, 290);
triangle (220, 200, 223, 210, 213, 215);
triangle (338, 198, 315, 207, 350, 215);
fill (255, 97, 180);
ellipse (230, 130, 260, 160);
ellipse (290, 130, 320, 160);
fill (255, 167, 180);
quad (258, 150, 265, 150, 260, 160, 250, 160);
quad (265, 150, 285, 150, 275, 160, 263, 160);
quad (280, 150, 290, 150, 300, 160, 285, 160);
} else if (hairStyle == 3) {
fill (0, 138, 207);
ellipse (230, 130, 295, 170);
ellipse (290, 140, 320, 170);
quad (230, 150, 275, 150, 275, 210, 230, 210);
quad (275, 210, 230, 210, 245, 250, 290, 230);
quad (290, 230, 245, 230, 240, 245, 290, 245);
quad (305, 155, 320, 155, 340, 245, 300, 250);
fill (192, 161, 131);
ellipse (295, 160, 312, 182);
fill (190, 66, 72, 180);
ellipse (280, 167, 300, 187);
} else if (hairStyle == 4) {
fill (210, 132, 17);
ellipse (290, 120, 320, 150);
quad (295, 145, 315, 130, 360, 200, 315, 230);
quad (360, 200, 315, 230, 310, 320, 365, 250);
fill (242, 205, 117);
quad (300, 130, 260, 140, 247, 155, 285, 150);
triangle (299, 129, 285, 150, 310, 160);
quad (247, 155, 250, 150, 250, 225, 245, 215);
quad (310, 160, 293, 150, 293, 260, 320, 220);
triangle (293, 150, 285, 143, 270, 160);
triangle (285, 143, 250, 150, 250, 170);
}
}
//draw eyes
void drawEyes() {
if (eyeType == 1) {
fill (255);
ellipse (263, 160, 271, 170);
ellipse (279, 160, 287, 170);
} else if (eyeType == 2) {
fill (0);
triangle (260, 160, 265, 162, 264, 158);
triangle (290, 160, 280, 162, 288, 158);
fill (255);
ellipse (263, 160, 271, 170);
ellipse (279, 160, 287, 170);
} else if (eyeType == 3) {
fill (0);
rect (263, 165, 20, 15);
rect (288, 165, 20, 15);
rect (283, 165, 20, 4);
} else if (eyeType == 4) {
fill (0);
ellipse (255, 155, 275, 175);
ellipse (276, 155, 296, 175);
} else if (eyeType == 5) {
fill (0);
ellipse (255, 155, 275, 175);
ellipse (276, 155, 296, 175);
fill (255);
quad (265, 155, 255, 165, 265, 175, 275, 165);
quad (286, 155, 276, 165, 286, 175, 296, 165);
} else if (eyeType == 6) {
fill(0);
ellipse (255, 155, 275, 175);
ellipse (276, 155, 296, 175);
fill(255);
ellipse (257, 157, 267, 170);
ellipse (263, 157, 273, 170);
triangle(257, 163, 273, 163, 265, 175);
ellipse (278, 157, 289, 170);
ellipse (284, 157, 294, 170);
triangle(278, 163, 294, 163, 286, 175);
}
}
//draw mouth
void drawMouth() {
if (mouthType == 1) {
fill (255, 0, 0);
triangle (265, 180, 285, 180, 275, 190);
} else if (mouthType == 2) {
fill (255, 0, 0);
triangle (265, 190, 285, 190, 275, 180);
} else if (mouthType == 3) {
fill (255, 0, 0);
ellipse (273, 175, 280, 195);
} else if (mouthType == 4) {
fill (255, 0, 0);
rect (275, 185, 20, 10);
} else if (mouthType == 5) {
fill (255, 0, 0);
ellipse (265, 180, 285, 190);
}
}
//draw other stuff
void drawExtra() {
if (extraStuff == 1) {
fill (151, 104, 209);
ellipse (255, 138, 263, 146);
ellipse (249, 142, 258, 150);
ellipse (251, 148, 258, 156);
ellipse (256, 148, 266, 156);
ellipse (259, 142, 269, 150);
} else if (extraStuff == 2) {
fill (255);
quad (280, 160, 280, 170, 295, 190, 295, 180);
quad (280, 190, 280, 180, 295, 160, 295, 170);
} else if (extraStuff == 3) {
fill (255, 0, 0);
triangle (260, 145, 255, 140, 253, 150);
triangle (290, 145, 295, 140, 297, 150);
}
}
void mousePressed () {
//eyes
if (mouseX >= 40 && mouseX <= 60 && mouseY >= 170 && mouseY <= 190) {
if (eyeType == 1) {
println("Change her eyes!");
}
eyeType = eyeType+1;
if (eyeType == 7) {
eyeType = 1;
}
}
//hair
if (mouseX >= 40 && mouseX <= 60 && mouseY >=200 && mouseY <= 220) {
if (hairStyle == 1) {
println("Style her hair!");
}
hairStyle = hairStyle+1;
if (hairStyle == 5) {
hairStyle = 1;
}
}
if (mouseX >= 40 && mouseX <= 60 && mouseY >= 230 && mouseY <=250) {
if (mouthType == 1) {
println("Make her smile!");
}
mouthType = mouthType+1;
if (mouthType == 7) {
mouthType = 1;
}
}
if (mouseX >= 40 && mouseX <= 60 && mouseY >= 260 && mouseY <=280) {
if (clothesStyles == 1) {
println("Dress her up!");
}
clothesStyles = clothesStyles+1;
if (clothesStyles == 4) {
clothesStyles = 1;
}
}
if (mouseX >= 40 && mouseX <= 60 && mouseY >= 290 && mouseY <=310) {
if (extraStuff == 1) {
println("Give her some personality!");
}
extraStuff = extraStuff+1;
if (extraStuff == 5) {
extraStuff = 1;
}
}
}