//due thurs 10pm
//Tiberiu Leonov
void setup() {
//make a window sized 400 by 400
size(400, 400);
//set framerate
frameRate(60);
}
void draw() {
//background wall
//turns to night on click
background(232-(mouseButton*2), 167-(mouseButton*2), 113-(mouseButton*2));
noStroke();
fill(255-(mouseButton*2), 247-(mouseButton*2), 228-(mouseButton*2));
rect(0, 0, 400, 210);
//ping pong table stand
strokeWeight(6);
stroke(150-(mouseButton*2), 150-(mouseButton*2), 150-(mouseButton*2));
line(62, 310, 120, 235);
line(337, 315, 290, 255 );
fill(150-(mouseButton*2), 150-(mouseButton*2), 150-(mouseButton*2));
stroke(100-(mouseButton*2), 100-(mouseButton*2), 100-(mouseButton*2));
strokeWeight(0.5);
rect(60, 270, 6, 80, 3);
rect(340, 270, -6, 80, 3);
rect(62, 310, 277, 5, 3);
//ping pong table top
stroke(255-(mouseButton*2), 255-(mouseButton*2), 255-(mouseButton*2));
strokeWeight(2);
fill(63-(mouseButton*2), 112-(mouseButton*2), 255-(mouseButton*2));
quad (25, 275, 100, 200, 300, 200, 375, 275);
//ping pong table markings
fill(255-(mouseButton*2));
quad (195, 275, 199, 200, 201, 200, 205, 275 );
//ping pong table net
fill(50-(mouseButton*2), 50-(mouseButton*2), 50-(mouseButton*2), 70);
quad (55, 233, 55, 215, 345, 215, 345, 233);
//ping pong ball shadow
noStroke();
fill(50-(mouseButton*2), 50-(mouseButton*2), 50-(mouseButton*2), 70);
ellipse(200+(mouseX-200)/1.3, 205+(mouseY)/6.3, 6+(mouseY/80), 6+(mouseY/150));
//ping pong ball
stroke(0, 0, 0);
fill(255, 255, 255);
strokeWeight(0.5);
ellipse(200+(mouseX-200)/1.3, ((mouseY-120)*(mouseY-120)/1000)+190, 6+(mouseY/80), 6+(mouseY/80));
//overhead light turns on with click
noStroke();
fill (255,255,0, mouseButton*1.5);
triangle(200,0, 65 , 233, 335, 233);
arc(200, 233, 270, 35, 0, PI);
fill(0);
triangle(200, -20, 150, 30, 250, 30);
//paddle handle
stroke (255-(mouseButton*2), 204-(mouseButton*2), 102-(mouseButton*2));
strokeWeight(12.0);
strokeCap(ROUND);
line(mouseX, 205+(mouseY)/4, ((mouseX-200)/1.15)+200, 205+(mouseY)/4);
//color changing paddle depending on direction
fill(sqrt(mouseX-200)*255, 0, 0);
noStroke();
arc(mouseX, 205+(mouseY)/4
, (40+ 10*abs(mouseX-200)/200) * abs(mouseX-200)/200, 50- 10*abs(mouseX-200)/200, (PI-QUARTER_PI)+(mouseX-200)/(PI*40), (2*PI+QUARTER_PI)+(mouseX-200)/(PI*40));
//main stick figure semi transparent to see the ball and make movement clear
fill(0, 0, 0, 70);
noStroke();
//head
ellipse( ((mouseX-200)/3)+200, 200+abs(mouseX-200)/6, 50, 50);
//body
stroke(0, 0, 0, 70);
strokeWeight(12.0);
strokeCap(ROUND);
line(((mouseX-200)/3)+200, 200+abs(mouseX-200)/6, ((mouseX-200)/8)+200, 300 +abs(mouseX-200)/6);
//left arm
line (((mouseX-200)/6)+170, ((mouseY-200)/7 ) +280, ((mouseX-200)/3.5)+200, 225+abs(mouseX-200)/6 );
line (((mouseX-200)/6)+170, ((mouseY-200)/7 ) +280, ((mouseX-200)/2.5)+170, ((mouseY-200)/4 ) +300 );
//right arm
line (((mouseX-200)/1.7)+200, ((mouseY-200)/6 ) +257, ((mouseX-200)/3.5)+200, 225+abs(mouseX-200)/6 );
line (((mouseX-200)/1.7)+200, ((mouseY-200)/6 ) +257, ((mouseX-200)/1.15)+200, 205+(mouseY)/4 );
//left leg
line (((mouseX-200)/6)+170, 400, ((mouseX-200)/8)+200, 300 +abs(mouseX-200)/6);
//right leg
line (((mouseX-200)/1.7)+200, 400, ((mouseX-200)/8)+200, 300 +abs(mouseX-200)/6);
//clock which moves faster on click
stroke(0);
strokeWeight(2);
fill(255-(mouseButton*2));
ellipse(100, 50, 40, 40);
line(100, 50, 100+ (cos(frameCount*(0.2+mouseButton)))*15, 50+ (sin(frameCount*(0.2+mouseButton)))*15);
line(100, 50, 100+ (cos(frameCount*(0.0167+mouseButton)))*8, 50+ (sin(frameCount*(0.0167+mouseButton)))*8);
}