/***************************************************** Mexican Standoff by Klayton Cheuk September 20, 2016 A scene depicting three lone gunmen having a showdown in the Wild West. Move the mouse left and right to view each side of the closest gunman. Move the mouse up and down to change the time of day. Click to twitch the closest gunman's trigger finger. ******************************************************/ void setup() { // create space size(400, 400); // no stroke lines, and set the appropriate modes noStroke(); rectMode(CORNERS); ellipseMode(CENTER); } void draw () { // set the framerate frameRate(60); // draw a base sky color background(106, 166, 255); //modify the color fill(255, 83, 0, mouseY * 2 - 250); rect(0, 0, 400, 400); fill(34, 1, 92, mouseY * 2 - 500); rect(0, 0, 400, 400); // the prodigal sun fill(255, 255, 75, mouseY / 1.5 - 100); ellipse(200, mouseY - 50, 175, 175); fill(255, 255, 100, mouseY / 1.5 - 100); ellipse(200, mouseY - 50, 125, 125); fill(255, 255, 200); ellipse(200, mouseY - 50, 75, 75); // the ground fill(-mouseY / 4 + 176, -mouseY / 4 + 104, -mouseY / 4 + 62); rect(0, 260, 400, 400); // some faraway rock formations fill(-mouseY / 2 + 232, -mouseY / 2 + 137, -mouseY / 2 + 81); quad(-mouseX / 20, 180, -mouseX / 20 + 20, 180, -mouseX / 20 + 40, 240, -mouseX / 20, 240); quad(-mouseX / 20, 240, -mouseX / 20, 260, -mouseX / 20 + 90, 260, -mouseX / 20 + 40, 240); quad(-mouseX / 20 + 180, 200, -mouseX / 20 + 210, 200, -mouseX / 20 + 220, 230, -mouseX / 20 + 180, 230); quad(-mouseX / 20 + 180, 230, -mouseX / 20 + 220, 230, -mouseX / 20 + 280, 260, -mouseX / 20 + 160, 260); quad(-mouseX / 20 + 310, 260, -mouseX / 20 + 340, 220, -mouseX / 20 + 410, 220, -mouseX / 20 + 470, 260); quad(-mouseX / 20 + 340, 220, -mouseX / 20 + 350, 170, -mouseX / 20 + 390, 170, -mouseX / 20 + 410, 220); // stars stroke(255, 255, 255, mouseY - 150); strokeWeight(1.5); point(360, 40); point(20, 120); point(200, 80); point(220, 210); point(360, 160); point(260, 120); point(140, 20); point(100, 90); point(105, 215); point(60, 180); point(310, 80); point(190, 180); point(30, 20); noStroke(); // the little man on the left: // his legs fill(-mouseY / 6 + 48, -mouseY / 6 + 72, -mouseY / 6 + 127); rect(-mouseX / 4 + 130, 250, -mouseX / 4 + 140, 270); rect(-mouseX / 4 + 80, 250, -mouseX / 4 + 90, 270); rect(-mouseX / 4 + 80, 240, -mouseX / 4 + 140, 250); // his shoes fill(-mouseY / 4 + 50, -mouseY / 4 + 50, -mouseY / 4 + 50); triangle(-mouseX / 4 + 70, 270, -mouseX / 4 + 90, 270, -mouseX / 4 + 80, 260); triangle(-mouseX / 4 + 130, 270, -mouseX / 4 + 150, 270, -mouseX / 4 + 140, 260); // his arms fill(-mouseY / 3 + 200, -mouseY / 3 + 200, -mouseY / 3 + 200); quad(-mouseX / 4 + 150, 235, -mouseX / 4 + 155, 230, -mouseX / 4 + 145, 220, -mouseX / 4 + 140, 225); quad(-mouseX / 4 + 70, 235, -mouseX / 4 + 65, 230, -mouseX / 4 + 75, 220, -mouseX / 4 + 80, 225); // his handsies fill(-mouseY / 3 + 255, -mouseY / 3 + 207, -mouseY / 3 + 161); ellipse(-mouseX / 4 + 155, 235, 12, 12); ellipse(-mouseX/ 4 + 65, 235, 12, 12); // his poncho fill(-mouseY / 3 + 219, 0, 0); triangle(-mouseX / 4 + 110, 255, -mouseX / 4 + 150, 220, -mouseX / 4 + 70, 220); // his face fill(-mouseY / 8 + 97, -mouseY / 8 + 82, -mouseY / 8 + 67); rect(-mouseX / 4 + 100, 200, -mouseX / 4 + 120, 220); // his eyes strokeWeight(3); stroke(255, 255, 255); line(-mouseX / 4 + 105, 200, -mouseX / 4 + 105, 211); line(-mouseX / 4 + 114.5, 200, -mouseX / 4 + 114.5, 211); noStroke(); //his hat fill(-mouseY / 5 + 50, -mouseY / 5 + 50, -mouseY / 5 + 50); quad(-mouseX / 4 + 110, 210, -mouseX / 4 + 135, 200, -mouseX / 4 + 110, 190, -mouseX / 4 + 85, 200); rect(-mouseX / 4 + 100, 187, -mouseX / 4 + 120, 195); fill(-mouseY / 4 + 150, 0, 0); rect(-mouseX / 4 + 100, 195, -mouseX / 4 + 120, 200); // his face bandana fill(-mouseY / 4 + 150, 0, 0); rect(-mouseX / 4 + 95, 215, -mouseX / 4 + 125, 225); triangle(-mouseX / 4 + 110, 235, -mouseX / 4 + 95, 225, -mouseX / 4 + 125, 225); // the little man on the right: // his legs fill(-mouseY / 4 + 105, -mouseY / 4 + 204, -mouseY / 4 + 255); rect(-mouseX / 4 + 350, 240, -mouseX / 4 + 360, 270); rect(-mouseX / 4 + 400, 240, -mouseX / 4 + 410, 270); rect(-mouseX / 4 + 350, 240, -mouseX / 4 + 410, 250); // his boots fill(-mouseY / 4 + 145, -mouseY / 4 + 86, -mouseY / 4 + 51); rect(-mouseX / 4 + 348, 255, -mouseX / 4 + 362, 270); triangle(-mouseX / 4 + 340, 270, -mouseX / 4 + 360, 270, -mouseX / 4 + 350, 260); rect(-mouseX / 4 + 398, 255, -mouseX / 4 + 412, 270); triangle(-mouseX / 4 + 400, 270, -mouseX / 4 + 420, 270, -mouseX / 4 + 410, 260); // his arms fill(-mouseY / 3 + 230, -mouseY / 3 + 230, -mouseY / 3 + 230); quad(-mouseX / 4 + 420, 235, -mouseX / 4 + 425, 230, -mouseX / 4 + 415, 220, -mouseX / 4 + 410, 225); quad(-mouseX / 4 + 340, 235, -mouseX / 4 + 335, 230, -mouseX / 4 + 345, 220, -mouseX / 4 + 350, 225); rect(-mouseX / 4 + 345, 220, -mouseX / 4 + 415, 228); // his handsies fill(-mouseY / 4 + 145, -mouseY / 4 + 86, -mouseY / 4 + 51); ellipse(-mouseX / 4 + 425, 235, 12, 12); ellipse(-mouseX / 4 + 335, 235, 12, 12); // the torso fill(-mouseY / 3 + 230, -mouseY / 3 + 230, -mouseY / 3 + 230); rect(-mouseX / 4 + 368, 220, -mouseX / 4 + 392, 240); strokeWeight(1); stroke(100, 100, 100); line(-mouseX / 4 + 380, 220, -mouseX / 4 + 380, 240); noStroke(); // the jacket fill(-mouseY / 4 + 145, -mouseY / 4 + 86, -mouseY / 4 + 51); rect(-mouseX / 4 + 365, 218, -mouseX / 4 + 375, 235); rect(-mouseX / 4 + 385, 218, -mouseX / 4 + 395, 235); // the belt and buckle fill(-mouseY / 4 + 145, -mouseY / 4 + 86, -mouseY / 4 + 51); rect(-mouseX / 4 + 366, 238, -mouseX / 4 + 394, 240); fill(-mouseY / 5 + 255, -mouseY / 4 + 239, 0); rect(-mouseX / 4 + 375, 236, -mouseX / 4 + 385, 242); // his face fill(-mouseY / 8 + 97, -mouseY / 8 + 82, -mouseY / 8 + 67); rect(-mouseX / 4 + 370, 200, -mouseX / 4 + 390, 220); // his eyes strokeWeight(3); stroke(255, 255, 255); line(-mouseX / 4 + 375, 200, -mouseX / 4 + 375, 213); line(-mouseX / 4 + 384.5, 200, -mouseX / 4 + 384.5, 213); noStroke(); // his hat fill(-mouseY / 3 + 200, -mouseY / 3 + 200, -mouseY / 3 + 200); rect(-mouseX / 4 + 360, 208, -mouseX / 4 + 400, 210); rect(-mouseX / 4 + 392, 205, -mouseX / 4 + 400, 210); rect(-mouseX / 4 + 370, 180, -mouseX / 4 + 390, 200); ellipse(-mouseX / 4 + 385, 180, 10, 10); ellipse(-mouseX / 4 + 375, 180, 10, 10); fill(-mouseY / 4 + 150, -mouseY / 4 + 150, -mouseY / 4 + 150); rect(-mouseX / 4 + 370, 200, -mouseX / 4 + 390, 208); //the close man: fill(-mouseY / 4 + 186, -mouseY / 4 + 163, -mouseY / 4 + 132); rect(-mouseX + 280, 0, -mouseX + 520, 210); fill(-mouseY / 10 + 50, -mouseY / 10 +50, -mouseY / 10 + 50); rect(-mouseX + 270, 210, -mouseX + 530, 290); fill(-mouseY / 5 + 125, -mouseY / 5 + 66, -mouseY / 5 + 31); rect(-mouseX + 280, 290, -mouseX + 390, 400); rect(-mouseX + 390, 290, -mouseX + 410, 360); rect(-mouseX + 410, 290, -mouseX + 520, 400); // his guns: fill(-mouseY / 10 + 50, -mouseY / 10 + 50, -mouseY / 10 + 50); quad(-mouseX + 220, 270, -mouseX + 280, 270, -mouseX + 260, 400, -mouseX + 240, 400); quad(-mouseX + 520, 270, -mouseX + 580, 270, -mouseX + 560, 400, -mouseX + 540, 400); fill(-mouseY / 5 + 100, -mouseY / 5 + 100, -mouseY / 5 + 100); rect(-mouseX + 230, 250, -mouseX + 270, 270); rect(-mouseX + 530, 250, -mouseX + 570, 270); fill(-mouseY / 5 + 150, -mouseY / 5 + 150, -mouseY / 5 + 150); rect(-mouseX + 240, 240, -mouseX + 260, 270); rect(-mouseX + 540, 240, -mouseX + 560, 270); fill(-mouseY / 6 + 115, -mouseY / 8 + 56, -mouseY / 8 + 21); quad(-mouseX + 230, 220, -mouseX + 270, 220, -mouseX + 260, 240, -mouseX + 240, 240); quad(-mouseX + 530, 220, -mouseX + 570, 220, -mouseX + 560, 240, -mouseX + 540, 240); rect(-mouseX + 230, 220, -mouseX + 270, 160, 15, 15, 0, 0); rect(-mouseX + 530, 220, -mouseX + 570, 160, 15, 15, 0, 0); fill(-mouseY / 6 + 95, -mouseY / 8 + 36, -mouseY / 8 + 1); rect(-mouseX + 230, 160, -mouseX + 270, 210, 15); rect(-mouseX + 530, 160, -mouseX + 570, 210, 15); rect(-mouseX + 245, 230, -mouseX + 255, 265); rect(-mouseX + 545, 230, -mouseX + 555, 265); // his hands: fill(-mouseY / 10 + 50, -mouseY / 10 + 50, -mouseY / 10 + 50); // his forearms quad(-mouseX + 150, -10, -mouseX + 80, 0, -mouseX + 110, 80, -mouseX + 160, 70); quad(-mouseX + 650, -10, -mouseX + 720, 0, -mouseX + 690, 80, -mouseX + 640, 70); // his palms quad(-mouseX + 160, 69, -mouseX + 110, 79, -mouseX + 120, 130, -mouseX + 170, 120); quad(-mouseX + 640, 69, -mouseX + 690, 79, -mouseX + 680, 130, -mouseX + 630, 120); // his thumbs quad(-mouseX + 140, 60, -mouseX + 180, 80, -mouseX + 180, 90, -mouseX + 140, 100); quad(-mouseX + 660, 60, -mouseX + 620, 80, -mouseX + 620, 90, -mouseX + 660, 100); quad(-mouseX + 180, 80, -mouseX + 200, 100, -mouseX + 190, 110, -mouseX + 170, 90); quad(-mouseX + 620, 80, -mouseX + 600, 100, -mouseX + 610, 110, -mouseX + 630, 90); // his pointers quad(-mouseX + 168, 110, -mouseX + 198, 140, -mouseX + 190, 150, -mouseX + 160, 120); quad(-mouseX + 632, 110, -mouseX + 602, 140, -mouseX + 610, 150, -mouseX + 640, 120); // his birds rect(-mouseX + 145, 120, -mouseX + 160, 160); rect(-mouseX + 640, 120, -mouseX + 655, 160); // his... thirds? quad(-mouseX + 141, 125, -mouseX + 130, 115, -mouseX + 115, 155, -mouseX + 126, 160); quad(-mouseX + 659, 125, -mouseX + 670, 115, -mouseX + 685, 155, -mouseX + 674, 160); // his pinkies quad(-mouseX + 120, 90, -mouseX + 130, 110, -mouseX + 114, 145, -mouseX + 105, 140); quad(-mouseX + 680, 90, -mouseX + 670, 110, -mouseX + 684, 145, -mouseX + 695, 140); } // the triggerfinger twitch! void mousePressed () { // stall time a bit frameRate(30); // hide the current pointers fill(106, 166, 255); quad(-mouseX + 168, 109, -mouseX + 199, 140, -mouseX + 190, 151, -mouseX + 161, 120); quad(-mouseX + 630, 109, -mouseX + 602, 140, -mouseX + 610, 151, -mouseX + 639, 120); fill(255, 83, 0, mouseY * 2 - 250); quad(-mouseX + 168, 109, -mouseX + 199, 140, -mouseX + 190, 151, -mouseX + 161, 120); quad(-mouseX + 630, 109, -mouseX + 602, 140, -mouseX + 610, 151, -mouseX + 639, 120); fill(34, 1, 92, mouseY * 2 - 500); quad(-mouseX + 168, 109, -mouseX + 199, 140, -mouseX + 190, 151, -mouseX + 161, 120); quad(-mouseX + 630, 109, -mouseX + 602, 140, -mouseX + 610, 151, -mouseX + 639, 120); // twitching pointers fill(-mouseY / 10 + 50, -mouseY / 10 + 50, -mouseY / 10 + 50); quad(-mouseX + 168, 109, -mouseX + 193, 145, -mouseX + 185, 155, -mouseX + 160, 120); quad(-mouseX + 632, 110, -mouseX + 607, 145, -mouseX + 615, 155, -mouseX + 640, 120); }