//Nick Battista //2016/09/22 //Ye Olde Pirate Ship //Uses mouseX and mouseY with sinusoisal functions in order //to simulate perspective and to change from day to night void setup() { size(400, 400); frameRate(30); } void draw() { //Reset to white colorMode(HSB, 360, 100, 100); background(180, 100, 100-mouseY/5); colorMode(RGB, 255, 255, 255); //Sun fill(255, 220, 0); ellipseMode(CENTER); ellipse(200+355*cos(mouseY*PI/400-PI/2), 400+355*sin(mouseY*PI/400-PI/2), 50, 50); //Moon fill(230, 230, 230); ellipse(200+355*cos(mouseY*PI/400+PI/2), 400+355*sin(mouseY*PI/400+PI/2), 50, 50); colorMode(HSB, 360, 100, 100); fill(180, 100, 100-mouseY/5); ellipse(200+355*cos(mouseY*PI/400+PI/2+PI/80), 400+355*sin(mouseY*PI/400+PI/2+PI/80), 50, 50); colorMode(RGB, 255, 255, 255); //Clouds fill(255, 255, 255); ellipse(80+(mouseX-200)/8, 60, 55, 55); ellipse(50+(mouseX-200)/8, 60, 30, 30); ellipse(110+(mouseX-200)/8, 70, 30, 30); ellipse(300+(mouseX-200)/8, 40, 45, 45); ellipse(280+(mouseX-200)/8, 50, 30, 30); //Sails stroke(1, 75); fill(255, 255, 255); quad(180+(mouseX-200)/6+5*cos(frameCount*PI/30), 90+10*sin(frameCount*PI/30), 160+(mouseX-200)/6+5*cos(frameCount*PI/30), 130+10*sin(frameCount*PI/30), 210+(mouseX-200)/6+5*cos(frameCount*PI/30), 145+10*sin(frameCount*PI/30), 240+(mouseX-200)/6+5*cos(frameCount*PI/30), 85+10*sin(frameCount*PI/30)); quad(100+(mouseX-200)/6+5*cos(frameCount*PI/30), 110+10*sin(frameCount*PI/30), 35+(mouseX-200)/6+5*cos(frameCount*PI/30), 215+10*sin(frameCount*PI/30), 200+(mouseX-200)/6+5*cos(frameCount*PI/30), 220+10*sin(frameCount*PI/30), 200+(mouseX-200)/6+5*cos(frameCount*PI/30), 125+10*sin(frameCount*PI/30)); //Rope line(210+(mouseX-200)/6+5*cos(frameCount*PI/30), 110+10*sin(frameCount*PI/30), 380+(mouseX-200)/6+5*cos(frameCount*PI/30), 240+10*sin(frameCount*PI/30)); line(375+(mouseX-200)/6+5*cos(frameCount*PI/30), 235+10*sin(frameCount*PI/30), 250+(mouseX-200)/6+5*cos(frameCount*PI/30), 260+10*sin(frameCount*PI/30)); line (250+(mouseX-200)/6+5*cos(frameCount*PI/30), 260+10*sin(frameCount*PI/30), 210+(mouseX-200)/6+5*cos(frameCount*PI/30), 110+10*sin(frameCount*PI/30)); triangle(215+(mouseX-200)/6+5*cos(frameCount*PI/30), 130+10*sin(frameCount*PI/30), 250+(mouseX-200)/6+5*cos(frameCount*PI/30), 260+10*sin(frameCount*PI/30), 360+(mouseX-200)/6+5*cos(frameCount*PI/30), 237+10*sin(frameCount*PI/30)); //Hull fill(155, 100, 50); noStroke(); quad(260+(mouseX-200)/6+5*cos(frameCount*PI/30), 320+10*sin(frameCount*PI/30), 310+(mouseX-200)/6+5*cos(frameCount*PI/30), 320+10*sin(frameCount*PI/30), 380+(mouseX-200)/6+5*cos(frameCount*PI/30), 240+10*sin(frameCount*PI/30), 340+(mouseX-200)/6+5*cos(frameCount*PI/30), 240+10*sin(frameCount*PI/30)); quad(320+(mouseX-200)/6+5*cos(frameCount*PI/30), 260+10*sin(frameCount*PI/30), 310+(mouseX-200)/6+5*cos(frameCount*PI/30), 320+10*sin(frameCount*PI/30), 180+(mouseX-200)/6+5*cos(frameCount*PI/30), 320+10*sin(frameCount*PI/30), 180+(mouseX-200)/6+5*cos(frameCount*PI/30), 260+10*sin(frameCount*PI/30)); quad(80+(mouseX-200)/6+5*cos(frameCount*PI/30), 250+10*sin(frameCount*PI/30), 120+(mouseX-200)/6+5*cos(frameCount*PI/30), 320+10*sin(frameCount*PI/30), 210+(mouseX-200)/6+5*cos(frameCount*PI/30), 320+10*sin(frameCount*PI/30), 175+(mouseX-200)/6+5*cos(frameCount*PI/30), 250+10*sin(frameCount*PI/30)); quad(60+(mouseX-200)/6+5*cos(frameCount*PI/30), 230+10*sin(frameCount*PI/30), 65+(mouseX-200)/6+5*cos(frameCount*PI/30), 250+10*sin(frameCount*PI/30), 175+(mouseX-200)/6+5*cos(frameCount*PI/30), 250+10*sin(frameCount*PI/30), 165+(mouseX-200)/6+5*cos(frameCount*PI/30), 230+10*sin(frameCount*PI/30)); //Mast fill(175, 100, 50); stroke(1, 5); quad(200+(mouseX-200)/6+5*cos(frameCount*PI/30), 40+10*sin(frameCount*PI/30), 210+(mouseX-200)/6+5*cos(frameCount*PI/30), 40+10*sin(frameCount*PI/30), 220+(mouseX-200)/6+5*cos(frameCount*PI/30), 260+10*sin(frameCount*PI/30), 200+(mouseX-200)/6+5*cos(frameCount*PI/30), 260+10*sin(frameCount*PI/30)); quad(180+(mouseX-200)/6+5*cos(frameCount*PI/30), 90+10*sin(frameCount*PI/30), 175+(mouseX-200)/6+5*cos(frameCount*PI/30), 80+10*sin(frameCount*PI/30), 235+(mouseX-200)/6+5*cos(frameCount*PI/30), 75+10*sin(frameCount*PI/30), 240+(mouseX-200)/6+5*cos(frameCount*PI/30), 85+10*sin(frameCount*PI/30)); quad(100+(mouseX-200)/6+5*cos(frameCount*PI/30), 100+10*sin(frameCount*PI/30), 95+(mouseX-200)/6+5*cos(frameCount*PI/30), 110+10*sin(frameCount*PI/30), 200+(mouseX-200)/6+5*cos(frameCount*PI/30), 125+10*sin(frameCount*PI/30), 200+(mouseX-200)/6+5*cos(frameCount*PI/30), 115+10*sin(frameCount*PI/30)); quad(200+(mouseX-200)/6+5*cos(frameCount*PI/30), 215+10*sin(frameCount*PI/30), 200+(mouseX-200)/6+5*cos(frameCount*PI/30), 225+10*sin(frameCount*PI/30), 25+(mouseX-200)/6+5*cos(frameCount*PI/30), 220+10*sin(frameCount*PI/30), 30+(mouseX-200)/6+5*cos(frameCount*PI/30), 210+10*sin(frameCount*PI/30)); //Water fill(0, 0, 255); beginShape(); vertex(500+(mouseX-200)/4, 400); vertex(0+(mouseX-200)/4, 400); curveVertex(-100+(mouseX-200)/4, 300+10*sin(frameCount*PI/30)); curveVertex(-100+(mouseX-200)/4, 300+10*sin(frameCount*PI/30)); curveVertex(-70+(mouseX-200)/4, 300+10*sin(frameCount*PI/30)); curveVertex(-40+(mouseX-200)/4, 300+10*sin((frameCount+6)*PI/30)); curveVertex(-10+(mouseX-200)/4, 300+10*sin((frameCount+12)*PI/30)); curveVertex(20+(mouseX-200)/4, 300+10*sin((frameCount+18)*PI/30)); curveVertex(50+(mouseX-200)/4, 300+10*sin((frameCount+24)*PI/30)); curveVertex(80+(mouseX-200)/4, 300+10*sin((frameCount+30)*PI/30)); curveVertex(110+(mouseX-200)/4, 300+10*sin((frameCount+36)*PI/30)); curveVertex(140+(mouseX-200)/4, 300+10*sin((frameCount+42)*PI/30)); curveVertex(170+(mouseX-200)/4, 300+10*sin((frameCount+48)*PI/30)); curveVertex(200+(mouseX-200)/4, 300+10*sin((frameCount+54)*PI/30)); curveVertex(230+(mouseX-200)/4, 300+10*sin(frameCount*PI/30)); curveVertex(260+(mouseX-200)/4, 300+10*sin((frameCount+6)*PI/30)); curveVertex(290+(mouseX-200)/4, 300+10*sin((frameCount+12)*PI/30)); curveVertex(320+(mouseX-200)/4, 300+10*sin((frameCount+18)*PI/30)); curveVertex(350+(mouseX-200)/4, 300+10*sin((frameCount+24)*PI/30)); curveVertex(380+(mouseX-200)/4, 300+10*sin((frameCount+30)*PI/30)); curveVertex(410+(mouseX-200)/4, 300+10*sin((frameCount+36)*PI/30)); curveVertex(440+(mouseX-200)/4, 300+10*sin((frameCount+42)*PI/30)); curveVertex(470+(mouseX-200)/4, 300+10*sin((frameCount+48)*PI/30)); curveVertex(500+(mouseX-200)/4, 300+10*sin((frameCount+54)*PI/30)); curveVertex(500+(mouseX-200)/4, 300+10*sin(frameCount*PI/30)); curveVertex(500+(mouseX-200)/4, 300+10*sin((frameCount+6)*PI/30)); vertex(500+(mouseX-200)/4, 300); vertex(500+(mouseX-200)/4, 400); endShape(); //Foreground Water fill(0, 0, 191); beginShape(); vertex(500, 400); vertex(0, 400); curveVertex(-100+(mouseX-200)/3, 325+20*sin(frameCount*PI/50)); curveVertex(-100+(mouseX-200)/3, 325+20*sin(frameCount*PI/50)); curveVertex(-70+(mouseX-200)/3, 325+20*sin(frameCount*PI/50)); curveVertex(-40+(mouseX-200)/3, 325+20*sin((frameCount+10)*PI/50)); curveVertex(-10+(mouseX-200)/3, 325+20*sin((frameCount+20)*PI/50)); curveVertex(20+(mouseX-200)/3, 325+20*sin((frameCount+30)*PI/50)); curveVertex(50+(mouseX-200)/3, 325+20*sin((frameCount+40)*PI/50)); curveVertex(80+(mouseX-200)/3, 325+20*sin((frameCount+50)*PI/50)); curveVertex(110+(mouseX-200)/3, 325+20*sin((frameCount+60)*PI/50)); curveVertex(140+(mouseX-200)/3, 325+20*sin((frameCount+70)*PI/50)); curveVertex(170+(mouseX-200)/3, 325+20*sin((frameCount+80)*PI/50)); curveVertex(200+(mouseX-200)/3, 325+20*sin((frameCount+90)*PI/50)); curveVertex(230+(mouseX-200)/3, 325+20*sin(frameCount*PI/50)); curveVertex(260+(mouseX-200)/3, 325+20*sin((frameCount+10)*PI/50)); curveVertex(290+(mouseX-200)/3, 325+20*sin((frameCount+20)*PI/50)); curveVertex(320+(mouseX-200)/3, 325+20*sin((frameCount+30)*PI/50)); curveVertex(350+(mouseX-200)/3, 325+20*sin((frameCount+40)*PI/50)); curveVertex(380+(mouseX-200)/3, 325+20*sin((frameCount+50)*PI/50)); curveVertex(410+(mouseX-200)/3, 325+20*sin((frameCount+60)*PI/50)); curveVertex(440+(mouseX-200)/3, 325+20*sin((frameCount+70)*PI/50)); curveVertex(470+(mouseX-200)/3, 325+20*sin((frameCount+80)*PI/50)); curveVertex(500+(mouseX-200)/3, 325+20*sin((frameCount+90)*PI/50)); curveVertex(500+(mouseX-200)/3, 325+20*sin(frameCount*PI/50)); curveVertex(500+(mouseX-200)/3, 325+20*sin((frameCount+10)*PI/50)); vertex(500, 300); vertex(500, 400); endShape(); } //Added this just to prove I know how it works void mouseClicked() { println("Do what you want, 'cause a pirate is free,"); println("You are a pirate!"); println("Yar har, fiddle di dee,"); println("Being a pirate is all right with me,"); println("Do what you want 'cause a pirate is free,"); println("You are a pirate!"); println("Yo Ho, ahoy and avast,"); println("Being a pirate is really badass!"); println("Hang the black flag at the end of the mast!"); println("You are a pirate!"); println("You are a pirate! - Yay!"); println("We've got us a map, (a map!)"); println("To lead us to a hidden box,"); println("That's all locked up with locks! (with locks!)"); println("And buried deep away!"); println("We'll dig up the box, (the box!)"); println("We know it's full of precious booty!"); println("Burst open the locks!"); println("And then we'll say hooray!"); println("Yar har, fiddle di dee,"); println("Being a pirate is all right with me!"); println("Do what you want 'cause a pirate is free,"); println("You are a pirate!"); println("Yo Ho, ahoy and avast,"); println("Being a Pirate is really badass!"); println("Hang the black flag"); println("At the end of the mast!"); println("You are a pirate!"); println("Hahaha!"); println("We're sailing away (set sail!),"); println("Adventure awaits on every shore!"); println("We set sail and explore (ya-har!)"); println("And run and jump all day (Yay!)"); println("We float on our boat (the boat!)"); println("Until it's time to drop the anchor,"); println("Then hang up our coats (aye-aye!)"); println("Until we sail again!"); println("Yar har, fiddle di dee,"); println("Being a pirate is all right with me!"); println("Do what you want 'cause a pirate is free,"); println("You are a pirate!"); }