// Uncharted Waters // By: Jay Menominee // "I am cursed with an everlasting itch for things remote, I love to sail forbidden seas," // Sail the seas by moving your mouse left or right // Change between night & day by moving your mouse up & down // Beware the Siren! void setup() { size(400,400); } void draw() { ///////////////////////////////// Sky pt.1 ///////////////////////////////////// //Draw Background background(125,175,200); //Day is default when mouse is at bottom. noStroke(); fill(145,185,200); rect (0,0,400,400); //Sky Changes oppacity based on mouseY, Night is revealed when mouse reaches the top. fill(25,55,80,350-mouseY*1.5); rect (0,0,400,400); //Stars appear with night sky stroke(255,350-mouseY*1.5); strokeWeight(2); point(140, 120); point(160, 70); point(190,30); point(210,130); point(220,40); point(230,90); point(260,120); //Slightly smaller stars also appear strokeWeight(1); point(120,110); point(150,100); point(170,50); point(180,100); point(190,120); point(210,20); point(220,10); point(240,100); point(250,80); point(290,130); point(220,80); noStroke(); //////////////////////////////// Mountains //////////////////////////////////////// //Three mountain ranges with parallax, they also follow the Day/Night shift //Mountains 1 //Day fill(169,166,181); triangle(120+(mouseX-200)*.1,210,170+(mouseX-200)*.1,110,220+(mouseX-200)*.1,210); triangle(160+(mouseX-200)*.1,210,190+(mouseX-200)*.1,90,250+(mouseX-200)*.1,210); triangle(160+(mouseX-200)*.1,200,210+(mouseX-200)*.1,110,250+(mouseX-200)*.1,220); //Night fill(111,106,120, 350-mouseY*1.5); triangle(120+(mouseX-200)*.1,210,170+(mouseX-200)*.1,110,220+(mouseX-200)*.1,210); triangle(160+(mouseX-200)*.1,210,190+(mouseX-200)*.1,90,250+(mouseX-200)*.1,210); triangle(160+(mouseX-200)*.1,200,210+(mouseX-200)*.1,110,250+(mouseX-200)*.1,220); //Mountains 2 //Day fill(125,120,130); rect(0+(mouseX-200)*.2,170,400,40); rect(0+(mouseX-200)*.2,110,60,60); rect(60+(mouseX-200)*.2,140,70,30); triangle(0+(mouseX-200)*.2,100,0+(mouseX-200)*.2,110,60+(mouseX-200)*.2,110); triangle(60+(mouseX-200)*.2,110,60+(mouseX-200)*.2,140,100+(mouseX-200)*.2,140); triangle(100+(mouseX-200)*.2,140,105+(mouseX-200)*.2,125,120+(mouseX-200)*.2,140); triangle(90+(mouseX-200)*.2,170,120+(mouseX-200)*.2,110,160+(mouseX-200)*.2,170); triangle(110+(mouseX-200)*.2,170,150+(mouseX-200)*.2,130,170+(mouseX-200)*.2,170); triangle(170+(mouseX-200)*.2,170,190+(mouseX-200)*.2,150,210+(mouseX-200)*.2,170); triangle(195+(mouseX-200)*.2,170,210+(mouseX-200)*.2,140,230+(mouseX-200)*.2,170); triangle(210+(mouseX-200)*.2,170,225+(mouseX-200)*.2,120,250+(mouseX-200)*.2,170); triangle(220+(mouseX-200)*.2,140,240+(mouseX-200)*.2,120,270+(mouseX-200)*.2,140); rect(230+(mouseX-200)*.2,140,40,30); triangle(235+(mouseX-200)*.2,170,280+(mouseX-200)*.2,130,300+(mouseX-200)*.2,170); triangle(280+(mouseX-200)*.2,170,310+(mouseX-200)*.2,110,330+(mouseX-200)*.2,170); triangle(280+(mouseX-200)*.2,170,330+(mouseX-200)*.2,130,410+(mouseX-200)*.2,170); triangle(320+(mouseX-200)*.2,170,370+(mouseX-200)*.2,120,420+(mouseX-200)*.2,170); //Night fill(89,83,96,350-mouseY*1.5); rect(0+(mouseX-200)*.2,170,400,40); rect(0+(mouseX-200)*.2,110,60,60); rect(60+(mouseX-200)*.2,140,70,30); triangle(0+(mouseX-200)*.2,100,0+(mouseX-200)*.2,110,60+(mouseX-200)*.2,110); triangle(60+(mouseX-200)*.2,110,60+(mouseX-200)*.2,140,100+(mouseX-200)*.2,140); triangle(100+(mouseX-200)*.2,140,105+(mouseX-200)*.2,125,120+(mouseX-200)*.2,140); triangle(90+(mouseX-200)*.2,170,120+(mouseX-200)*.2,110,160+(mouseX-200)*.2,170); triangle(110+(mouseX-200)*.2,170,150+(mouseX-200)*.2,130,170+(mouseX-200)*.2,170); triangle(170+(mouseX-200)*.2,170,190+(mouseX-200)*.2,150,210+(mouseX-200)*.2,170); triangle(195+(mouseX-200)*.2,170,210+(mouseX-200)*.2,140,230+(mouseX-200)*.2,170); triangle(210+(mouseX-200)*.2,170,225+(mouseX-200)*.2,120,250+(mouseX-200)*.2,170); triangle(220+(mouseX-200)*.2,140,240+(mouseX-200)*.2,120,270+(mouseX-200)*.2,140); rect(230+(mouseX-200)*.2,140,40,30); triangle(235+(mouseX-200)*.2,170,280+(mouseX-200)*.2,130,300+(mouseX-200)*.2,170); triangle(280+(mouseX-200)*.2,170,310+(mouseX-200)*.2,110,330+(mouseX-200)*.2,170); triangle(280+(mouseX-200)*.2,170,330+(mouseX-200)*.2,130,410+(mouseX-200)*.2,170); triangle(320+(mouseX-200)*.2,170,370+(mouseX-200)*.2,120,420+(mouseX-200)*.2,170); //Mountains 3 //Day fill(98,96, 104); rect((mouseX-200)*.4,160,120,40); rect(120+(mouseX-200)*.4,180,60,20); rect(230+(mouseX-200)*.4,180,150,20); triangle(0+(mouseX-200)*.4,160,0+(mouseX-200)*.4,200,-50+(mouseX-200)*.4,200); triangle(0+(mouseX-200)*.4,160,40+(mouseX-200)*.4,95,100+(mouseX-200)*.4,165); triangle(40+(mouseX-200)*.4,160,80+(mouseX-200)*.4,120,100+(mouseX-200)*.4,160); triangle(100+(mouseX-200)*.4,160,110+(mouseX-200)*.4,140,120+(mouseX-200)*.4,160); triangle(120+(mouseX-200)*.4,160,120+(mouseX-200)*.4,180,145+(mouseX-200)*.4,180); triangle(120+(mouseX-200)*.4,180,160+(mouseX-200)*.4,160,160+(mouseX-200)*.4,180); triangle(140+(mouseX-200)*.4,200,170+(mouseX-200)*.4,130,200+(mouseX-200)*.4,200); triangle(220+(mouseX-200)*.4,200,230+(mouseX-200)*.4,150,240+(mouseX-200)*.4,200); triangle(220+(mouseX-200)*.4,200,230+(mouseX-200)*.4,140,280+(mouseX-200)*.4,200); triangle(250+(mouseX-200)*.4,200,270+(mouseX-200)*.4,120,300+(mouseX-200)*.4,200); triangle(285+(mouseX-200)*.4,200,300+(mouseX-200)*.4,140,320+(mouseX-200)*.4,200); triangle(305+(mouseX-200)*.4,200,305+(mouseX-200)*.4,160,330+(mouseX-200)*.4,180); triangle(315+(mouseX-200)*.4,200,325+(mouseX-200)*.4,160,325+(mouseX-200)*.4,200); triangle(325+(mouseX-200)*.4,160,330+(mouseX-200)*.4,125,340+(mouseX-200)*.4,160); rect(325+(mouseX-200)*.4,160,55,20); triangle(340+(mouseX-200)*.4,160,360+(mouseX-200)*.4,120,375+(mouseX-200)*.4,140); triangle(340+(mouseX-200)*.4,160,375+(mouseX-200)*.4,140,380+(mouseX-200)*.4,160); rect(350+(mouseX-200)*.4,140,25,20); triangle(340+(mouseX-200)*.4,160,350+(mouseX-200)*.4,140,350+(mouseX-200)*.4,160); triangle(380+(mouseX-200)*.4,160,380+(mouseX-200)*.4,200,390+(mouseX-200)*.4,200); triangle(380+(mouseX-200)*.4,200,400+(mouseX-200)*.4,160,400+(mouseX-200)*.4,200); triangle(400+(mouseX-200)*.4,160,400+(mouseX-200)*.4,200,440+(mouseX-200)*.4,200); //Night fill(76,71,82,350-mouseY*1.5); rect((mouseX-200)*.4,160,120,40); rect(120+(mouseX-200)*.4,180,60,20); rect(230+(mouseX-200)*.4,180,150,20); triangle(0+(mouseX-200)*.4,160,0+(mouseX-200)*.4,200,-50+(mouseX-200)*.4,200); triangle(0+(mouseX-200)*.4,160,40+(mouseX-200)*.4,95,100+(mouseX-200)*.4,165); triangle(40+(mouseX-200)*.4,160,80+(mouseX-200)*.4,120,100+(mouseX-200)*.4,160); triangle(100+(mouseX-200)*.4,160,110+(mouseX-200)*.4,140,120+(mouseX-200)*.4,160); triangle(120+(mouseX-200)*.4,160,120+(mouseX-200)*.4,180,145+(mouseX-200)*.4,180); triangle(120+(mouseX-200)*.4,180,160+(mouseX-200)*.4,160,160+(mouseX-200)*.4,180); triangle(140+(mouseX-200)*.4,200,170+(mouseX-200)*.4,130,200+(mouseX-200)*.4,200); triangle(220+(mouseX-200)*.4,200,230+(mouseX-200)*.4,150,240+(mouseX-200)*.4,200); triangle(220+(mouseX-200)*.4,200,230+(mouseX-200)*.4,140,280+(mouseX-200)*.4,200); triangle(250+(mouseX-200)*.4,200,270+(mouseX-200)*.4,120,300+(mouseX-200)*.4,200); triangle(285+(mouseX-200)*.4,200,300+(mouseX-200)*.4,140,320+(mouseX-200)*.4,200); triangle(305+(mouseX-200)*.4,200,305+(mouseX-200)*.4,160,330+(mouseX-200)*.4,180); triangle(315+(mouseX-200)*.4,200,325+(mouseX-200)*.4,160,325+(mouseX-200)*.4,200); triangle(325+(mouseX-200)*.4,160,330+(mouseX-200)*.4,125,340+(mouseX-200)*.4,160); rect(325+(mouseX-200)*.4,160,55,20); triangle(340+(mouseX-200)*.4,160,360+(mouseX-200)*.4,120,375+(mouseX-200)*.4,140); triangle(340+(mouseX-200)*.4,160,375+(mouseX-200)*.4,140,380+(mouseX-200)*.4,160); rect(350+(mouseX-200)*.4,140,25,20); triangle(340+(mouseX-200)*.4,160,350+(mouseX-200)*.4,140,350+(mouseX-200)*.4,160); triangle(380+(mouseX-200)*.4,160,380+(mouseX-200)*.4,200,390+(mouseX-200)*.4,200); triangle(380+(mouseX-200)*.4,200,400+(mouseX-200)*.4,160,400+(mouseX-200)*.4,200); triangle(400+(mouseX-200)*.4,160,400+(mouseX-200)*.4,200,440+(mouseX-200)*.4,200); //////////////////////////////// Sea pt.2 ft.Rocks ///////////////////////////////////////// //Waves bob up and down to mimic the rolling sea using a sin function //Rocks move with parallax similar to mountains //Stationary water //Day fill(125,175,170); rect (0,200,400,400); //Night fill(79,91,134,350-mouseY*1.5); rect (0,200,400,400); //Wave 1 //Day fill(100,165,155); rect (0,220+1*sin(frameCount*.025),400,400); //Night fill(66,81,123,350-mouseY*1.5); rect (0,220+1*sin(frameCount*.025),400,400); //Rocks 1 //Day fill(98,96,104); triangle(80+(mouseX-200)*.5,280,110+(mouseX-200)*.5,215,120+(mouseX-200)*.5,280); triangle(80+(mouseX-200)*.5,280,120+(mouseX-200)*.5,230,160+(mouseX-200)*.5,280); //Night fill(76,71,82,350-mouseY*1.5); triangle(80+(mouseX-200)*.5,280,110+(mouseX-200)*.5,215,120+(mouseX-200)*.5,280); triangle(80+(mouseX-200)*.5,280,120+(mouseX-200)*.5,230,160+(mouseX-200)*.5,280); //Wave 2 //Day fill(80,149,138); rect (0,240+2*sin(frameCount*.025),400,400); //Night fill(52,74,115,350-mouseY*1.5); rect (0,240+2*sin(frameCount*.025),400,400); //////////////////////////////// Boat and Lantern ///////////////////////////////// /*Boat will float up and down with Wave 3 but will stay stationary in the X axis to make it look like the boat is cruising the sea */ //Hull and Mast //Day fill(90,64,44,350); rect(200,199+4*sin(frameCount*.025),3,55); rect(185,250+4*sin(frameCount*.025),30,10); triangle(165,245+4*sin(frameCount*.025),185,250+4*sin(frameCount*.025),185,260+4*sin(frameCount*.025)); triangle(235,245+4*sin(frameCount*.025),215,250+4*sin(frameCount*.025),215,260+4*sin(frameCount*.025)); //Night fill(55,40,39,350-(mouseY)*1.5); rect(200,199+4*sin(frameCount*.025),3,55); rect(185,250+4*sin(frameCount*.025),30,10); triangle(165,245+4*sin(frameCount*.025),185,250+4*sin(frameCount*.025),185,260+4*sin(frameCount*.025)); triangle(235,245+4*sin(frameCount*.025),215,250+4*sin(frameCount*.025),215,260+4*sin(frameCount*.025)); //Lantern //Lantern (Body) fill(255,250,225,125); triangle(235,245+4*sin(frameCount*.025),232,250+4*sin(frameCount*.025),237,250+4*sin(frameCount*.025)); triangle(235,255+4*sin(frameCount*.025),232,250+4*sin(frameCount*.025),237,250+4*sin(frameCount*.025)); //Sail //Day fill(255,250,225); rect(190,205+4*sin(frameCount*.025),25,30); triangle(190,210+4*sin(frameCount*.025),185,235+4*sin(frameCount*.025),190,235+4*sin(frameCount*.025)); triangle(215,205+4*sin(frameCount*.025),220,205+4*sin(frameCount*.025),215,235+4*sin(frameCount*.025)); //Night fill(200,195,175,350-(mouseY)*1.5); rect(190,205+4*sin(frameCount*.025),25,30); triangle(190,210+4*sin(frameCount*.025),185,235+4*sin(frameCount*.025),190,235+4*sin(frameCount*.025)); triangle(215,205+4*sin(frameCount*.025),220,205+4*sin(frameCount*.025),215,235+4*sin(frameCount*.025)); /////////////////////////////////Siren ft.Rocks///////////////////////////////////////////////////////////// //Rocks and Siren will parralax on wave 3 to 'collide' with the boat //Siren Hair fill(0); rect(360+(mouseX-200)*.6,228,5,30); rect(365+(mouseX-200)*.6,230,3,30); triangle(365+(mouseX-200)*.6,228,365+(mouseX-200)*.6,230,368+(mouseX-200)*.6,230); //Rocks 2 //Day fill(98,96,104); triangle (340+(mouseX-200)*.6,290,355+(mouseX-200)*.6,250,355+(mouseX-200)*.6,290); rect(355+(mouseX-200)*.6,250,15,40); triangle(355+(mouseX-200)*.6,290,375+(mouseX-200)*.6,235,390+(mouseX-200)*.6,290); triangle(350+(mouseX-200)*.6,240,355+(mouseX-200)*.6,270,370+(mouseX-200)*.6,270); triangle(380+(mouseX-200)*.6,225,385+(mouseX-200)*.6,270,410+(mouseX-200)*.6,270); //Night fill(76,71,82,350-mouseY*1.5); triangle (340+(mouseX-200)*.6,290,355+(mouseX-200)*.6,250,355+(mouseX-200)*.6,290); rect(355+(mouseX-200)*.6,250,15,40); triangle(355+(mouseX-200)*.6,290,375+(mouseX-200)*.6,235,390+(mouseX-200)*.6,290); triangle(350+(mouseX-200)*.6,240,355+(mouseX-200)*.6,270,370+(mouseX-200)*.6,270); triangle(380+(mouseX-200)*.6,225,385+(mouseX-200)*.6,270,410+(mouseX-200)*.6,270); //Siren Tail fill(97,21,4); triangle(355+(mouseX-200)*.6,250,360+(mouseX-200)*.6,250,365+(mouseX-200)*.6,260); triangle(355+(mouseX-200)*.6,250,360+(mouseX-200)*.6,245,360+(mouseX-200)*.6,250); rect(360+(mouseX-200)*.6,245,5,5); triangle(365+(mouseX-200)*.6,245,365+(mouseX-200)*.6,250,368+(mouseX-200)*.6,245); fill(169,104,81); triangle(365+(mouseX-200)*.6,260,360+(mouseX-200)*.6,270,365+(mouseX-200)*.6,265); triangle(365+(mouseX-200)*.6,260,368+(mouseX-200)*.6,265,375+(mouseX-200)*.6,265); //Siren Body fill(234,199,165); ellipse(364+(mouseX-200)*.6,232,3,4); triangle(365+(mouseX-200)*.6,245,365+(mouseX-200)*.6,240,368+(mouseX-200)*.6,245); triangle(365+(mouseX-200)*.6,245,365+(mouseX-200)*.6,235,362+(mouseX-200)*.6,238); triangle(365+(mouseX-200)*.6,235,365+(mouseX-200)*.6,238,372+(mouseX-200)*.6,245); triangle(372+(mouseX-200)*.6,245,374+(mouseX-200)*.6,244,375+(mouseX-200)*.6,245); triangle(365+(mouseX-200)*.6,235,362+(mouseX-200)*.6,238,355+(mouseX-200)*.6,240); triangle(355+(mouseX-200)*.6,240,357+(mouseX-200)*.6,240,358+(mouseX-200)*.6,235); triangle(358+(mouseX-200)*.6,235,358+(mouseX-200)*.6,232,356+(mouseX-200)*.6,233); //////////////////////////////// Sea pt.2 ft.Rocks & Lantern Light ///////////////////////////////////////// //Wave 3 //Day fill(65,140,127); rect (0,260+4*sin(frameCount*.025),400,400); //Night fill(39,64,104,350-mouseY*1.5); rect (0,260+4*sin(frameCount*.025),400,400); //Lantern Light bobs with the boat //Light turns on at night fill(240,240,200, 50-mouseY*.5); ellipse(235,250+4*sin(frameCount*.025),25+2*sin(frameCount*.03),25+2*sin(frameCount*.03)); fill(240,240,200, 95-mouseY*.5); ellipse(235,250+4*sin(frameCount*.025),13+2*sin(frameCount*.03),13+2*sin(frameCount*.03)); stroke(200,200,0,150-mouseY*.5); strokeWeight(5); point(235,250+4*sin(frameCount*.025)); noStroke(); //Rocks 3 //Day fill(98,96,104); triangle(220+(mouseX-200)*.7,310,270+(mouseX-200)*.7,245,280+(mouseX-200)*.7,320); triangle(245+(mouseX-200)*.7,310,280+(mouseX-200)*.7,265,290+(mouseX-200)*.7,320); //Night fill(76,71,82,350-mouseY*1.5); triangle(220+(mouseX-200)*.7,310,270+(mouseX-200)*.7,245,280+(mouseX-200)*.7,320); triangle(245+(mouseX-200)*.7,310,280+(mouseX-200)*.7,265,290+(mouseX-200)*.7,320); //Wave 4 //Day fill(55,130,120); rect (0,280+8*sin(frameCount*.025),400,400); //Night fill(30,58,93,350-mouseY*1.5); rect (0,280+8*sin(frameCount*.025),400,400); //////////////////////////////// Sky pt.2 ///////////////////////////////////////////////// //Change oppacity of suns to correspond with night and day shifts //Day //top fill(250,225,100); ellipse (200,60,40,40); //botom less opaque to mimic a reflection fill(250,225,100,100); ellipse (200,340,40,40); //Night //top fill(225,50,25,350-mouseY*1.5); ellipse (200,60,40,40); //bottom less opaque to mimic a reflection fill(225,50,25,100-mouseY*1.5); ellipse (200,340,40,40); //Changes oppacity of secondary, slightly smaller ellipse to make the moon a cresent //top fill(25,55,80,350-mouseY*1.5); ellipse (210,60,35,35); //bottom fill(30,58,93,350-mouseY*1.5); ellipse (210,340,35,35); //Draw the Border //Day fill(170, 200, 210); triangle(200,0,40,0,40,200); triangle(200,0,360,0,360,200); triangle(40,200,40,400,200,400); triangle(360,200,360,400,200,400); rectMode(CORNER); rect(0,0,40,200); rect(0,200,40,200); rect(360,0,40,200); rect(360,200,40,200); //Night fill(20,17,35,350-mouseY*1.5); triangle(200,0,40,0,40,200); triangle(200,0,360,0,360,200); triangle(40,200,40,400,200,400); triangle(360,200,360,400,200,400); rectMode(CORNER); rect(0,0,40,200); rect(0,200,40,200); rect(360,0,40,200); rect(360,200,40,200); }