float origin = 0; int startWave = -5; float birdX = 2500; float birdX2 = 250; int spaceX = 240; int spaceY = 490; int whaleX = -2000; float x; float y; void setup() { size(750,500); frameRate(5); smooth(); } void draw() { int T = millis(); println(origin); if (T < 7500) { background(3,194,250); ocean(); crowsNest(); wavesdraw(); PFont font; font = loadFont("Ziggurat-HTF-Black-32.vlw"); textFont(font); fill(255); String p = "WELCOME ABOARD"; String r = "THE PEQUOD!"; String s = "Click on left side to move left"; String t = "Click on right side to move right"; String u = "Have a look around from the crow's nest"; textSize(25); text(p, 215, 50, 750, 40); text(r, 265, 100, 800, 40); fill(255,200,25); textSize(25); text(u, 75, 150, 775, 40); fill(255); textSize(15); text(s, 20, 200, 750, 60); text(t, 450, 200, 750, 60); stroke(0); } else { background(3,194,250); ocean(); wavesdraw(); crowsNest(); rose(); stroke(0); //move canvas into window translate(origin, 0); //draw rest of landscape mountains1(50); bird(); bird2(); cloud(-2000, 150); cloud(-1300, 75); cloud(-2800, 240); cloud(400, 70); cloud(900, 150); cloud(1900, 47); cloud(2300, 135); cloud(3500, 20); ship(1600); whaleBody(); whaleSpray(); whaleSpray(); whaleSpray(); whaleSpray(); } } //mouse controls void mousePressed() { if (mouseX <= 375) { origin += 750; } if (mouseX >375) { origin -= 750; } if (origin == 3750) { origin = -3000; } if (origin == -3750) { origin = 3000; } } // object functions void ocean() { fill(20,50,120); rect(-width,301,6000,200); } void wavesdraw(){ noFill(); stroke(255); startWave = startWave + 5; if (startWave > 0) { startWave = -5; } for (int waveX = startWave; waveX < 775; waveX += 10){ int waveY = 425; bezier(waveX,waveY,waveX,waveY+10,waveX+10,waveY+10, waveX+10,waveY); bezier(waveX+10,waveY,waveX+10,waveY+10,waveX+20,waveY+10 , waveX+20, waveY); bezier(waveX+20,waveY,waveX+20,waveY+10,waveX+30,waveY+10 , waveX+30, waveY); } if (startWave > 0) { startWave = +5; } for (int waveX = startWave; waveX < 755; waveX += 10){ int waveY = 325; bezier(waveX,waveY,waveX,waveY+10,waveX+10,waveY+10, waveX+10,waveY); bezier(waveX+10,waveY,waveX+10,waveY+10,waveX+20,waveY+10 , waveX+20, waveY); bezier(waveX+20,waveY,waveX+20,waveY+10,waveX+30,waveY+10 , waveX+30, waveY); } } void crowsNest(){ stroke(0); fill(200,175,10); ellipse(width / 2,height,475,110); fill(255,200,25); ellipse(width/2,height,440,80); // for (int spacey = 495; spacey>=485; spacey -= 1) { // for (int spacex = 180; spacex<550; spacex += 30){ // if (spacey > 455) { // fill(20,50,120); // line(spacex, spacey, spacex, 550); // } // } // } } void whaleSpray(){ stroke(255); line(whaleX+45,312, random(whaleX+30,whaleX+60),270); stroke(0); } void whaleBody(){ fill(156); bezier(whaleX,350, whaleX,300 ,whaleX+100 ,300 , whaleX+100, 350); beginShape(); vertex(whaleX+155, 350); bezierVertex(whaleX+160,355,whaleX+155, 335, whaleX+150,340); bezierVertex(whaleX+155, 335 ,whaleX+175,335, whaleX+170, 340); vertex(whaleX+170, 340); bezierVertex(whaleX+170, 335 , whaleX+160,355, whaleX+165, 350); vertex(whaleX+155,350); endShape(); fill(0); ellipse(whaleX+20, 340, 4, 4); } void mountains1(int mountainX){ fill(200,175,10); bezier(mountainX,302,mountainX ,200 ,mountainX-100 ,200, mountainX-100,302); fill(255,175,10); bezier(mountainX+100,302,mountainX+100 ,175 ,mountainX ,175, mountainX,302); fill(55,200,10); bezier(mountainX+50,302,mountainX+50 ,250 ,mountainX-75 ,250, mountainX-75,302); } void bird(){ // int birdSpot = birdX; if (birdX >= 3750) { birdX = -3000; } birdX = birdX+5; noFill(); beginShape(); vertex(birdX,100); bezierVertex(birdX+5,95,birdX+15,110,birdX+10,105); bezierVertex(birdX+10,105, birdX+25, 105, birdX+20,100); endShape(); } void bird2(){ // int birdSpot = birdX; if (birdX2 == -3000) { birdX2 = 3750; } birdX2 = birdX2-5; noFill(); beginShape(); vertex(birdX2,150); bezierVertex(birdX2+5,145,birdX2+15,160,birdX2+10,155); bezierVertex(birdX2+10,155, birdX2+20, 147, birdX2+20,150); endShape(); } void cloud(float cloudx, float cloudy){ noStroke(); fill(255); ellipse(cloudx,cloudy, 40, 25); ellipse(cloudx+20,cloudy, 60, 40); ellipse(cloudx+40,cloudy, 40, 20); } void ship(float shipX) { stroke(196, 172,36); strokeWeight(3); line(shipX + 100, 350, shipX + 100, 225); line(shipX +75, 250, shipX+125, 250); line(shipX +60, 335, shipX+140, 335); strokeWeight(1); stroke(0); fill(255); bezier(shipX + 90, 334, shipX+50, 340, shipX+50, 240 ,shipX +90, 251); bezier(shipX + 130, 334, shipX+90, 340, shipX+90, 240 ,shipX +130, 251); beginShape(); fill(152,134,29); vertex(shipX,350); bezierVertex(shipX,300, shipX+60, 410, shipX+50,400); vertex(shipX+150,400); bezierVertex(shipX+140,410,shipX+200,300,shipX+200,350); endShape(); } void rose() { stroke(255); strokeWeight(2); smooth(); int radius = 25; for (int deg = 0; deg < 360; deg += 40) { float angle = radians(deg); x = 700 + (cos(angle) * radius); y = 50 + (sin(angle) * radius); line(700, 50, x,y); strokeWeight(1); println(y); } if (origin == 0) { fill(0); ellipse(725,50,6,6); } if (origin == -750) { fill(0); ellipse(719,66,6,6); } if (origin == -1500) { fill(0); ellipse(704,74,6,6); } if (origin == -2250) { fill(0); ellipse(687,71,6,6); } if (origin == -3000) { fill(0); ellipse(676,58,6,6); } if (origin == 3000) { fill(0); ellipse(676,41,6,6); } if (origin == 2250) { fill(0); ellipse(687,28,6,6); } if (origin == 1500) { fill(0); ellipse(704,24,6,6); } if (origin == 750) { fill(0); ellipse(719,33,6,6); } }