//--------------PROG ASSIGNMENT 1---------------//
//---------------ALEXANDER KEHN----------------//
//---------------id# 991368989----------------//
//---"Untitled Programming Assignment 1"-----//
//-------------------OR---------------------//
//------"How I Learned to Stop Worrying----//
//-----------and Write Some Code"---------//
void setup () {
size(400, 400);
}
void draw() {
noStroke();
noCursor();
//--------------THE MAIN DRAWING--------------//
frameRate(60); //set frameRate to allow for mousePressed trick
background(206, 241, 158); //gameboy green lightest
fill(57, 134, 137); //gameboy green dark
rect(0, 160, 400, 240); //foreground
//CLOUDS
fill(230, 241, 180); //much lighter green
rect(120+frameCount*0.8, 120, 80, 40, 7);
rect(33+frameCount, 100, 80, 30, 7);
rect(-300+frameCount*0.8, 20, 80, 40, 7);
rect(-300+frameCount, 40, 80, 40, 7);
rect(-800+frameCount*0.9, 100, 80, 40, 7);
rect(-800+frameCount, 110, 80, 40, 7);
//PYRAMIDS IN HORIZON, MOUSE XY MAKES THEM WIGGLE
fill(120, 190, 151); //gbgreen mid
triangle(360+mouseX*0.1, 100-mouseY*0.1, 400, 160, 320, 160);
fill(167, 221, 167); //gbgreen mid-lightest
triangle(360+mouseX*0.1, 100-mouseY*0.1, 380, 160, 320, 160);
fill(167, 221, 167); //gbgreen mid-light
triangle(280+mouseX*0.1, 80-mouseY*0.1, 320, 160, 220, 160);
fill(120, 190, 151); //gbgreen mid
triangle(280+mouseX*0.1, 80-mouseY*0.1, 360, 160, 320, 160);
//THE LAKE
fill(167, 221, 167); //gbgreen mid-light
ellipseMode(CORNER);
ellipse(200, 200, 200, 60);
ellipse(145, 238, 489, 105);
ellipse(282, 332, 145, 35);
ellipseMode(CENTER);
ellipse(260, 343, 10, 5);
rect(312, 200, 100, 160);
//TOADSTOOL
fill(230, 241, 180); //gbgreen much lighter
ellipse(90, 312, 60, 30); //rounds the base
rect(60, 300, 60, 20, 7); //base
fill(11, 71, 109); //gbgreen darkest
triangle(82, 255, 91, 281, 42, 284); //left slope of cap
triangle(98, 254, 137, 282, 96, 273); //right slope of cap
ellipseMode(CORNER);
ellipse(78, 252, 25, 25); //fills the point of the cap
ellipse(40, 270, 100, 40); //fills the bottom of cap
//--------------THE FISHING DUDE--------------//
//LOWER TORSO
fill(120, 190, 151); //gbgreen mid
rect(60, 220, 65, 40, 7);
ellipseMode(CENTER);
ellipse(60, 240, 40, 40);
//UPPER TORSO
triangle(80, 140, 80, 240, 50, 240);
rect(80, 140, 40, 80);
triangle(140, 140, 125, 230, 80, 140);
//HEAD
ellipse(110, 135, 60, 65);
//MOUTH
fill(11, 71, 109); //gbgreen darkest
ellipse(108, 136, 20, 20); //left cheek
ellipse(130, 138, 15, 15); //right cheek
rect(110, 131, 21, 15, 2); //fills out mouth
ellipse(118, 140, 36, 20); //this circle helps form the smile (lower lip)
fill(120, 190, 151); //change back to torso color
ellipse(123, 124, 18, 16); //this circle helps form the smile (upper lip)
//TEETH
fill(230, 241, 180); //gbgreen lightest
noStroke();
rect(108, 126, 5, 5, 2);
rect(124, 145, 5, 5, 2);
//LEGS
noFill();
stroke(120, 190, 151); //gbgreen mid
strokeWeight(10);
bezier(68, 250, 99, 280, 79, 300, 78+(sin(frameCount/6))*5, 310+(sin(frameCount/6))*5);
bezier(114, 250, 143, 269, 122, 287, 126+(sin(frameCount/6))*5, 300+(sin(frameCount/6))*5);
//EYE SHAFT
stroke(240, 255, 235); //gbgreen lightest
strokeWeight(10); //set weight large, shaft is just a bezier
noFill();
bezier(120+(sin(frameCount*0.1))*3, 80, 122+(sin(frameCount*0.1))*3, 100, 105+(sin(frameCount*0.1))*3, 85+(sin(frameCount*0.1))*3, 113, 106);
bezier(140+(sin(frameCount*0.1))*3, 81, 139+(sin(frameCount*0.1))*3, 107, 128+(sin(frameCount*0.1))*3, 86+(sin(frameCount*0.1))*3, 123, 107);
//LEFT EYEBALL
noStroke();
fill(240, 255, 235); //gbg lightest
ellipse(120+(sin(frameCount*0.1))*3, 70, 14, 20);//left eyball, sine of frameCount creates oscillation
fill(11, 71, 109); //gbgreen dark for pupil
ellipse(120+(sin(frameCount*0.1))*3, 70, 7, 10); //pupil
fill(240, 255, 235); //gbgreen lightest for pupil
triangle(120+(sin(frameCount*0.1))*3, 70, 125+(sin(frameCount*0.1))*3, 65, 120+(sin(frameCount*0.1))*3, 65); //cartoony notch out of pupil
//RIGHT EYEBALL
fill(240, 255, 235); //gbgreen lightest
ellipse(140+(sin(frameCount*0.1))*3, 75, 14, 20);//left eyball, sin stuff makes it wobble
fill(11, 71, 109); //set color dark for pupil
ellipse(140+(sin(frameCount*0.1))*3, 75, 7, 10); //pupil
fill(240, 255, 235); //back to lightest for pupil
triangle(140+(sin(frameCount*0.1))*3, 77, 146+(sin(frameCount*0.1))*3, 71, 140+(sin(frameCount*0.1))*3, 69); //cartoony notch out of pupil
//--------------FISH SILHOUETTE----------//
//needs to be below FISHING ROD and RIGHT ARM for proper layering!
fill(120, 190, 151); //gbgreen mid
noStroke();
ellipse(340+(sin(frameCount*0.05)*80), 280+(sin(frameCount*0.01)*30), 60+(sin(mouseX*0.1)*10), 15);
//--------------------------------------//
//RIGHT ARM
stroke(120, 190, 151); //gbg mid
strokeWeight(10);
line(130, 185, mouseX, mouseY);
//--------------FISHING ROD--------------//
//needs to be between ARMS for proper layering!
noStroke();
fill(11, 71, 109); //gbg dark
triangle(mouseX-20, mouseY+20, mouseX+20, mouseY-80, mouseX-10, mouseY+20);
triangle(mouseX+20, mouseY-80, mouseX+60, mouseY-140, mouseX+25, mouseY-80);
triangle(mouseX+5, mouseY-40, mouseX+20, mouseY-80, mouseX+25, mouseY-80);
rect(mouseX-18, mouseY+20, 8, 50);
//FISHING LINE
stroke(11, 71, 109);
strokeWeight(2);
line(mouseX+60, mouseY-140, 340+(sin(frameCount*0.05)*80), 280+(sin(frameCount*0.01)*30));
//----------------------------------------//
//LEFT ARM
stroke(120, 190, 151); //gbg mid
strokeWeight(10);
line(70, 210, mouseX-10, mouseY+20);
//-----------END OF MAIN PICTURE----------//
//------------OPENING THE MOUTH-----------//
//UPPER TEETH
noStroke();
fill(255, 249, 203);
rect(60, 200 - mouseX, 60, 60, 7);
fill(255);
rect(40, 200 - mouseX, 60, 60, 7);
fill(255, 249, 203);
rect(300, 200 - mouseX, 60, 60, 7);
fill(255);
rect(280, 200 - mouseX, 60, 60, 7);
//BOTTOM TOOTH
fill(255, 249, 203);
rect(150, 160 + mouseX, 60, 60, 7);
fill(255);
rect(130, 160 + mouseX, 60, 60, 7);
//UPPER MOUTH
fill(255, 215, 0); //sunset yellow-ish
rect(0, 0, 400, 200 - mouseX*0.90);
//UPPER LIPS
noStroke();
fill(200, 200, 0); //ugly green
rect(0, 160 - mouseX*0.9, 400, 40 + mouseX*0.1);
//BOTTOM MOUTH
fill(255, 215, 0); //yellow again
rect(0, 200 + mouseX*0.85, 400, 200);
//BOTTOM LIPS
fill(200, 230, 0); //ugly green a bit greener for highlight
rect(0, 200 + mouseX*0.85, 400, 40 + mouseX*0.2);
//PIMPLES
stroke(199, 96, 88); //darkish pink
strokeWeight(10);
point(350, 360 + mouseX);
point(100, 120 - mouseX);
//CHIN AND NOSTRIL LINES
stroke(255, 178, 72);
strokeWeight(3);
noFill();
curve(95, 140 + mouseX, 95, 260 + mouseX, 200, 265 + mouseX, 220, 125 + mouseX);
curve(220, 125 + mouseX, 200, 265 + mouseX, 300, 260 + mouseX, 220, 125 + mouseX);
line(160, 80 - mouseX, 160, 160 - mouseX);
line(240, 80 - mouseX, 240, 160 - mouseX);
}
//--------------END OF MOUTH TOWN---------------//
//-------------MOUSEPRESSED CHANGES------------//
void mousePressed() {
frameRate(0.5);
background(194, 150, 232);
noStroke();
fill(255, 104, 134);
rect(0, 160, 400, 240); //foreground
//PYRAMIDS
fill(255, 246, 0);
triangle(360, 100, 400, 160, 320, 160);
fill(255, 192, 0);
triangle(360, 100, 380, 160, 320, 160);
fill(255, 192, 0);
triangle(280, 80, 320, 160, 220, 160);
fill(255, 246, 0);
triangle(280, 80, 360, 160, 320, 160);
//LAKE
fill(85, 213, 107);
ellipseMode(CORNER);
ellipse(200, 200, 200, 60);
ellipse(145, 238, 489, 105);
ellipse(282, 332, 145, 35);
ellipseMode(CENTER);
ellipse(260, 343, 10, 5);
rect(312, 200, 100, 160);
//TOADSTOOL
fill(255);
ellipse(90, 312, 60, 30); //rounds the base
rect(60, 300, 60, 20, 7); //base
fill(181, 85, 213);
triangle(82, 255, 91, 281, 42, 284); //left slope of cap
triangle(98, 254, 137, 282, 96, 273); //right slope of cap
ellipseMode(CORNER);
ellipse(78, 252, 25, 25); //fills the point of the cap
ellipse(40, 270, 100, 40); //fills the bottom of cap
//----------FISH DUDE---------//
//LOWER TORSO
fill(53, 255, 248);
rect(60, 220, 65, 40, 7);
ellipseMode(CENTER);
ellipse(60, 240, 40, 40);
//UPPER TORSO
triangle(41, 140, 124, 225, 50, 240);
triangle(101, 144, 125, 227, 39, 140);
//HEAD
ellipse(70, 135, 60, 65);
//MOUTH
fill(0);
ellipse(66, 136, 20, 20); //left cheek
ellipse(90, 138, 15, 15); //right cheek
rect(69, 131, 21, 15, 2); //fills out mouth
ellipse(77, 140, 36, 20); //this circle helps form the smile (lower lip)
fill(93, 255, 248); //change back to torso color
ellipse(81, 124, 18, 16); //this circle helps form the smile (upper lip)
//TEETH
fill(255);
noStroke();
rect(64, 126, 5, 5, 2);
rect(84, 145, 5, 5, 2);
//LEGS
noFill();
stroke(53, 255, 248);
strokeWeight(10);
bezier(68, 250, 99, 280, 79, 300, 78+(sin(frameCount/6))*5, 310+(sin(frameCount/6))*5);
bezier(114, 250, 143, 269, 122, 287, 126+(sin(frameCount/6))*5, 300+(sin(frameCount/6))*5);
//EYE SHAFT
stroke(255);
strokeWeight(10);
noFill();
bezier(120+(sin(frameCount*0.1))*3, 77, 121+(sin(frameCount*0.1))*3, 99, 89+(sin(frameCount*0.1))*3, 68+(sin(frameCount*0.1))*3, 71, 110);
strokeWeight(10);
bezier(140+(sin(frameCount*0.1))*3, 81, 132+(sin(frameCount*0.1))*3, 138, 109+(sin(frameCount*0.1))*3, 86+(sin(frameCount*0.1))*3, 85, 109);
//LEFT EYEBALL
noStroke();
fill(255);
ellipse(120+(sin(frameCount*0.1))*3, 70, 14, 20);//left eyball, sin stuff makes it wobble
fill(0); //set color to black for pupil
ellipse(120+(sin(frameCount*0.1))*3, 70, 7, 10); //pupil
fill(255); //set to white for pupil
triangle(120+(sin(frameCount*0.1))*3, 70, 125+(sin(frameCount*0.1))*3, 65, 120+(sin(frameCount*0.1))*3, 65); //cartoony notch out of pupil
//RIGHT EYEBALL
fill(255);
ellipse(140+(sin(frameCount*0.1))*3, 75, 14, 20);//left eyball, sin stuff makes it wobble
fill(0); //set color to black for pupil
ellipse(140+(sin(frameCount*0.1))*3, 75, 7, 10); //pupil
fill(255); //set to white for pupil
triangle(140+(sin(frameCount*0.1))*3, 77, 146+(sin(frameCount*0.1))*3, 71, 140+(sin(frameCount*0.1))*3, 69); //cartoony notch out of pupil
//RIGHT ARM
stroke(53, 255, 248);
strokeWeight(10);
line(87, 183, 151, 177);
//----------FISHING ROD---------//
noStroke();
fill(160, 132, 0);
triangle(140, 180, 180, 80, 150, 180);
triangle(180, 80, 220, 20, 190, 80);
triangle(160, 140, 180, 80, 190, 80);
rect(140, 180, 8, 50);
noFill();
stroke(0);
strokeWeight(2);
bezier(220, 20, 235, 164, 288, -21, 294, 111);
//LEFT ARM
stroke(53, 255, 248);
strokeWeight(10);
line(70, 210, 145, 200);
//------------END OF FISHDUDE------------------//
//----------------GAMEBOY---------------------//
noStroke();
fill(187, 239, 82, 166); //OUTER GLOW...STUPID?
ellipse(290, 160, 105, 140);
fill(226, 216, 207);//light gray
rect(250, 105, 80, 120, 7); //main body
fill(139, 132, 132); //darker grey
rect(260, 115, 60, 40); //screen border
fill(23, 240, 2); //green
rect(270, 120, 40, 30); //screen
fill(255, 0, 0); //red
ellipse(265, 126, 2, 2); //indicator light
fill(0); //black for dpad
rect(266, 167, 8, 20);//dpad x
rect(260, 173, 20, 8);//dpad y
fill(229, 42, 103); //pink
ellipse(301, 178, 10, 10); //B button
ellipse(314, 172, 10, 10); //A button
//----------END OF GAMEBOY---------//
//--------RADICAL--------//
//SPEECH BUBBLE
fill(255, 246, 0); //yellow from pyramids
ellipse(320, 360, 217, 153);
triangle(140, 400, 220, 360, 256, 400);
triangle(87, 345, 247, 342, 251, 390);
triangle(247, 372, 159, 284, 258, 325);
triangle(199, 249, 276, 310, 241, 340);
triangle(263, 295, 250, 254, 285, 292);
triangle(287, 343, 278, 261, 304, 291);
triangle(296, 290, 307, 250, 356, 305);
triangle(326, 317, 350, 261, 360, 303);
triangle(353, 293, 390, 220, 406, 319);
//LETTERS
//R
fill(229, 42, 103);//pink
triangle(233, 390, 214, 310, 242, 300);
triangle(265, 382, 224, 345, 249, 344);
rect(225, 310, 20, 39);
triangle(236, 302, 287, 283, 244, 351);
//A
triangle(270, 380, 300, 290, 310, 320);
triangle(330, 380, 290, 320, 300, 290);
rect(286, 344, 28, 10);
//D
triangle(339, 385, 325, 285, 378, 340);
// !
triangle(382, 370, 382, 304, 400, 301);
ellipse(382, 376, 10, 5);
}