// Rick Sanchez's 1st Portal Jump
// Click & hold your mouse button and quickly make circular motions to create Rick's portal
// Press any key to see Rick's legendary catch phrase
void setup() {
// set the size of the window
size(400, 400);
// take out black outlines
noStroke();
// set 60 fps
frameRate(60);
// set anti-aliasing
smooth();
}
void draw() {
// set drawing modes
rectMode(CORNERS);
ellipseMode(CENTER);
// as the cursor trails down vertically, sky gets darker
background(240-mouseY/3, 142-mouseY/3, 76-mouseY/3);
// draw an orange background gradient getting lighter as you go down
fill(240-mouseY/3, 151-mouseY/3, 92-mouseY/3);
rect(0, 80, 400, 160);
fill(240-mouseY/3, 161-mouseY/3, 108-mouseY/3);
rect(0, 160, 400, 240);
fill(240-mouseY/3, 170-mouseY/3, 123-mouseY/3);
rect(0, 240, 400, 320);
// draw sun
fill(mouseX/2, 50, mouseY/2);
ellipse(200+mouseX/100, 320, 450, 400);
// draw clouds moving left
fill(255-mouseY/3, 255-mouseY/3, 255-mouseY/3, 100);
rect(320-frameCount/5, 75, 390-frameCount/5, 100, 7);
rect(220-frameCount/5, 55, 300-frameCount/5, 100, 7);
rect(20-frameCount/5, 60, 80-frameCount/5, 90, 7);
rect(140-frameCount/5, 55, 190-frameCount/5, 75, 7);
// draw same clouds moving left after the first set
rect(700-frameCount/5, 75, 770-frameCount/5, 100, 7);
rect(600-frameCount/5, 55, 680-frameCount/5, 100, 7);
rect(400-frameCount/5, 60, 460-frameCount/5, 90, 7);
rect(520-frameCount/5, 55, 570-frameCount/5, 75, 7);
// draw mountain (back)
fill(mouseX/2, 129, mouseY/2);
triangle(85+mouseX/30, 320+mouseY/30, 200+mouseX/30, 60+mouseY/30, 320+mouseX/30, 320+mouseY/30);
fill(mouseX/2, 102, mouseY/2);
triangle(85+mouseX/30, 320+mouseY/30, 200+mouseX/30, 60+mouseY/30, 255+mouseX/30, 320+mouseY/30);
// draw ground
fill(255, 110, 110-mouseY/7);
rect(-10+mouseX/100, 320+mouseY/100, 400, 400);
// draw mountains (front)
fill(255, 110, 110-mouseY/7);
triangle(-15+mouseX/100, 320+mouseY/100, 30+mouseX/100, 220+mouseY/100, 60+mouseX/100, 320+mouseY/100);
triangle(30+mouseX/100, 320+mouseY/100, 90+mouseX/100, 260+mouseY/100, 120+mouseX/100, 320+mouseY/100);
triangle(90+mouseX/100, 300+mouseY/100, 110+mouseX/100, 270+mouseY/100, 120+mouseX/100, 290+mouseY/100);
triangle(90+mouseX/100, 320+mouseY/100, 140+mouseX/100, 240+mouseY/100, 180+mouseX/100, 320+mouseY/100);
triangle(160+mouseX/100, 320+mouseY/100, 200+mouseX/100, 260+mouseY/100, 240+mouseX/100, 320+mouseY/100);
triangle(200+mouseX/100, 320+mouseY/100, 220+mouseX/100, 290+mouseY/100, 260+mouseX/100, 320+mouseY/100);
triangle(240+mouseX/100, 320+mouseY/100, 260+mouseX/100, 280+mouseY/100, 300+mouseX/100, 320+mouseY/100);
triangle(280+mouseX/100, 320+mouseY/100, 310+mouseX/100, 240+mouseY/100, 340+mouseX/100, 320+mouseY/100);
triangle(310+mouseX/100, 320+mouseY/100, 370+mouseX/100, 220+mouseY/100, 410+mouseX/100, 320+mouseY/100);
// draw rick's shadow
fill(210, 88, 88-mouseY/7);
ellipse(120+mouseX/100, 320+mouseY/100, 150, 9);
// draw rick's hair base
fill(188, 228, 247-mouseY/5);
rect(65+mouseX/100, 125+mouseY/100, 100+mouseX/100, 165+mouseY/100);
// draw rick's hair spikes
rect(75+mouseX/100, 115+mouseY/100, 85+mouseX/100, 125+mouseY/100);
rect(75+mouseX/100, 110+mouseY/100, 80+mouseX/100, 115+mouseY/100);
rect(90+mouseX/100, 120+mouseY/100, 100+mouseX/100, 125+mouseY/100);
rect(95+mouseX/100, 115+mouseY/100, 100+mouseX/100, 120+mouseY/100);
rect(100+mouseX/100, 130+mouseY/100, 105+mouseX/100, 135+mouseY/100);
rect(100+mouseX/100, 140+mouseY/100, 105+mouseX/100, 145+mouseY/100);
rect(60+mouseX/100, 125+mouseY/100, 65+mouseX/100, 130+mouseY/100);
rect(60+mouseX/100, 135+mouseY/100, 65+mouseX/100, 145+mouseY/100);
rect(55+mouseX/100, 140+mouseY/100, 60+mouseX/100, 145+mouseY/100);
rect(60+mouseX/100, 150+mouseY/100, 65+mouseX/100, 155+mouseY/100);
rect(65+mouseX/100, 160+mouseY/100, 70+mouseX/100, 165+mouseY/100);
// draw rick's head base
fill(255, 229, 204-mouseY/5);
rect(75+mouseX/100, 130+mouseY/100, 95+mouseX/100, 170+mouseY/100);
rect(70+mouseX/100, 135+mouseY/100, 75+mouseX/100, 165+mouseY/100);
// draw rick's ears
rect(65+mouseX/100, 155+mouseY/100, 70+mouseX/100, 160+mouseY/100);
rect(95+mouseX/100, 155+mouseY/100, 100+mouseX/100, 160+mouseY/100);
// draw rick's eyes
fill(255, 255, 255-mouseY/5);
rect(75+mouseX/100, 140+mouseY/100, 85+mouseX/100, 155+mouseY/100);
rect(85+mouseX/100, 140+mouseY/100, 95+mouseX/100, 155+mouseY/100);
// draw rick's nose
fill(208, 189, 171-mouseY/5);
rect(85+mouseX/100, 145+mouseY/100, 90+mouseX/100, 157+mouseY/100);
// draw rick's mouth
fill(0, 0, 0);
rect(80+mouseX/100, 160+mouseY/100, 90+mouseX/100, 163+mouseY/100);
rect(77+mouseX/100, 157+mouseY/100, 80+mouseX/100, 160+mouseY/100);
// draw rick's pupils
fill(0, 0, 0);
rect(80+mouseX/100, 140+mouseY/100, 85+mouseX/100, 150+mouseY/100);
rect(92+mouseX/100, 140+mouseY/100, 95+mouseX/100, 150+mouseY/100);
// draw rick's eyebrows
fill(188, 228, 247-mouseY/5);
rect(75+mouseX/100, 135+mouseY/100, 95+mouseX/100, 140+mouseY/100);
// draw rick's neck
fill(208, 189, 171-mouseY/5);
rect(80+mouseX/100, 170+mouseY/100, 90+mouseX/100, 175+mouseY/100);
// draw rick's lab coat
fill(255, 255, 255-mouseY/5);
rect(60+mouseX/100, 180+mouseY/100, 105+mouseX/100, 275+mouseY/100);
rect(67+mouseX/100, 175+mouseY/100, 80+mouseX/100, 180+mouseY/100);
rect(65+mouseX/100, 280+mouseY/100, 70+mouseX/100, 260+mouseY/100);
rect(95+mouseX/100, 275+mouseY/100, 105+mouseX/100, 280+mouseY/100);
rect(90+mouseX/100, 275+mouseY/100, 100+mouseX/100, 280+mouseY/100);
// draw rick's shirt
fill(128, 228, 247-mouseY/5);
rect(80+mouseX/100, 175+mouseY/100, 95+mouseX/100, 245+mouseY/100);
// draw rick's arms
fill(255, 255, 255-mouseY/5);
rect(105+mouseX/100, 180+mouseY/100, 155+mouseX/100, 190+mouseY/100);
rect(105+mouseX/100, 190+mouseY/100, 110+mouseX/100, 195+mouseY/100);
rect(55+mouseX/100, 185+mouseY/100, 65+mouseX/100, 248+mouseY/100);
// draw rick's hands
fill(255, 229, 204-mouseY/5);
rect(55+mouseX/100, 248+mouseY/100, 65+mouseX/100, 260+mouseY/100);
rect(155+mouseX/100, 180+mouseY/100, 170+mouseX/100, 185+mouseY/100);
rect(155+mouseX/100, 185+mouseY/100, 165+mouseX/100, 190+mouseY/100);
// draw rick's belt
fill(0, 0, 0);
rect(75+mouseX/100, 230+mouseY/100, 95+mouseX/100, 235+mouseY/100);
fill(255, 255, 0-mouseY/5);
rect(85+mouseX/100, 230+mouseY/100, 90+mouseX/100, 235+mouseY/100);
// draw rick's pants
fill(148, 114, 63-mouseY/5);
rect(70+mouseX/100, 260+mouseY/100, 80+mouseX/100, 305+mouseY/100);
rect(75+mouseX/100, 235+mouseY/100, 80+mouseX/100, 260+mouseY/100);
rect(75+mouseX/100, 235+mouseY/100, 95+mouseX/100, 245+mouseY/100);
rect(90+mouseX/100, 260+mouseY/100, 100+mouseX/100, 305+mouseY/100);
rect(90+mouseX/100, 235+mouseY/100, 95+mouseX/100, 260+mouseY/100);
// draw rick's shoes
fill(255, 255, 255-mouseY/5);
rect(70+mouseX/100, 305+mouseY/100, 80+mouseX/100, 310+mouseY/100);
rect(90+mouseX/100, 305+mouseY/100, 100+mouseX/100, 310+mouseY/100);
fill(73, 73, 73-mouseY/5);
rect(65+mouseX/100, 310+mouseY/100, 80+mouseX/100, 315+mouseY/100);
rect(90+mouseX/100, 310+mouseY/100, 105+mouseX/100, 315+mouseY/100);
fill(51, 51, 51-mouseY/5);
rect(60+mouseX/100, 315+mouseY/100, 80+mouseX/100, 320+mouseY/100);
rect(90+mouseX/100, 315+mouseY/100, 110+mouseX/100, 320+mouseY/100);
// draw rick's portal gun
fill(200, 200, 200-mouseY/5);
rect(150+mouseX/100, 170+mouseY/100, 190+mouseX/100, 180+mouseY/100);
rect(145+mouseX/100, 190+mouseY/100, 160+mouseX/100, 195+mouseY/100);
fill(128, 255, 0-mouseY/5);
rect(160+mouseX/100, 160+mouseY/100, 165+mouseX/100, 170+mouseY/100);
}
void mouseDragged() {
// draw rick's portal
fill(128, 255, 0);
ellipse(320+mouseX/100, 180+mouseY/100, 40+mouseX/100, 200);
fill(255, 255, 255);
ellipse(320+mouseX/100, 180+mouseY/100, 30+mouseX/100, 160);
fill(102, 204, 0);
ellipse(320+mouseX/100, 180+mouseY/100, 25+mouseX/100, 150);
fill(76, 153, 0);
ellipse(320+mouseX/100, 180+mouseY/100, 10+mouseX/100, 100);
// draw shadow of rick's portal
fill(210, 88, 88-mouseY/7);
ellipse(320+mouseX/100, 320+mouseY/100, 40+mouseX/100, 8);
// draw portal transmission beam
stroke(128, 255, 0);
strokeWeight(3);
line(190+mouseX/100, 175+mouseY/100, 319+mouseX/100, 174+mouseY/100);
noStroke();
}
// say catch phrase when a key is pressed
void keyPressed() {
println("WUBALUBADUBDUB!!!");
}