Your browser does not support the canvas tag.

previous        Show / Hide Source        Download        next
/*
  
  Surrender Isles.
  MADE BY: P.Y. Boulerice
  
 -> Move your mouse left and right to scroll through the world.
 -> You can control various other things by moving your mouse up and down.
 (Time of Day, Sea Creature's Head)
 -> At the top there is a small 'HUD' that displays an overview of the map 
 and your current position in the world.
 */

void setup()
{
  // Creates a window 400 pixels by 400 pixels.
  size(400, 400);

  // Removes the cursor.
  noCursor();
}

void draw()
{
  frameRate(60);
  // Background
  /*
   Changes the color of the background(water), relative to the mouse Y position.
   Creates a day and night effect.
   */  
  background(190 - (mouseY / 5.), 232  - (mouseY / 4.), 255  - (mouseY / 5.));

  // Doesnt genenrate an outline for shapes.
  noStroke();

  // Changes the positioning of rectangles to be set with their top right corner.
  rectMode(CORNER);

  // Changes the positioning of ellipses to be set with their top right corner.
  ellipseMode(CORNER);

  // Water
  /*
   Adds dynamic dark spots in the water
   */
  fill(0, 30);
  ellipse((mouseX * 5), 100, 20, 20);
  ellipse(-600 + (mouseX * 5), 110, 10, 10);
  ellipse(-500 + (mouseX * 4), 200, 10, 10);
  ellipse(-500 + (mouseX * 5), 300, 20, 20);
  ellipse(-900 + (mouseX * 4), 350, 10, 10);
  ellipse(-1800 + (mouseX * 5), 325, 15, 15);
  ellipse(-1300 + (mouseX * 4), 100, 10, 10);


  // LAYER 1 (Items futher away)
  // All objects on this layer move right to left using the 'mouseX' built in variable.
  // ***********************************************************************************

  // Ripple *Nicholas Phan and Rachell Theil's Suggestion*
  /*
   Creates a ripple in the water for the Blinking Floters.
   The ripple enlarges and shrinks automatically using a sine function and 'frameCount'.
   */    
  stroke(255, 255 - ((float) Math.sin(frameCount * 0.05) * 255));
  noFill();
  ellipseMode(CENTER);
  ellipse(-88 + (mouseX * 6), 120 + 10, 45 + ((float) Math.sin(frameCount * 0.1) * 12), 45 + ((float) Math.sin(frameCount * 0.1) * 12));

  // Hot Air Balloon 1
  /*
   Creates a hot air balloon.
   It bobs up and down using a sine function and 'frameCount'.
   It also has a shadow that works similarily to the Ripple.
   */
  ellipseMode(CENTER);
  fill(0);
  stroke(1);
  line(-200 + (mouseX * 5), 75 + ((float) Math.sin(0.7 * (frameCount * 0.1)) * 12), -180 + (mouseX * 5), 125 + ((float) Math.sin(0.7 * (frameCount * 0.1)) * 12));
  line(-153 + (mouseX * 5), 75 + ((float) Math.sin(0.7 * (frameCount * 0.1)) * 12), -170 + (mouseX * 5), 125 + ((float) Math.sin(0.7 * (frameCount * 0.1)) * 12));
  noStroke();
  fill(0, 35);
  ellipse(-175 + (mouseX * 5), 155, ((float) Math.sin(0.7 * (frameCount * 0.1)) * 12) + 15, ((float) Math.sin(0.7 * (frameCount * 0.1)) * 12) + 10);
  ellipseMode(CORNER);
  fill(255, 103, 97);
  ellipse(-200 + (mouseX * 5), 50 + (float) Math.sin(0.7 * (frameCount * 0.1)) * 12, 50, 50);
  fill(255, 136, 122);
  ellipse(-185 + (mouseX * 5), 52 + (float) Math.sin(0.7 * (frameCount * 0.1)) * 12, 20, 10);
  fill(199, 162, 102);
  rect(-185 + (mouseX * 5), 110 + (float) Math.sin(0.7 * (frameCount * 0.1)) * 12, 20, 20, 20);
  fill(150, 123, 77);
  rect(-185 + (mouseX * 5), 110 + (float) Math.sin(0.7 * (frameCount * 0.1)) * 12, 20, 15, 20);
  fill(199, 162, 102);
  rect(-183 + (mouseX * 5), 112 + (float) Math.sin(0.7 * (frameCount * 0.1)) * 12, 16, 11, 20);
  fill(112, 91, 57);
  rect(-183 + (mouseX * 5), 115 + (float) Math.sin(0.7 * (frameCount * 0.1)) * 12, 16, 8, 20);

  // Floater
  /*
   Creates a floater
   */
  fill(0, 30);
  rect(-100 +(mouseX * 6), 120, 25, 25, 20); // Water Shadow
  fill(255);
  rect(-100 +(mouseX * 6), 120 - 5, 25, 25, 20);
  fill(255, 103, 97);
  rect(-100 +(mouseX * 6), 120 - 10, 25, 25, 20);
  fill(255);
  rect(-100 +(mouseX * 6), 120 - 15, 25, 25, 20);
  fill(255, 103, 97);
  rect(-95 +(mouseX * 6), 120 - 18, 15, 15, 20);
  fill(255);
  rect(-95 +(mouseX * 6), 120 -21, 15, 15, 20); 
  fill(255, 103, 97);
  rect(-95 +(mouseX * 6), 120 -24, 15, 15, 20); 
  fill(209, 85, 79);
  rect(-93 +(mouseX * 6), 120 -24, 11, 11, 20);

  // Ship
  /*
  Creates a ship. 
   */
  fill(0, 30);
  rect(100 +(mouseX * 6), 120, 50, 25, 20); // Water Shadow
  fill(199, 162, 102); // Body
  rect(100 + (mouseX * 6), 120 - 5, 50, 25, 20);
  fill(133, 108, 68); // Edge
  rect(100 + (mouseX * 6), 120 - 10, 50, 25, 20);
  fill(150, 123, 77); // Edge (Light)
  rect(102 + (mouseX * 6), 120 - 8, 46, 21, 20);
  fill(112, 91, 57); // Edge (Dark)
  rect(102 + (mouseX * 6), 120 - 6, 46, 19, 20);
  fill(255); // Sail (White)
  rect(100 + (mouseX * 6), 120 - 38, 50, 25, 20);
  fill(150, 123, 77); // Post (Light)
  rect(100 + (mouseX * 6) + 25, 120 - 40, 4, 45, 20);
  fill(150, 123, 77); // Post (Light)
  rect(100 + (mouseX * 6), 120 - 38, 50, 4, 20);

  // Ship
  /*
  Creates a ship. 
   */
  fill(0, 30);
  rect(-400 +(mouseX * 6), 120, 50, 25, 20); // Water Shadow
  fill(199, 162, 102); // Body
  rect(-400 + (mouseX * 6), 120 - 5, 50, 25, 20);
  fill(133, 108, 68); // Edge
  rect(-400 + (mouseX * 6), 120 - 10, 50, 25, 20);
  fill(150, 123, 77); // Edge (Light)
  rect(-398 + (mouseX * 6), 120 - 8, 46, 21, 20);
  fill(112, 91, 57); // Edge (Dark)
  rect(-398 + (mouseX * 6), 120 - 6, 46, 19, 20);
  fill(255); // Sail (White)
  rect(-400 + (mouseX * 6), 120 - 38, 50, 25, 20);
  fill(150, 123, 77); // Post (Light)
  rect(-400 + (mouseX * 6) + 25, 120 - 40, 4, 45, 20);
  fill(150, 123, 77); // Post (Light)
  rect(-400 + (mouseX * 6), 120 - 38, 50, 4, 20);

  // LAYER 2
  // All objects on this layer move right to left using the 'mouseX' built in variable.
  // ***********************************************************************************

  // Highway
  /*
   Creates the bottom of the highway.
   Is placed under the islands shapes.
   Yellow car drives overtop of it.
   */
  fill(0, 30);
  rect(-990 +(mouseX * 10), 200 + 35, 1100, 35, 20);
  fill(240);
  rect(-990 +(mouseX * 10), 200 + 23, 1100, 35, 20);
  fill(220);
  rect(-990 +(mouseX * 10), 200 + 18, 1100, 35, 20);

  // Dock1 Posts
  fill(237, 193, 122);
  rect(-1035 +(mouseX * 10), 200, 10, 35, 20);
  fill(237, 193, 122);
  rect(-1085 +(mouseX * 10), 200, 10, 35, 20);
  // Dock1 *Nicholas Phan's Suggestion*
  /*
   Creates the bottom of the dock.
   Is placed under the island shapes.
   */
  fill(0, 30);
  rect(-1125 +(mouseX * 10), 200 + 35, 175, 35, 20);
  fill(150, 123, 77);
  rect(-1125 +(mouseX * 10), 200 + 18, 175, 35, 20);
  fill(112, 91, 57);
  rect(-1125 +(mouseX * 10), 200 + 16, 175, 35, 20);

  // Bridge 1 Posts (For the highway)
  fill(250);
  rect(-75 +(mouseX * 10), 200, 10, 35, 20);
  fill(250);
  rect(-15 +(mouseX * 10), 200, 10, 35, 20);
  // Bridge 2 Posts (For the Highway)
  fill(250);
  rect(-485 +(mouseX * 10), 200, 10, 35, 20);
  fill(250);
  rect(-425 + (mouseX * 10), 200, 10, 35, 20);

  // Island
  /*
   Creates a green island.
   200 pixels wide.
   */
  fill(0, 30);
  rect(20 +(mouseX * 10), 200, 200, 100, 20);
  fill(153, 129, 102);
  rect(20 +(mouseX * 10), 200 - 5, 200, 100, 20);
  fill(134, 114, 90);
  rect(20 +(mouseX * 10), 200 - 17, 200, 100, 20);
  fill(128, 191, 88);
  rect(20 +(mouseX * 10), 200 - 20, 200, 100, 20);
  fill(144, 212, 100);
  rect(20 +(mouseX * 10), 200 - 25, 200, 100, 20);
  fill(152, 224, 106);
  rect(24 +(mouseX * 10), 200 -21, 192, 92, 20);

  // Lighthouse
  /*
   Creates a lighthouse.
   Constructed from rectangles with rounded corners.
   */
  fill(255);
  rect(155 +(mouseX * 10), 200, 52, 52, 40);
  fill(255, 103, 97);
  rect(155 +(mouseX * 10), 200 - 10, 52, 52, 40);
  fill(255);
  rect(155 +(mouseX * 10), 200 - 20, 52, 52, 40);
  fill(255, 103, 97);
  rect(155 +(mouseX * 10), 200 - 30, 52, 52, 40);
  fill(255);
  rect(155 +(mouseX * 10), 200 - 40, 52, 52, 40);
  fill(255, 103, 97);         
  rect(168 +(mouseX * 10), 200 - 40, 26, 26, 40);
  fill(255);
  rect(168 +(mouseX * 10), 200 - 50, 26, 26, 40);
  fill(255, 103, 97);
  rect(168 +(mouseX * 10), 200 - 60, 26, 26, 40);
  // Door (Lighthouse)
  fill(80);
  rect(170 +(mouseX * 10), 200 + 35, 20, 17, 40);
  rect(170 +(mouseX * 10), 200 + 42, 20, 10);

  // Island
  /*
   Creates a green island.
   300 pixels wide.
   */
  fill(0, 30);
  rect(-400 +(mouseX * 10), 200, 300, 100, 20);
  fill(153, 129, 102);
  rect(-400 +(mouseX * 10), 200 - 5, 300, 100, 20);
  fill(134, 114, 90);
  rect(-400 +(mouseX * 10), 200 - 17, 300, 100, 20);
  fill(128, 191, 88);
  rect(-400 +(mouseX * 10), 200 - 20, 300, 100, 20);
  fill(144, 212, 100);
  rect(-400 +(mouseX * 10), 200 - 25, 300, 100, 20);
  fill(152, 224, 106);
  rect(-396 +(mouseX * 10), 200 -21, 292, 92, 20);

  // Tree
  fill(128, 191, 88);
  rect(-175 + (mouseX * 10) + 25, 200 - 35, 4, 45, 20);
  fill(150, 123, 77);
  rect(-175 + (mouseX * 10) + 25, 200 - 40, 4, 45, 20);
  fill(224, 152, 149);
  ellipse(-188 + (mouseX * 10) + 25, 200 - 45, 30, 30);
  fill(255, 173, 170);
  ellipse(-188 + (mouseX * 10) + 25, 200 - 50, 30, 30);

  // Tree
  fill(128, 191, 88);
  rect(-275 + (mouseX * 10) + 25, 200 - 35, 4, 45, 20);
  fill(150, 123, 77);
  rect(-275 + (mouseX * 10) + 25, 200 - 40, 4, 45, 20);
  fill(224, 152, 149);
  ellipse(-288 + (mouseX * 10) + 25, 200 - 45, 30, 30);
  fill(255, 173, 170);
  ellipse(-288 + (mouseX * 10) + 25, 200 - 50, 30, 30);

  // Tree
  fill(128, 191, 88);
  rect(-375 + (mouseX * 10) + 25, 200 - 35, 4, 45, 20);
  fill(150, 123, 77);
  rect(-375 + (mouseX * 10) + 25, 200 - 40, 4, 45, 20);
  fill(224, 152, 149);
  ellipse(-388 + (mouseX * 10) + 25, 200 - 45, 30, 30);
  fill(255, 173, 170);
  ellipse(-388 + (mouseX * 10) + 25, 200 - 50, 30, 30);

  // Island
  /*
   Creates a green island.
   500 pixels wide.
   */
  fill(0, 30);
  rect(-1000 +(mouseX * 10), 200, 500, 100, 20);
  fill(153, 129, 102);
  rect(-1000 +(mouseX * 10), 200 - 5, 500, 100, 20);
  fill(134, 114, 90);
  rect(-1000 +(mouseX * 10), 200 - 17, 500, 100, 20);
  fill(128, 191, 88);
  rect(-1000 +(mouseX * 10), 200 - 20, 500, 100, 20);
  fill(144, 212, 100);
  rect(-1000 +(mouseX * 10), 200 - 25, 500, 100, 20);
  fill(152, 224, 106);
  rect(-996 +(mouseX * 10), 200 -21, 492, 92, 20);

  // Flag Pole
  /*
   Creates a pole with a flag on top.
   Half of the flag moves up and down using a sine fuction and 'frameCount'.
   This gives an illusion that the wind is flowing through it.
   */
  fill(255);
  rect(-955 + (mouseX * 10), 200 - 95, 30, 25, 20);
  rect(-930 + (mouseX * 10), 200 - 95 + ( sin(mouseX * .2) * 5.), 30, 25, 20);
  fill(153, 129, 102);
  rect(-955 + (mouseX * 10), 200 - 95, 8, 100, 20);

  // Ship
  /*
  Creates a ship. 
   */
  fill(0, 30);
  rect(-1300 +(mouseX * 10), 200, 50, 25, 20); // Water Shadow
  fill(199, 162, 102); // Body
  rect(-1300 + (mouseX * 10), 200 - 5, 50, 25, 20);
  fill(133, 108, 68); // Edge
  rect(-1300 + (mouseX * 10), 200 - 10, 50, 25, 20);
  fill(150, 123, 77); // Edge (Light)
  rect(-1300 + (mouseX * 10), 200 - 8, 46, 21, 20);
  fill(112, 91, 57); // Edge (Dark)
  rect(-1298 + (mouseX * 10), 200 - 6, 46, 19, 20);
  fill(255); // Sail (White)
  rect(-1300 + (mouseX * 10), 200 - 38, 50, 25, 20);
  fill(150, 123, 77); // Post (Light)
  rect(-1300 + (mouseX * 10) + 25, 200 - 40, 4, 45, 20);
  fill(150, 123, 77); // Post (Light)
  rect(-1300 + (mouseX * 10), 200 - 38, 50, 4, 20);

  // Highway
  /*
   Creates the top part of the highway. (Over the previous islands)
   */
  fill(90);
  rect(-940 +(mouseX * 10), 200 + 14, 1080, 35, 20);
  fill(110);
  rect(-940 +(mouseX * 10), 200 + 12, 1080, 35, 20);

  // Highway Lines
  /*
   Creates white lines along the center of the highway.
   */
  fill(255);
  rect(-910 + (mouseX * 10), 200 + 26, 20, 3, 20);
  rect(-870 + (mouseX * 10), 200 + 26, 20, 3, 20);
  rect(-830 + (mouseX * 10), 200 + 26, 20, 3, 20);
  rect(-790 + (mouseX * 10), 200 + 26, 20, 3, 20);
  rect(-750 + (mouseX * 10), 200 + 26, 20, 3, 20);
  rect(-710 + (mouseX * 10), 200 + 26, 20, 3, 20);
  rect(-670 + (mouseX * 10), 200 + 26, 20, 3, 20);
  rect(-630 + (mouseX * 10), 200 + 26, 20, 3, 20);
  rect(-590 + (mouseX * 10), 200 + 26, 20, 3, 20);
  rect(-550 + (mouseX * 10), 200 + 26, 20, 3, 20);
  rect(-510 + (mouseX * 10), 200 + 26, 20, 3, 20);
  rect(-470 + (mouseX * 10), 200 + 26, 20, 3, 20);
  rect(-430 + (mouseX * 10), 200 + 26, 20, 3, 20);
  rect(-390 + (mouseX * 10), 200 + 26, 20, 3, 20);
  rect(-350 + (mouseX * 10), 200 + 26, 20, 3, 20);
  rect(-310 + (mouseX * 10), 200 + 26, 20, 3, 20);
  rect(-270 + (mouseX * 10), 200 + 26, 20, 3, 20);
  rect(-230 + (mouseX * 10), 200 + 26, 20, 3, 20);
  rect(-190 + (mouseX * 10), 200 + 26, 20, 3, 20);
  rect(-150 + (mouseX * 10), 200 + 26, 20, 3, 20);
  rect(-110 + (mouseX * 10), 200 + 26, 20, 3, 20);
  rect(-70 + (mouseX * 10), 200 + 26, 20, 3, 20);
  rect(-30 + (mouseX * 10), 200 + 26, 20, 3, 20);
  rect(10 + (mouseX * 10), 200 + 26, 20, 3, 20);
  rect(50 + (mouseX * 10), 200 + 26, 20, 3, 20);
  rect(90 + (mouseX * 10), 200 + 26, 20, 3, 20);

  // Dock 1
  /*
   Creates the top part of the dock. (Over the previous island)
   */
  fill(150, 123, 77);
  rect(-1125 +(mouseX * 10), 200 + 14, 166, 35, 20);
  fill(199, 162, 102);
  rect(-1125 +(mouseX * 10), 200 + 12, 166, 35, 20);
  // Dock1 Detail (Wood Palets)
  fill(50, 40);
  rect(-1110 +(mouseX * 10), 200 + 14, 2, 31, 20);
  rect(-1095 +(mouseX * 10), 200 + 14, 2, 31, 20);
  rect(-1080 +(mouseX * 10), 200 + 14, 2, 31, 20);
  rect(-1065 +(mouseX * 10), 200 + 14, 2, 31, 20);
  rect(-1050 +(mouseX * 10), 200 + 14, 2, 31, 20);
  rect(-1035 +(mouseX * 10), 200 + 14, 2, 31, 20);
  rect(-1020 +(mouseX * 10), 200 + 14, 2, 31, 20);
  rect(-1005 +(mouseX * 10), 200 + 14, 2, 31, 20);
  rect(-990 +(mouseX * 10), 200 + 14, 2, 31, 20);
  rect(-975 +(mouseX * 10), 200 + 14, 2, 31, 20);
  // Dock1 Posts
  fill(0, 30);
  rect(-1035 +(mouseX * 10), 200 + 41, 10, 35, 20);
  fill(237, 193, 122);
  rect(-1035 +(mouseX * 10), 200 + 36, 10, 35, 20);
  fill(0, 30);
  rect(-1085 +(mouseX * 10), 200 + 41, 10, 35, 20);
  fill(237, 193, 122);
  rect(-1085 +(mouseX * 10), 200 + 36, 10, 35, 20);

  // Car 1
  /*
   Creates a yellow car for the highway.
   */
  fill(255, 233, 100);
  rect(-1100 +(mouseX * 20), 200 + 5, 50, 30, 20); // Cab
  rect(-1100 +(mouseX * 20), 200 + 17, 50, 18); // Cab
  fill(50);
  ellipse(-1096 +(mouseX * 20), 200 + 28, 12, 12); // Wheel
  ellipse(-1066 +(mouseX * 20), 200 + 28, 12, 12); // Wheel

  // Bridge 1 Posts (HighWay)
  fill(0, 30);
  rect(-75 +(mouseX * 10), 200 + 41, 10, 35, 20);
  fill(0, 30);
  rect(-15 +(mouseX * 10), 200 + 41, 10, 35, 20);
  fill(250);
  rect(-75 +(mouseX * 10), 200 + 36, 10, 35, 20);
  fill(250);
  rect(-15 +(mouseX * 10), 200 + 36, 10, 35, 20);
  // Bridge 2  Posts (HighWay)
  fill(0, 30);
  rect(-485 +(mouseX * 10), 200 + 41, 10, 35, 20);
  fill(0, 30);
  rect(-425 +(mouseX * 10), 200 + 41, 10, 35, 20);
  fill(250);
  rect(-485 +(mouseX * 10), 200 + 36, 10, 35, 20);
  fill(250);
  rect(-425 +(mouseX * 10), 200 + 36, 10, 35, 20);

  // Tree (LOW)
  fill(128, 191, 88);
  rect(-225 + (mouseX * 10) + 25, 200 + 15, 4, 45, 20);
  fill(150, 123, 77);
  rect(-225 + (mouseX * 10) + 25, 200 + 10, 4, 45, 20);
  fill(224, 152, 149);
  ellipse(-238 + (mouseX * 10) + 25, 200 + 5, 30, 30);
  fill(255, 173, 170);
  ellipse(-238 + (mouseX * 10) + 25, 200 + 0, 30, 30);

  // Tree (LOW)
  fill(128, 191, 88);
  rect(-325 + (mouseX * 10) + 25, 200 + 15, 4, 45, 20);
  fill(150, 123, 77);
  rect(-325 + (mouseX * 10) + 25, 200 + 10, 4, 45, 20);
  fill(224, 152, 149);
  ellipse(-338 + (mouseX * 10) + 25, 200 + 5, 30, 30);
  fill(255, 173, 170);
  ellipse(-338 + (mouseX * 10) + 25, 200 + 0, 30, 30);

  // LAYER 3
  // All objects on this layer move right to left using the 'mouseX' built in variable.
  // ***********************************************************************************

  // Small Island
  /*
   Creates a small island.
   100 pixels wide.
   */
  fill(0, 30);
  rect(0 +(mouseX * 12), 340, 100, 50, 20);
  fill(153, 129, 102);
  rect(0 +(mouseX * 12), 340 - 5, 100, 50, 20);
  fill(134, 114, 90);
  rect(0 +(mouseX * 12), 340 - 17, 100, 50, 20);
  fill(128, 191, 88);
  rect(0 +(mouseX * 12), 340 - 20, 100, 50, 20);
  fill(144, 212, 100);
  rect(0 +(mouseX * 12), 340 - 25, 100, 50, 20);
  fill(152, 224, 106);
  rect(4 +(mouseX * 12), 340 - 21, 92, 42, 20);

  // Small Island
  /*
   Creates a small island.
   100 pixels wide.
   */
  fill(0, 30);
  rect(-700 +(mouseX * 12), 340, 100, 50, 20);
  fill(153, 129, 102);
  rect(-700 +(mouseX * 12), 340 - 5, 100, 50, 20);
  fill(134, 114, 90);
  rect(-700 +(mouseX * 12), 340 - 17, 100, 50, 20);
  fill(128, 191, 88);
  rect(-700 +(mouseX * 12), 340 - 20, 100, 50, 20);
  fill(144, 212, 100);
  rect(-700 +(mouseX * 12), 340 - 25, 100, 50, 20);
  fill(152, 224, 106);
  rect(-696 +(mouseX * 12), 340 - 21, 92, 42, 20);

  // Small Island
  /*
   Creates a small island.
   100 pixels wide.
   */
  fill(0, 30);
  rect(-1800 +(mouseX * 12), 340, 100, 50, 20);
  fill(153, 129, 102);
  rect(-1800 +(mouseX * 12), 340 - 5, 100, 50, 20);
  fill(134, 114, 90);
  rect(-1800 +(mouseX * 12), 340 - 17, 100, 50, 20);
  fill(128, 191, 88);
  rect(-1800 +(mouseX * 12), 340 - 20, 100, 50, 20);
  fill(144, 212, 100);
  rect(-1800 +(mouseX * 12), 340 - 25, 100, 50, 20);
  fill(152, 224, 106);
  rect(-1796 +(mouseX * 12), 340 - 21, 92, 42, 20);

  // Ship
  /*
   Creates a ship. 
   */
  fill(0, 30);
  rect(-200 +(mouseX * 12), 340, 50, 25, 20); // Water Shadow
  fill(199, 162, 102); // Body
  rect(-200 + (mouseX * 12), 340 - 5, 50, 25, 20);
  fill(133, 108, 68); // Edge
  rect(-200 + (mouseX * 12), 340 - 10, 50, 25, 20);
  fill(150, 123, 77); // Edge (Light)
  rect(-198 + (mouseX * 12), 340 - 8, 46, 21, 20);
  fill(112, 91, 57); // Edge (Dark)
  rect(-198 + (mouseX * 12), 340 - 6, 46, 19, 20);
  fill(255); // Sail (White)
  rect(-200 + (mouseX * 12), 340 - 38, 50, 25, 20);
  fill(150, 123, 77); // Post (Light)
  rect(-200 + (mouseX * 12) + 25, 340 - 40, 4, 45, 20);
  fill(150, 123, 77); // Post (Light)
  rect(-200 + (mouseX * 12), 340 - 38, 50, 4, 20);

  // Ripple
  /*
   Creates a ripple in the water for the Blinking Floters.
   The ripple enlarges and shrinks automatically using a sine function and 'frameCount'.
   */
  stroke(255, 255 - ((float) Math.cos(frameCount * 0.05) * 255));
  noFill();
  ellipseMode(CENTER);
  ellipse(-788 + (mouseX * 10), 340 + 10, 45 + ((float) Math.sin(frameCount * 0.1) * 12), 45 + ((float) Math.sin(frameCount * 0.1) * 12));
  noStroke();

  // Floater
  /*
   Creates a floater
   */
  fill(0, 30);
  rect(-800 +(mouseX * 10), 340, 25, 25, 20); // Water Shadow
  fill(255);
  rect(-800 +(mouseX * 10), 340 - 5, 25, 25, 20); 
  fill(255, 103, 97);
  rect(-800 +(mouseX * 10), 340 - 10, 25, 25, 20);
  fill(255);
  rect(-800 +(mouseX * 10), 340 - 15, 25, 25, 20); 
  fill(255, 103, 97);
  rect(-795 +(mouseX * 10), 340 - 18, 15, 15, 20); 
  fill(255);
  rect(-795 +(mouseX * 10), 340 -21, 15, 15, 20); 
  fill(255, 103, 97);
  rect(-795 +(mouseX * 10), 340 -24, 15, 15, 20); 
  fill(209, 85, 79);
  rect(-793 +(mouseX * 10), 340 -24, 11, 11, 20); 

  // Hot Air Balloon 3
  /*
   Creates a hot air balloon.
   It bobs up and down using a sine function and 'frameCount'.
   It also has a shadow that works similarily to the Ripple.
   */
  ellipseMode(CENTER);
  fill(0);
  stroke(1);
  line(-700 + (mouseX * 5), 175 + ((float) Math.sin(0.7 * (frameCount * 0.1)) * 12), -680 + (mouseX * 5), 225 + ((float) Math.sin(0.7 * (frameCount * 0.1)) * 12));
  line(-653 + (mouseX * 5), 175 + ((float) Math.sin(0.7 * (frameCount * 0.1)) * 12), -670 + (mouseX * 5), 225 + ((float) Math.sin(0.7 * (frameCount * 0.1)) * 12));
  noStroke();
  fill(0, 35);
  ellipse(-675 + (mouseX * 5), 255, ((float) Math.sin(0.7 * (frameCount * 0.1)) * 12) + 15, ((float) Math.sin(0.7 * (frameCount * 0.1)) * 12) + 10);
  ellipseMode(CORNER);
  fill(255, 103, 97);
  ellipse(-700 + (mouseX * 5), 150 + (float) Math.sin(0.7 * (frameCount * 0.1)) * 12, 50, 50);
  fill(255, 136, 122);
  ellipse(-685 + (mouseX * 5), 152 + (float) Math.sin(0.7 * (frameCount * 0.1)) * 12, 20, 10);
  fill(199, 162, 102);
  rect(-685 + (mouseX * 5), 210 + (float) Math.sin(0.7 * (frameCount * 0.1)) * 12, 20, 20, 20);
  fill(150, 123, 77);
  rect(-685 + (mouseX * 5), 210 + (float) Math.sin(0.7 * (frameCount * 0.1)) * 12, 20, 15, 20);
  fill(199, 162, 102);
  rect(-683 + (mouseX * 5), 212 + (float) Math.sin(0.7 * (frameCount * 0.1)) * 12, 16, 11, 20);
  fill(112, 91, 57);
  rect(-683 + (mouseX * 5), 215 + (float) Math.sin(0.7 * (frameCount * 0.1)) * 12, 16, 8, 20);

  // KINGDOM
  // All objects on this layer move right to left using the 'mouseX' built in variable.
  // ***********************************************************************************

  // Ship
  /*
   Creates a ship. 
   */
  fill(0, 30);
  rect(-2200 +(mouseX * 8), 120, 50, 25, 20); // Water Shadow
  fill(199, 162, 102); // Body
  rect(-2200 + (mouseX * 8), 120 - 5, 50, 25, 20);
  fill(133, 108, 68); // Edge
  rect(-2200 + (mouseX * 8), 120 - 10, 50, 25, 20);
  fill(150, 123, 77); // Edge (Light)
  rect(-2198 + (mouseX * 8), 120 - 8, 46, 21, 20);
  fill(112, 91, 57); // Edge (Dark)
  rect(-2198 + (mouseX * 8), 120 - 6, 46, 19, 20);
  fill(255); // Sail (White)
  rect(-2200 + (mouseX * 8), 120 - 38, 50, 25, 20);
  fill(150, 123, 77); // Post (Light)
  rect(-2200 + (mouseX * 8) + 25, 120 - 40, 4, 45, 20);
  fill(150, 123, 77); // Post (Light)
  rect(-2200 + (mouseX * 8), 120 - 38, 50, 4, 20);

  // Island
  /*
   Creates an island.
   1000 pixels wide.
   */
  fill(0, 30);
  rect(-3000 +(mouseX * 10), 200, 1000, 100, 20);
  fill(153, 129, 102);
  rect(-3000 +(mouseX * 10), 200 - 5, 1000, 100, 20);
  fill(134, 114, 90);
  rect(-3000 +(mouseX * 10), 200 - 17, 1000, 100, 20);
  fill(189, 128, 126);
  rect(-3000 +(mouseX * 10), 200 - 20, 1000, 100, 20);
  fill(224, 152, 149);
  rect(-3000 +(mouseX * 10), 200 - 25, 1000, 100, 20);
  fill(255, 173, 170);
  rect(-2996 +(mouseX * 10), 200 -21, 992, 92, 20);

  // Flag Pole
  /*
   Creates a pole with a flag on top.
   Half of the flag moves up and down using a sine fuction and 'frameCount'.
   This gives an illusion that the wind is flowing through it.
   */
  fill(255);
  rect(-2965 + (mouseX * 10), 200 - 65, 30, 25, 20);
  rect(-2940 + (mouseX * 10), 200 - 65 + ( sin(mouseX * .2) * 5.), 30, 25, 20);
  fill(153, 129, 102);
  rect(-2965 + (mouseX * 10), 200 - 65, 8, 100, 20);

  // Highway (Kingdom)
  /*
   Creates the top part of the highway. (Over the previous islands)
   */
  fill(90);
  rect(-2925 +(mouseX * 10), 200 + 14, 800, 35, 20);
  fill(110);
  rect(-2925 +(mouseX * 10), 200 + 12, 800, 35, 20);

  // Small Island
  /*
   Creates a small island.
   100 pixels wide.
   */
  fill(0, 30);
  rect(-2500 +(mouseX * 12), 340, 100, 50, 20);
  fill(153, 129, 102);
  rect(-2500 +(mouseX * 12), 340 - 5, 100, 50, 20);
  fill(134, 114, 90);
  rect(-2500 +(mouseX * 12), 340 - 17, 100, 50, 20);
  fill(189, 128, 126);
  rect(-2500 +(mouseX * 12), 340 - 20, 100, 50, 20);
  fill(224, 152, 149);
  rect(-2500 +(mouseX * 12), 340 - 25, 100, 50, 20);
  fill(255, 173, 170);
  rect(-2496 +(mouseX * 12), 340 - 21, 92, 42, 20);

  // Small Island
  /*
   Creates a small island.
   100 pixels wide.
   */
  fill(0, 30);
  rect(-3500 +(mouseX * 12), 340, 100, 50, 20);
  fill(153, 129, 102);
  rect(-3500 +(mouseX * 12), 340 - 5, 100, 50, 20);
  fill(134, 114, 90);
  rect(-3500 +(mouseX * 12), 340 - 17, 100, 50, 20);
  fill(189, 128, 126);
  rect(-3500 +(mouseX * 12), 340 - 20, 100, 50, 20);
  fill(224, 152, 149);
  rect(-3500 +(mouseX * 12), 340 - 25, 100, 50, 20);
  fill(255, 173, 170);
  rect(-3496 +(mouseX * 12), 340 - 21, 92, 42, 20);

  // Ripple
  /*
   Creates a ripple in the water for the Blinking Floters.
   The ripple enlarges and shrinks automatically using a sine function and 'frameCount'.
   */
  stroke(255, 255 - ((float) Math.cos(frameCount * 0.05) * 255));
  noFill();
  ellipseMode(CENTER);
  ellipse(-1888 + (mouseX * 10), 200 + 10, 45 + ((float) Math.sin(frameCount * 0.1) * 12), 45 + ((float) Math.sin(frameCount * 0.1) * 12));
  noStroke();

  // Floater
  /*
   Creates a floater
   */
  fill(0, 30);
  rect(-1900 +(mouseX * 10), 200, 25, 25, 20); // Water Shadow
  fill(255);
  rect(-1900 +(mouseX * 10), 200 - 5, 25, 25, 20); 
  fill(255, 103, 97);
  rect(-1900 +(mouseX * 10), 200 - 10, 25, 25, 20);
  fill(255);
  rect(-1900 +(mouseX * 10), 200 - 15, 25, 25, 20); 
  fill(255, 103, 97);
  rect(-1895 +(mouseX * 10), 200 - 18, 15, 15, 20); 
  fill(255);
  rect(-1895 +(mouseX * 10), 200 -21, 15, 15, 20); 
  fill(255, 103, 97);
  rect(-1895 +(mouseX * 10), 200 -24, 15, 15, 20); 
  fill(209, 85, 79);
  rect(-1893 +(mouseX * 10), 200 -24, 11, 11, 20);

  // Hot Air Balloon 2
  /*
   Creates a hot air balloon.
   It bobs up and down using a sine function and 'frameCount'.
   It also has a shadow that works similarily to the Ripple.
   */
  ellipseMode(CENTER);
  fill(0);
  stroke(1);
  line(-1200 + (mouseX * 5), 75 + ((float) Math.sin(0.7 * (frameCount * 0.1)) * 12), -1180 + (mouseX * 5), 125 + ((float) Math.sin(0.7 * (frameCount * 0.1)) * 12));
  line(-1153 + (mouseX * 5), 75 + ((float) Math.sin(0.7 * (frameCount * 0.1)) * 12), -1170 + (mouseX * 5), 125 + ((float) Math.sin(0.7 * (frameCount * 0.1)) * 12));
  noStroke();
  fill(0, 35);
  ellipse(-1175 + (mouseX * 5), 155, ((float) Math.sin(0.7 * (frameCount * 0.1)) * 12) + 15, ((float) Math.sin(0.7 * (frameCount * 0.1)) * 12) + 10);
  ellipseMode(CORNER);
  fill(255, 103, 97);
  ellipse(-1200 + (mouseX * 5), 50 + (float) Math.sin(0.7 * (frameCount * 0.1)) * 12, 50, 50);
  fill(255, 136, 122);
  ellipse(-1185 + (mouseX * 5), 52 + (float) Math.sin(0.7 * (frameCount * 0.1)) * 12, 20, 10);
  fill(199, 162, 102);
  rect(-1185 + (mouseX * 5), 110 + (float) Math.sin(0.7 * (frameCount * 0.1)) * 12, 20, 20, 20);
  fill(150, 123, 77);
  rect(-1185 + (mouseX * 5), 110 + (float) Math.sin(0.7 * (frameCount * 0.1)) * 12, 20, 15, 20);
  fill(199, 162, 102);
  rect(-1183 + (mouseX * 5), 112 + (float) Math.sin(0.7 * (frameCount * 0.1)) * 12, 16, 11, 20);
  fill(112, 91, 57);
  rect(-1183 + (mouseX * 5), 115 + (float) Math.sin(0.7 * (frameCount * 0.1)) * 12, 16, 8, 20);

  // Tree
  fill(189, 128, 126);
  rect(-2175 + (mouseX * 10) + 25, 200 - 35, 4, 45, 20);
  fill(150, 123, 77);
  rect(-2175 + (mouseX * 10) + 25, 200 - 40, 4, 45, 20);
  fill(144, 212, 100);
  ellipse(-2188 + (mouseX * 10) + 25, 200 - 45, 30, 30);
  fill(152, 224, 106);
  ellipse(-2188 + (mouseX * 10) + 25, 200 - 50, 30, 30);

  // Tree
  fill(189, 128, 126);
  rect(-2275 + (mouseX * 10) + 25, 200 - 35, 4, 45, 20);
  fill(150, 123, 77);
  rect(-2275 + (mouseX * 10) + 25, 200 - 40, 4, 45, 20);
  fill(144, 212, 100);
  ellipse(-2288 + (mouseX * 10) + 25, 200 - 45, 30, 30);
  fill(152, 224, 106);
  ellipse(-2288 + (mouseX * 10) + 25, 200 - 50, 30, 30);

  // Tree
  fill(189, 128, 126);
  rect(-2375 + (mouseX * 10) + 25, 200 - 35, 4, 45, 20);
  fill(150, 123, 77);
  rect(-2375 + (mouseX * 10) + 25, 200 - 40, 4, 45, 20);
  fill(144, 212, 100);
  ellipse(-2388 + (mouseX * 10) + 25, 200 - 45, 30, 30);
  fill(152, 224, 106);
  ellipse(-2388 + (mouseX * 10) + 25, 200 - 50, 30, 30);

  // Tree
  fill(189, 128, 126);
  rect(-2475 + (mouseX * 10) + 25, 200 - 35, 4, 45, 20);
  fill(150, 123, 77);
  rect(-2475 + (mouseX * 10) + 25, 200 - 40, 4, 45, 20);
  fill(144, 212, 100);
  ellipse(-2488 + (mouseX * 10) + 25, 200 - 45, 30, 30);
  fill(152, 224, 106);
  ellipse(-2488 + (mouseX * 10) + 25, 200 - 50, 30, 30);

  // Tree
  fill(189, 128, 126);
  rect(-2575 + (mouseX * 10) + 25, 200 - 35, 4, 45, 20);
  fill(150, 123, 77);
  rect(-2575 + (mouseX * 10) + 25, 200 - 40, 4, 45, 20);
  fill(144, 212, 100);
  ellipse(-2588 + (mouseX * 10) + 25, 200 - 45, 30, 30);
  fill(152, 224, 106);
  ellipse(-2588 + (mouseX * 10) + 25, 200 - 50, 30, 30);

  // Car 2
  /*
   Creates a yellow car for the Kingdom highway.
   */
  fill(255, 233, 100);
  rect(-5200 +(mouseX * 20), 200 + 5, 50, 30, 20); // Cab
  rect(-5200 +(mouseX * 20), 200 + 17, 50, 18); // Cab
  fill(50);
  ellipse(-5196 +(mouseX * 20), 200 + 28, 12, 12); // Wheel
  ellipse(-5166 +(mouseX * 20), 200 + 28, 12, 12); // Wheel

  // Tree (LOW)
  fill(189, 128, 126);
  rect(-2225 + (mouseX * 10) + 25, 200 + 15, 4, 45, 20);
  fill(150, 123, 77);
  rect(-2225 + (mouseX * 10) + 25, 200 + 10, 4, 45, 20);
  fill(144, 212, 100);
  ellipse(-2238 + (mouseX * 10) + 25, 200 + 5, 30, 30);
  fill(152, 224, 106);
  ellipse(-2238 + (mouseX * 10) + 25, 200 + 0, 30, 30);

  // Tree (LOW)
  fill(189, 128, 126);
  rect(-2325 + (mouseX * 10) + 25, 200 + 15, 4, 45, 20);
  fill(150, 123, 77);
  rect(-2325 + (mouseX * 10) + 25, 200 + 10, 4, 45, 20);
  fill(144, 212, 100);
  ellipse(-2338 + (mouseX * 10) + 25, 200 + 5, 30, 30);
  fill(152, 224, 106);
  ellipse(-2338 + (mouseX * 10) + 25, 200 + 0, 30, 30);

  // Tree (LOW)
  fill(189, 128, 126);
  rect(-2425 + (mouseX * 10) + 25, 200 + 15, 4, 45, 20);
  fill(150, 123, 77);
  rect(-2425 + (mouseX * 10) + 25, 200 + 10, 4, 45, 20);
  fill(144, 212, 100);
  ellipse(-2438 + (mouseX * 10) + 25, 200 + 5, 30, 30);
  fill(152, 224, 106);
  ellipse(-2438 + (mouseX * 10) + 25, 200 + 0, 30, 30);

  // Tree (LOW)
  fill(189, 128, 126);
  rect(-2525 + (mouseX * 10) + 25, 200 + 15, 4, 45, 20);
  fill(150, 123, 77);
  rect(-2525 + (mouseX * 10) + 25, 200 + 10, 4, 45, 20);
  fill(144, 212, 100);
  ellipse(-2538 + (mouseX * 10) + 25, 200 + 5, 30, 30);
  fill(152, 224, 106);
  ellipse(-2538 + (mouseX * 10) + 25, 200 + 0, 30, 30);

  // Ship
  /*
   Creates a ship. 
   */
  fill(0, 30);
  rect(-2800 +(mouseX * 8), 120, 50, 25, 20); // Water Shadow
  fill(199, 162, 102); // Body
  rect(-2800 + (mouseX * 8), 120 - 5, 50, 25, 20);
  fill(133, 108, 68); // Edge
  rect(-2800 + (mouseX * 8), 120 - 10, 50, 25, 20);
  fill(150, 123, 77); // Edge (Light)
  rect(-2798 + (mouseX * 8), 120 - 8, 46, 21, 20);
  fill(112, 91, 57); // Edge (Dark)
  rect(-2798 + (mouseX * 8), 120 - 6, 46, 19, 20);
  fill(255); // Sail (White)
  rect(-2800 + (mouseX * 8), 120 - 38, 50, 25, 20);
  fill(150, 123, 77); // Post (Light)
  rect(-2800 + (mouseX * 8) + 25, 120 - 40, 4, 45, 20);
  fill(150, 123, 77); // Post (Light)
  rect(-2800 + (mouseX * 8), 120 - 38, 50, 4, 20);

  // Ship
  /*
   Creates a ship. 
   */
  fill(0, 30);
  rect(-2500 +(mouseX * 8), 120, 50, 25, 20); // Water Shadow
  fill(199, 162, 102); // Body
  rect(-2500 + (mouseX * 8), 120 - 5, 50, 25, 20);
  fill(133, 108, 68); // Edge
  rect(-2500 + (mouseX * 8), 120 - 10, 50, 25, 20);
  fill(150, 123, 77); // Edge (Light)
  rect(-2498 + (mouseX * 8), 120 - 8, 46, 21, 20);
  fill(112, 91, 57); // Edge (Dark)
  rect(-2498 + (mouseX * 8), 120 - 6, 46, 19, 20);
  fill(255); // Sail (White)
  rect(-2500 + (mouseX * 8), 120 - 38, 50, 25, 20);
  fill(150, 123, 77); // Post (Light)
  rect(-2500 + (mouseX * 8) + 25, 120 - 40, 4, 45, 20);
  fill(150, 123, 77); // Post (Light)
  rect(-2500 + (mouseX * 8), 120 - 38, 50, 4, 20);

  // Ship
  /*
   Creates a ship. 
   */
  fill(0, 30);
  rect(-3300 +(mouseX * 10), 200, 50, 25, 20); // Water Shadow
  fill(199, 162, 102); // Body
  rect(-3300 + (mouseX * 10), 200 - 5, 50, 25, 20);
  fill(133, 108, 68); // Edge
  rect(-3300 + (mouseX * 10), 200 - 10, 50, 25, 20);
  fill(150, 123, 77); // Edge (Light)
  rect(-3298 + (mouseX * 10), 200 - 8, 46, 21, 20);
  fill(112, 91, 57); // Edge (Dark)
  rect(-3298 + (mouseX * 10), 200 - 6, 46, 19, 20);
  fill(255); // Sail (White)
  rect(-3300 + (mouseX * 10), 200 - 38, 50, 25, 20);
  fill(150, 123, 77); // Post (Light)
  rect(-3300 + (mouseX * 10) + 25, 200 - 40, 4, 45, 20);
  fill(150, 123, 77); // Post (Light)
  rect(-3300 + (mouseX * 10), 200 - 38, 50, 4, 20);

  // Ship
  /*
   Creates a ship. 
   */
  fill(0, 30);
  rect(-3800 +(mouseX * 12), 340, 50, 25, 20); // Water Shadow
  fill(199, 162, 102); // Body
  rect(-3800 + (mouseX * 12), 340 - 5, 50, 25, 20);
  fill(133, 108, 68); // Edge
  rect(-3800 + (mouseX * 12), 340 - 10, 50, 25, 20);
  fill(150, 123, 77); // Edge (Light)
  rect(-3798 + (mouseX * 12), 340 - 8, 46, 21, 20);
  fill(112, 91, 57); // Edge (Dark)
  rect(-3798 + (mouseX * 12), 340 - 6, 46, 19, 20);
  fill(255); // Sail (White)
  rect(-3800 + (mouseX * 12), 340 - 38, 50, 25, 20);
  fill(150, 123, 77); // Post (Light)
  rect(-3800 + (mouseX * 12) + 25, 340 - 40, 4, 45, 20);
  fill(150, 123, 77); // Post (Light)
  rect(-3800 + (mouseX * 12), 340 - 38, 50, 4, 20);

  // Castle
  /*
   Creates a grey castle.
   Made from rectangles with rounded edges.
   */
  fill(224, 152, 149);
  rect(-2100 +(mouseX * 10), 200 - 35, 75, 75, 20);
  fill(220);
  rect(-2100 +(mouseX * 10), 200 - 40, 75, 75, 20);
  fill(180);
  rect(-2100 +(mouseX * 10), 200 - 40, 75, 40, 20);
  fill(220);
  rect(-2096 +(mouseX * 10), 200 - 36, 67, 32, 20);
  fill(150);
  rect(-2096 +(mouseX * 10), 200 - 32, 67, 28, 20);
  // Door for Castle
  fill(100);
  rect(-2080 + (mouseX * 10), 200 + 15, 20, 20, 20);
  fill(100);
  rect(-2080 + (mouseX * 10), 200 + 25, 20, 10);

  // Sea Creature
  /*
   Creates a purple creature at the end of the left side of the map.
   The creature is fabricated much like the islands.
   Opens mouth when mouse moves up.
   Closes mouth when mouse moves down.
   */
  // Neck
  fill(0, 30);
  rect(-4070 +(mouseX * 10.5), 200 - 15, 100, 100, 20);
  fill(104, 91, 166);
  rect(-4070 +(mouseX * 10.5), 200 - 25, 100, 100, 20);
  fill(116, 102, 186);
  rect(-4070 +(mouseX * 10.5), 200 - 25, 100, 50, 20);
  fill(134, 118, 196);
  rect(-4065 +(mouseX * 10.5), 200 - 20, 90, 40, 20);
  // Head
  fill(0, 30);
  rect(-4000 +(mouseX * 10.5), 200 + 10, 200, 100, 20);
  fill(104, 91, 166);
  rect(-4000 +(mouseX * 10.5), 200, 200, 100, 20);
  fill(116, 102, 186);
  rect(-4000 +(mouseX * 10.5), 200 - 20, 200, 100, 20);
  fill(224, 152, 149);
  rect(-3990 +(mouseX * 10.5), 200 - 10, 180, 80, 20);
  fill(189, 128, 126);
  rect(-3990 +(mouseX * 10.5), 200 + 20, 180, 50, 20);
  fill(255, 173, 170);
  rect(-3990 +(mouseX * 10.5), 200 - 30, 40, 100, 20);
  fill(134, 118, 196);
  rect(-3991 +(mouseX * 10.5), 200 - 30, 30, 100, 20);
  fill(255);
  rect(-3945 +(mouseX * 10.5), 200 + 60, 20, 15, 20);
  rect(-3915 +(mouseX * 10.5), 200 + 60, 20, 15, 20);
  rect(-3885 +(mouseX * 10.5), 200 + 60, 20, 15, 20);
  rect(-3855 +(mouseX * 10.5), 200 + 60, 20, 15, 20);
  rect(-3930 +(mouseX * 10.5), 200 + 40 - (mouseY * 0.1), 20, 25, 20);
  rect(-3900 +(mouseX * 10.5), 200 + 40 - (mouseY * 0.1), 20, 25, 20);
  rect(-3870 +(mouseX * 10.5), 200 + 40 - (mouseY * 0.1), 20, 25, 20);
  rect(-3840 +(mouseX * 10.5), 200 + 40 - (mouseY * 0.1), 20, 25, 20);
  fill(104, 91, 166);
  rect(-4000 +(mouseX * 10.5), 200 - 50 - (mouseY * 0.1), 200, 100, 20);
  fill(116, 102, 186);
  rect(-4000 +(mouseX * 10.5), 200 - 100 - (mouseY * 0.1), 200, 100, 20);
  fill(134, 118, 196);
  rect(-3995 +(mouseX * 10.5), 200 - 95 - (mouseY * 0.1), 190, 90, 20);
  fill(255);
  ellipse(-3975 +(mouseX * 10.5), 200 + 10 - (mouseY * 0.1), 20, 20);
  fill(0);
  ellipse(-3970 +(mouseX * 10.5), 200 + 15 - (mouseY * 0.1), 10, 10);
  // Sea Creature Body
  fill(0, 30);
  rect(-4200 +(mouseX * 10.5), 200 - 25, 150, 150, 20);
  fill(104, 91, 166);
  rect(-4200 +(mouseX * 10.5), 200 - 35, 150, 150, 20);
  fill(116, 102, 186);
  rect(-4200 +(mouseX * 10.5), 200 - 150, 150, 150, 20);
  fill(134, 118, 196);
  rect(-4195 +(mouseX * 10.5), 200 - 145, 140, 140, 20);
  // Legs
  fill(0, 30);
  rect(-4150 +(mouseX * 10.5), 200 + 50, 50, 100, 20);
  fill(104, 91, 166);
  rect(-4150 +(mouseX * 10.5), 200 + 40, 50, 100, 20);
  fill(116, 102, 186);
  rect(-4150 +(mouseX * 10.5), 200 + 40, 50, 25, 20);
  fill(134, 118, 196);
  rect(-4145 +(mouseX * 10.5), 200 + 45, 40, 15, 20);

  // Clouds
  /*
   Creates white cloud clutter between the pink islands and the green islands.
   */
  fill(255);
  rect(-2500 + (mouseX * 15), 100, 200, 200, 20);
  rect(-2300 + (mouseX * 13), 300, 75, 75, 20);
  rect(-2300 + (mouseX * 14), 10, 50, 50, 20);
  rect(-2200 + (mouseX * 15), 250, 20, 20, 20);
  rect(-3000 + (mouseX * 17), 120, 100, 100, 20);
  rect(-2800 + (mouseX * 15), 300, 20, 20, 20);

  // Clouds
  /*
   Creates white cloud clutter at the end of the right side of the map.
   */
  fill(255);
  rect(300 + (mouseX * 15), 100, 200, 200, 20);
  rect(200 + (mouseX * 13), 300, 75, 75, 20);
  rect(250 + (mouseX * 14), 10, 50, 50, 20);
  rect(200 + (mouseX * 15), 250, 20, 20, 20);
  rect(350 + (mouseX * 17), 120, 100, 100, 20);
  rect(50 + (mouseX * 15), 300, 20, 20, 20);
  
  // Pirate Ship (SECRET)
   // Ship
  /*
   Creates a ship. 
   */
  fill(0, 30);
  rect(600 +(mouseX * 12), 250, 200, 100, 20); // Water Shadow
  fill(199, 162, 102); // Body
  rect(600 + (mouseX * 12), 250 - 5, 200, 100, 20);
  fill(133, 108, 68); // Edge
  rect(600 + (mouseX * 12), 250 - 10, 200, 75, 20);
  fill(150, 123, 77); // Edge (Light)
  rect(606 + (mouseX * 12), 250 - 4, 188, 63, 20);
  fill(112, 91, 57); // Edge (Dark)
  rect(606 + (mouseX * 12), 250 + 2, 188, 57, 20);
  fill(0); // Sail (White)
  rect(600 + (mouseX * 12), 250 - 125, 200, 100, 20);
  fill(150, 123, 77); // Post (Light)
  rect(600 + (mouseX * 12) + 100, 250 - 135, 12, 175, 20);
  fill(150, 123, 77); // Post (Light)
  rect(595 + (mouseX * 12), 250 - 130, 210, 12, 20);
  // Skeleton 1
  fill(255);
  ellipse(625 + (mouseX * 12), 250 - 100, 50, 50);
  rect(638 + (mouseX * 12), 250 - 90, 25, 50, 20);
  fill(0);
  rect(642 + (mouseX * 12), 250 - 50, 4, 20);
  rect(654 + (mouseX * 12), 250 - 50, 4, 20);
  ellipse(630 + (mouseX * 12), 250 - 80, 15, 15);
  ellipse(655 + (mouseX * 12), 250 - 80, 15, 15);
  // Skeleton 2
  fill(255);
  ellipse(730 + (mouseX * 12), 250 - 100, 50, 50);
  rect(743 + (mouseX * 12), 250 - 90, 25, 50, 20);
  fill(0);
  rect(747 + (mouseX * 12), 250 - 50, 4, 20);
  rect(759 + (mouseX * 12), 250 - 50, 4, 20);
  ellipse(735 + (mouseX * 12), 250 - 80, 15, 15);
  ellipse(760 + (mouseX * 12), 250 - 80, 15, 15);

  // Light Rays
  /*
   Creates white low opasity light rays.
   Angled at 45 degrees.
   Becomes brighter as the mouse goes up.
   */
  fill(255, 80 - (mouseY / 1.5));
  rotate(0.785);
  rect(50, -175, 50, 200, 20);
  rect(125, -250, 100, 200, 20);
  rect(250, -325, 25, 200, 20);
  rotate(-0.785);

  // Night Overlay
  /*
   Creates a low opasity black overlay.
   Becomes brighter as mouse does down.
   Makes all objects darker during night time.
   */
  fill(0, (mouseY / 5.));
  rect(0, 0, 400, 400);

  // HUD
  // Objects in this layer do not move with the mouseX position.
  // Other than the 'You Are Here' Arrow.
  // ***********************************************************************************

  // Map Bar
  fill(0, 50);
  rect(20, 20, 360, 10, 10);

  // Monster Icon
  fill(116, 102, 186);
  ellipse(20, 18, 14, 14);

  // Castle Icon
  fill(150);
  rect(170, 18, 14, 14);

  // Dock Icon
  fill(199, 162, 102);
  rect(260, 18, 14, 14);

  // Cloud Icon
  fill(255);
  ellipse(366, 18, 14, 14);

  // You Are Here Arrow
  /*
   Moves left and right opposite of the mouse movement.
   Has a padding to prevent it from going off of the Map Bar.
   */
  fill(255, 103, 97);
  triangle(20 + ((400 - mouseX) * 0.9) - 5, 18, 20 + ((400 - mouseX) * 0.9), 32, 20 + ((400 - mouseX) * 0.9) + 5, 18);
  
  // Custom Cursor
  fill(255);
  ellipseMode(CENTER);
  ellipse(mouseX, mouseY, 25 + (sin(frameCount * 0.1) * 10.), 25 + (sin(frameCount * 0.1) * 10.));

  // LIGHTS
  // All objects on this layer move right to left using the 'mouseX' built in variable.
  // ***********************************************************************************

  // Light (Floater)
  /*
   Adds a night-time blinking light to the floater
   */
  ellipseMode(CENTER);
  fill(255, 0, 0, (mouseY/2.) - 80);
  ellipse(-88 +(mouseX * 6), 120 - 20, 25 +  sin(frameCount * 0.1) * 25, 25 +  sin(frameCount * 0.1) * 25);
  ellipseMode(CORNER);

  // Light (Floater)
  /*
   Adds a night-time blinking light to the floater
   */
  ellipseMode(CENTER);
  fill(255, 0, 0, (mouseY/2.) - 80);
  ellipse(-788 +(mouseX * 10), 340 - 20, 25 +  sin(frameCount * 0.1) * 25, 25 +  sin(frameCount * 0.1) * 25);
  ellipseMode(CORNER);

  // Light (Floater)
  /*
   Adds a night-time blinking light to the floater
   */
  ellipseMode(CENTER);
  fill(255, 0, 0, (mouseY/2.) - 80);
  ellipse(-1888 +(mouseX * 10), 200 - 20, 25 +  sin(frameCount * 0.1) * 25, 25 +  sin(frameCount * 0.1) * 25);
  ellipseMode(CORNER);
  
  pushMatrix();

  // Light (Lighthouse) *Nicholas Phan's Suggestion*
  /*
   Adds a night-time light to the Lightpost
   */
  fill(255, (mouseY/2.) - 80);
  translate(width/2 + (mouseX * 10) - 18, height/2 - 48);
  rotate(radians(frameCount));
  quad(-800, -5000, 800, -5000, -800, 5000, 800, 5000);
  fill(255, 103, 97);
  rect(-12, -12, 26, 24, 24);
  
  popMatrix();
  
  // Lighthouse Speach Bubble
  fill(255);
  rect(200 +(mouseX * 10), 200 - 110, 50 + (sin(frameCount * 0.1) * 5.), 50 + (sin(frameCount * 0.1) * 5.), 20);
  noFill();
  stroke(255);
  strokeWeight(10);
  bezier((float)(220 +(mouseX * 10)), (float)(200 - 100), (float) (220 +(mouseX * 10)), (float)(200 - 70), (float) (200 +(mouseX * 10)), (float)(200 - 60), (float)(200 +(mouseX * 10)), (float)(200 - 60));
  strokeWeight(1);
  
  noStroke();
  fill(0);
  ellipse(210 + (mouseX * 10), 210 - 110, 28 + (sin(frameCount * 0.1) * 5.), 28 + (sin(frameCount * 0.1) * 5.));
  ellipse(216 + (mouseX * 10), 210 - 92, 15 + (sin(frameCount * 0.1) * 5.), 15 + (sin(frameCount * 0.1) * 5.));
  fill(255);
  ellipse(212 + (mouseX * 10), 210 - 100, 10 + (sin(frameCount * 0.1) * 5.), 10 + (sin(frameCount * 0.1) * 5.));
  ellipse(226 + (mouseX * 10), 210 - 100, 10 + (sin(frameCount * 0.1) * 5.), 10 + (sin(frameCount * 0.1) * 5.));
  
}

// Executes code when any mouse button is pressed.
void mousePressed()
{
  frameRate(1);
  // Custom Cursor
  ellipseMode(CENTER);
  fill(255);
  ellipse(width / 2, height / 2, 400, 400);
  textSize(18);
  fill(0);
  text("BY: P.Y.", 165, height/2);
}

// Executes code when any key is pressed.
void keyPressed()
{
  frameRate(1);
  // Custom Cursor
  ellipseMode(CENTER);
  fill(255);
  ellipse(width / 2, height / 2, 400, 400);
  textSize(18);
  fill(0);
  text("BY: P.Y.", 165, height/2);
}