void setup(){
size(400,400);
////////surface.setResizable(true);
////////hint(ENABLE_STROKE_PURE); //fixes some of the jitteryness with lines
}
void draw(){
background(198,231,255);
rectMode(CORNERS);
noStroke();
//moon
fill(244,244,255);
ellipse(200,140,200,200);
//mountain 1
fill(191,212,240);
triangle(170,250,250,150,350,250);
fill(91,84,103,60);//shadow
triangle(170,250,250,150,220,250);//shadow
//mountain 2
fill(179,189,214);
triangle(50,250,150,120,260,250);
fill(91,84,103,60);//shadow
triangle(50,250,150,120,110,250);//shadow
//sea fog
fill(255);
rect(0,250,400,260);
fill(255,255,255,150);
rect(0,240,400,250);
fill(255,255,255,80);
rect(0,230,400,240);
fill(255,255,255,40);
rect(0,220,400,230);
//waves
fill(183,207,226);
//wave 5
rect(0,(float)(260+Math.sin(frameCount*.03-2.4)),400,400);
fill(134,179,214);
//wave 4
rect(0,(float)(272+Math.sin(frameCount*.03-1.6)*2),400,400);
//fish inside wave 3 and behind boat
//they are just ellipses because they are small and far away
fill(255,211,237);
ellipse(-20+(mouseX-200)*0.4+(6.93*0.4),(float)(-Math.abs(Math.sin(mouseX*0.02+25))*50)-(4*0.4)+310, 5,3);
ellipse(40+(mouseX-200)*0.5+(6.93*0.4),(float)(-Math.abs(Math.sin(mouseX*0.02+27))*50)-(4*0.4)+310, 5,3);
ellipse(100+(mouseX-200)*0.4+(6.93*0.4),(float)(-Math.abs(Math.sin(mouseX*0.02+17))*30)-(4*0.4)+310, 5,3);
ellipse(110+(mouseX-200)*0.5+(6.93*0.4),(float)(-Math.abs(Math.sin(mouseX*0.02+28))*40)-(4*0.4)+310, 5,3);
ellipse(160+(mouseX-200)*0.4+(6.93*0.4),(float)(-Math.abs(Math.sin(mouseX*0.02-5))*55)-(4*0.4)+310, 5,3);
ellipse(230+(mouseX-200)*0.4+(6.93*0.4),(float)(-Math.abs(Math.sin(mouseX*0.02+15))*30)-(4*0.4)+310, 5,3);
ellipse(270+(mouseX-200)*0.3+(6.93*0.4),(float)(-Math.abs(Math.sin(mouseX*0.02-15))*35)-(4*0.4)+310, 5,3);
ellipse(310+(mouseX-200)*0.4+(6.93*0.4),(float)(-Math.abs(Math.sin(mouseX*0.02+20))*40)-(4*0.4)+310, 5,3);
ellipse(380+(mouseX-200)*0.4+(6.93*0.4),(float)(-Math.abs(Math.sin(mouseX*0.02-4))*50)-(4*0.4)+310, 5,3);
//BOAT
rectMode(CENTER);
//fishingrod
noFill();
stroke(255,255,255);
strokeWeight(1);
arc((float)(195+Math.cos(frameCount*.03-.8)*6),
(float)(260+Math.sin(frameCount*.03-.8)*6),45,60,0,(float)Math.PI/2); //the line
stroke(90,71,53);
strokeWeight(2.5);
arc((float)(220+Math.cos(frameCount*.03-.8)*6),
(float)(275+Math.sin(frameCount*.03-.8)*6),30,30,-(float)Math.PI+1.4,0); //the rod
noStroke();
//fisherman
fill(123,164,165);
rect(
(float)(240+Math.cos(frameCount*.03-.8)*6),
(float)(275+Math.sin(frameCount*.03-.8)*6),
9,17,3);
fill(122,114,95);
ellipse((float)(240+Math.cos(frameCount*.03-.8)*6),
(float)(263+Math.sin(frameCount*.03-.8)*6),8,8);
//boxes
fill(200,200,200);
rect(
(float)(282+Math.cos(frameCount*.03-.8)*6),
(float)(281+Math.sin(frameCount*.03-.8)*6),
14,10,2);
rect(
(float)(268+Math.cos(frameCount*.03-.8)*6),
(float)(281+Math.sin(frameCount*.03-.8)*6),
8,15,2);
//hood
fill(118,106,99);
rect(
(float)(280+Math.cos(frameCount*.03-.8)*6),
(float)(281+Math.sin(frameCount*.03-.8)*6),
3,32);
rect(
(float)(300+Math.cos(frameCount*.03-.8)*6),
(float)(281+Math.sin(frameCount*.03-.8)*6),
3,32);
fill(232,185,98);
rect(
(float)(290+Math.cos(frameCount*.03-.8)*6),
(float)(260+Math.sin(frameCount*.03-.8)*6),
30,10);
fill(108,96,89);
//hull
rect(
(float)(275+Math.cos(frameCount*.03-.8)*6),
(float)(286+Math.sin(frameCount*.03-.8)*6),
60,10);
//bow
triangle(
(float)(275+Math.cos(frameCount*.03-.8)*6),
(float)(286+Math.sin(frameCount*.03-.8)*6),
(float)(215+Math.cos(frameCount*.03-.8)*6),
(float)(275+Math.sin(frameCount*.03-.8)*6),
(float)(245+Math.cos(frameCount*.03-.8)*6),
(float)(291+Math.sin(frameCount*.03-.8)*6)
);
//waves in front of boat
rectMode(CORNERS);
fill(87,153,191);
//wave 3
rect(0,(float)(290+Math.sin(frameCount*.03-.8)*6),400,400);
//fish inside wave 2
fill(255,201,227);
//fish 1
quad( //Don't worry, I didn't type this all. I wrote another program to produce this code using variables.
(mouseX-200)*.7+(6.93*.7),(float)(-Math.abs(Math.sin(mouseX*0.02+30))*70)-(4*.7)+350,
(mouseX-200)*.7+(2.5*.7) ,(float)(-Math.abs(Math.sin(mouseX*0.02+30))*70)+(4.3*.7)+350,
(mouseX-200)*.7-(6.9*.7) ,(float)(-Math.abs(Math.sin(mouseX*0.02+30))*70)+(4*.7)+350,
(mouseX-200)*.7-(2.5*.7) ,(float)(-Math.abs(Math.sin(mouseX*0.02+30))*70)-(4.3*.7)+350
);
triangle(
(mouseX-200)*.7-(12*.7) ,(float)(-Math.abs(Math.sin(mouseX*0.02+30))*70)+4*.7+350,
(mouseX-200)*.7-(6.9*.7),(float)(-Math.abs(Math.sin(mouseX*0.02+30))*70)+4*.7+350,
(mouseX-200)*.7-(8.8*.7),(float)(-Math.abs(Math.sin(mouseX*0.02+30))*70)+9*.7+350
);
//fish 2
quad(
125+(mouseX-200)*0.7+(6.93*0.7),(float)(-Math.abs(Math.sin(mouseX*0.02+25))*76)-(4*0.7)+350,
125+(mouseX-200)*0.7+(2.5*0.7),(float)(-Math.abs(Math.sin(mouseX*0.02+25))*76)+(4.3*0.7)+350,
125+(mouseX-200)*0.7-(6.9*0.7),(float)(-Math.abs(Math.sin(mouseX*0.02+25))*76)+(4*0.7)+350,
125+(mouseX-200)*0.7-(2.5*0.7),(float)(-Math.abs(Math.sin(mouseX*0.02+25))*76)-(4.3*0.7)+350);
triangle(
125+(mouseX-200)*0.7-(12*0.7),(float)(-Math.abs(Math.sin(mouseX*0.02+25))*76)+(4*0.7)+350,
125+(mouseX-200)*0.7-(6.9*0.7),(float)(-Math.abs(Math.sin(mouseX*0.02+25))*76)+(4*0.7)+350,
125+(mouseX-200)*0.7-(8.8*0.7),(float)(-Math.abs(Math.sin(mouseX*0.02+25))*76)+(9*0.7)+350);
//fish 3
quad(
275+(mouseX-200)*0.7+(6.93*0.7),(float)(-Math.abs(Math.sin(mouseX*0.02+35))*60)-(4*0.7)+350,
275+(mouseX-200)*0.7+(2.5*0.7),(float)(-Math.abs(Math.sin(mouseX*0.02+35))*60)+(4.3*0.7)+350,
275+(mouseX-200)*0.7-(6.9*0.7),(float)(-Math.abs(Math.sin(mouseX*0.02+35))*60)+(4*0.7)+350,
275+(mouseX-200)*0.7-(2.5*0.7),(float)(-Math.abs(Math.sin(mouseX*0.02+35))*60)-(4.3*0.7)+350);
triangle(
275+(mouseX-200)*0.7-(12*0.7),(float)(-Math.abs(Math.sin(mouseX*0.02+35))*60)+(4*0.7)+350,
275+(mouseX-200)*0.7-(6.9*0.7),(float)(-Math.abs(Math.sin(mouseX*0.02+35))*60)+(4*0.7)+350,
275+(mouseX-200)*0.7-(8.8*0.7),(float)(-Math.abs(Math.sin(mouseX*0.02+35))*60)+(9*0.7)+350);
//fish 4
quad(
370+(mouseX-200)*0.7+(6.93*0.7),(float)(-Math.abs(Math.sin(mouseX*0.02+15))*70)-(4*0.7)+350,
370+(mouseX-200)*0.7+(2.5*0.7),(float)(-Math.abs(Math.sin(mouseX*0.02+15))*70)+(4.3*0.7)+350,
370+(mouseX-200)*0.7-(6.9*0.7),(float)(-Math.abs(Math.sin(mouseX*0.02+15))*70)+(4*0.7)+350,
370+(mouseX-200)*0.7-(2.5*0.7),(float)(-Math.abs(Math.sin(mouseX*0.02+15))*70)-(4.3*0.7)+350);
triangle(
370+(mouseX-200)*0.7-(12*0.7),(float)(-Math.abs(Math.sin(mouseX*0.02+15))*70)+(4*0.7)+350,
370+(mouseX-200)*0.7-(6.9*0.7),(float)(-Math.abs(Math.sin(mouseX*0.02+15))*70)+(4*0.7)+350,
370+(mouseX-200)*0.7-(8.8*0.7),(float)(-Math.abs(Math.sin(mouseX*0.02+15))*70)+(9*0.7)+350);
//wave 2
fill(55,127,158);
rect(0,(float)(325+Math.sin(frameCount*.03)*12),400,400);
//fish inside wave 1
fill(255,201,227);
//fish 1
quad(200+(mouseX-200)*.8+6.93,(float)(-Math.abs(Math.sin(mouseX*0.02))*80 +400)-4,
200+(mouseX-200)*.8+2.5,(float)(-Math.abs(Math.sin(mouseX*0.02))*80 +400)+4.3,
200+(mouseX-200)*.8-6.9,(float)(-Math.abs(Math.sin(mouseX*0.02))*80 +400)+4,
200+(mouseX-200)*.8-2.5,(float)(-Math.abs(Math.sin(mouseX*0.02))*80 +400)-4.3);
triangle(200+(mouseX-200)*.8-12,(float)(-Math.abs(Math.sin(mouseX*0.02))*80 +400)+4,
200+(mouseX-200)*.8-6.9,(float)(-Math.abs(Math.sin(mouseX*0.02))*80 +400)+4,
200+(mouseX-200)*.8-8.8,(float)(-Math.abs(Math.sin(mouseX*0.02))*80 +400)+9);
//fish2
quad(80+(mouseX-200)*.8+6.93,(float)(-Math.abs(Math.sin(mouseX*0.02-40))*100 +400)-4,
80+(mouseX-200)*.8+2.5,(float)(-Math.abs(Math.sin(mouseX*0.02-40))*100 +400)+4.3,
80+(mouseX-200)*.8-6.9,(float)(-Math.abs(Math.sin(mouseX*0.02-40))*100 +400)+4,
80+(mouseX-200)*.8-2.5,(float)(-Math.abs(Math.sin(mouseX*0.02-40))*100 +400)-4.3);
triangle(80+(mouseX-200)*.8-12,(float)(-Math.abs(Math.sin(mouseX*0.02-40))*100 +400)+4,
80+(mouseX-200)*.8-6.9,(float)(-Math.abs(Math.sin(mouseX*0.02-40))*100 +400)+4,
80+(mouseX-200)*.8-8.8,(float)(-Math.abs(Math.sin(mouseX*0.02-40))*100 +400)+9);
//fish3
quad(400+(mouseX-200)*.8+6.93,(float)(-Math.abs(Math.sin(mouseX*0.02-60))*70 +400)-4,
400+(mouseX-200)*.8+2.5,(float)(-Math.abs(Math.sin(mouseX*0.02-60))*70 +400)+4.3,
400+(mouseX-200)*.8-6.9,(float)(-Math.abs(Math.sin(mouseX*0.02-60))*70 +400)+4,
400+(mouseX-200)*.8-2.5,(float)(-Math.abs(Math.sin(mouseX*0.02-60))*70 +400)-4.3);
triangle(400+(mouseX-200)*.8-12,(float)(-Math.abs(Math.sin(mouseX*0.02-60))*70 +400)+4,
400+(mouseX-200)*.8-6.9,(float)(-Math.abs(Math.sin(mouseX*0.02-60))*70 +400)+4,
400+(mouseX-200)*.8-8.8,(float)(-Math.abs(Math.sin(mouseX*0.02-60))*70 +400)+9);
//fish4
quad(
-80+(mouseX-200)*0.7+(6.93*1),(float)(-Math.abs(Math.sin(mouseX*0.02+15))*70)-(4*1)+400,
-80+(mouseX-200)*0.7+(2.5*1),(float)(-Math.abs(Math.sin(mouseX*0.02+15))*70)+(4.3*1)+400,
-80+(mouseX-200)*0.7-(6.9*1),(float)(-Math.abs(Math.sin(mouseX*0.02+15))*70)+(4*1)+400,
-80+(mouseX-200)*0.7-(2.5*1),(float)(-Math.abs(Math.sin(mouseX*0.02+15))*70)-(4.3*1)+400);
triangle(
-80+(mouseX-200)*0.7-(12*1),(float)(-Math.abs(Math.sin(mouseX*0.02+15))*70)+(4*1)+400,
-80+(mouseX-200)*0.7-(6.9*1),(float)(-Math.abs(Math.sin(mouseX*0.02+15))*70)+(4*1)+400,
-80+(mouseX-200)*0.7-(8.8*1),(float)(-Math.abs(Math.sin(mouseX*0.02+15))*70)+(9*1)+400);
//wave 1
fill(29,96,117);
rect(0,(float)(375+Math.sin(frameCount*.03+.8)*18),400,400);
}