- /*
- Kobold Run
- Jared Moeller
- Sept. 6, 2017
- Mouse (Vertical movement) - Day/night cycle
- Mouse (Horizontle movement) - Kobold runs (background scrolls)
- Mouse (click) - Kobold Laughs
- */
-
- ////////////////////////////////////////////////////// setup ////////////////////////////////////////////////////////
- void setup() {
- size(400, 400);
- frameRate(60);
- }
-
- //////////////////////////////////////////////////////////// draw /////////////////////////////////////////////////////
- void draw() {
-
- rectMode(CORNERS);
- ellipseMode(CENTER);
- noStroke();
-
- //////////////////////////////////////////////////// background ////////////////////////////////////////////////////
-
- ////////////////////////////////////////////////////// sky
-
- // day sky color
- background(60, 120, 200);
-
- ///////////////////////////////////////////////////// stars
-
- stroke(255, 255, 190, (mouseY/2.5));
- strokeWeight(3);
-
- // placing stars 10 apart each on x axis gave good sense of spacing
- point(10, 120);
- point(20, 20);
- point(30, 100);
- point(40, 50);
- point(50, 80);
- point(60, 110);
- point(70, 15);
- point(80, 60);
- point(90, 30);
- point(100, 90);
- point(110, 60);
- point(120, 10);
- point(130, 100);
- point(140, 80);
- point(150, 30);
- point(160, 40);
- point(170, 110);
- point(180, 50);
- point(190, 70);
- point(200, 90);
- point(210, 20);
- point(220, 40);
- point(230, 10);
- point(240, 90);
- point(250, 60);
- point(260, 30);
- point(270, 100);
- point(280, 120);
- point(290, 80);
- point(300, 50);
- point(310, 70);
- point(320, 20);
- point(330, 75);
- point(340, 40);
- point(350, 30);
- point(360, 70);
- point(370, 20);
- point(380, 100);
- point(390, 20);
-
- // sun - moon
- noStroke();
- fill(255);
-
- //sun starts it's parabolic curve at peak
- ellipse((200+(mouseY/1.6)), .002*sq((mouseY))+40, 10, 10);
-
- fill(255, 255, 190);
- //moon is tuned to end at peak
- ellipse(-50+((mouseY/1.6)), .002*sq((mouseY-400))+40, 10, 10);
-
- ///////////////////////////////////////////////////////////////////// clouds 1 - 2 - 3 (close)
-
- // each cloud is comprised of 3 grey rectangles, (day only)
-
- fill(235, 400-mouseY);
- rect(300-(mouseX/5), 30, 380-(mouseX/5), 50);
- rect(40-(mouseX/6), 40, 120-(mouseX/6), 60);
-
- fill(210, 400-mouseY);
- rect(260-(mouseX/8), 40, 340-(mouseX/8), 60);
- rect(80-(mouseX/7), 50, 140-(mouseX/7), 70);
-
- fill(195, 400-mouseY);
- rect(320-(mouseX/7.5), 50, 420-(mouseX/7.5), 70);
- rect(-20-(mouseX/9), 60, 100-(mouseX/9), 80);
-
- // cloud 1 - 2 - 3 (far)
-
- // added to give more 'depth' to background (felt too empty)
-
- fill(220, 400-mouseY);
- rect(160-(mouseX/14), 90, 200-(mouseX/14), 100);
-
-
- fill(225, 400-mouseY);
- rect(180-(mouseX/10), 100, 230-(mouseX/10), 110);
-
-
- fill(210, 400-mouseY);
- rect(190-(mouseX/12), 95, 240-(mouseX/12), 105);
-
- /////////////////////////////////////////////////////////////////////////////// treeline base
- // to allow for the background to be constructed easily, started with 'strips'
-
- fill(0, 150, 0);
- rect(0, 140, 400, 160);
-
- /////////////////////////////////////////////////////////////////////////////// treeline shrubbage
-
- // basic 'tree' effect done by repeated circles.
-
- ellipse(5-(mouseX/20), 140, 10, 10);
- ellipse(12-(mouseX/20), 140, 15, 15);
-
- ellipse(25-(mouseX/20), 140, 10, 10);
- ellipse(32-(mouseX/20), 140, 15, 15);
-
- ellipse(45-(mouseX/20), 140, 10, 10);
- ellipse(52-(mouseX/20), 140, 15, 15);
-
- ellipse(65-(mouseX/20), 140, 10, 10);
- ellipse(72-(mouseX/20), 140, 15, 15);
-
- ellipse(85-(mouseX/20), 140, 10, 10);
- ellipse(92-(mouseX/20), 140, 15, 15);
-
- ellipse(105-(mouseX/20), 140, 10, 10);
- ellipse(112-(mouseX/20), 140, 15, 15);
-
- ellipse(125-(mouseX/20), 140, 10, 10);
- ellipse(132-(mouseX/20), 140, 15, 15);
-
- ellipse(145-(mouseX/20), 140, 10, 10);
- ellipse(152-(mouseX/20), 140, 15, 15);
-
- ellipse(165-(mouseX/20), 140, 10, 10);
- ellipse(172-(mouseX/20), 140, 15, 15);
-
- ellipse(185-(mouseX/20), 140, 10, 10);
- ellipse(192-(mouseX/20), 140, 15, 15);
-
- ellipse(205-(mouseX/20), 140, 10, 10);
- ellipse(212-(mouseX/20), 140, 15, 15);
-
- ellipse(225-(mouseX/20), 140, 10, 10);
- ellipse(232-(mouseX/20), 140, 15, 15);
-
- ellipse(245-(mouseX/20), 140, 10, 10);
- ellipse(252-(mouseX/20), 140, 15, 15);
-
- ellipse(265-(mouseX/20), 140, 10, 10);
- ellipse(272-(mouseX/20), 140, 15, 15);
-
- ellipse(285-(mouseX/20), 140, 10, 10);
- ellipse(292-(mouseX/20), 140, 15, 15);
-
- ellipse(305-(mouseX/20), 140, 10, 10);
- ellipse(312-(mouseX/20), 140, 15, 15);
-
- ellipse(325-(mouseX/20), 140, 10, 10);
- ellipse(332-(mouseX/20), 140, 15, 15);
-
- ellipse(345-(mouseX/20), 140, 10, 10);
- ellipse(352-(mouseX/20), 140, 15, 15);
-
- ellipse(365-(mouseX/20), 140, 10, 10);
- ellipse(372-(mouseX/20), 140, 15, 15);
-
- ellipse(385-(mouseX/20), 140, 10, 10);
- ellipse(392-(mouseX/20), 140, 15, 15);
-
- ellipse(405-(mouseX/20), 140, 10, 10);
- ellipse(412-(mouseX/20), 140, 15, 15);
-
- /////////////////////////////////////////////////////////////////////////////////// hexes 1
-
- fill(0, 170, 0);
- rect(0, 160, 400, 200);
-
- // triangles same as 'strip blend in
-
- triangle(0-(mouseX/10), 160, 20-(mouseX/10), 150, 40-(mouseX/10), 160);
- triangle(80-(mouseX/10), 160, 100-(mouseX/10), 150, 120-(mouseX/10), 160);
- triangle(160-(mouseX/10), 160, 180-(mouseX/10), 150, 200-(mouseX/10), 160);
- triangle(240-(mouseX/10), 160, 260-(mouseX/10), 150, 280-(mouseX/10), 160);
- triangle(320-(mouseX/10), 160, 340-(mouseX/10), 150, 360-(mouseX/10), 160);
- triangle(400-(mouseX/10), 160, 420-(mouseX/10), 150, 440-(mouseX/10), 160);
-
- fill(50, 170, 50);
-
- //contrasting lighter, tris and rects make checker effect, to better define background
-
- triangle(40-(mouseX/10), 160, 60-(mouseX/10), 150, 80-(mouseX/10), 160);
- rect(40-(mouseX/10), 160, 80-(mouseX/10), 400);
- triangle(120-(mouseX/10), 160, 140-(mouseX/10), 150, 160-(mouseX/10), 160);
- rect(120-(mouseX/10), 160, 160-(mouseX/10), 400);
- triangle(200-(mouseX/10), 160, 220-(mouseX/10), 150, 240-(mouseX/10), 160);
- rect(200-(mouseX/10), 160, 240-(mouseX/10), 400);
- triangle(280-(mouseX/10), 160, 300-(mouseX/10), 150, 320-(mouseX/10), 160);
- rect(280-(mouseX/10), 160, 320-(mouseX/10), 400);
- triangle(360-(mouseX/10), 160, 380-(mouseX/10), 150, 400-(mouseX/10), 160);
- rect(360-(mouseX/10), 160, 400-(mouseX/10), 400);
-
-
- /////////////////////////////////////////////////////////////////////////////////// hexes 2
-
- fill(0, 190, 0);
- rect(0, 200, 400, 240);
-
- triangle(30-(mouseX/5), 200, 60-(mouseX/5), 180, 90-(mouseX/5), 200);
- triangle(150-(mouseX/5), 200, 180-(mouseX/5), 180, 210-(mouseX/5), 200);
- triangle(270-(mouseX/5), 200, 300-(mouseX/5), 180, 330-(mouseX/5), 200);
- triangle(390-(mouseX/5), 200, 420-(mouseX/5), 180, 450-(mouseX/5), 200);
-
- fill(60, 190, 60);
-
- triangle(-30-(mouseX/5), 200, 0-(mouseX/5), 180, 30-(mouseX/5), 200);
- rect(-30-(mouseX/5), 200, 30-(mouseX/5), 400);
- triangle(90-(mouseX/5), 200, 120-(mouseX/5), 180, 150-(mouseX/5), 200);
- rect(90-(mouseX/5), 200, 150-(mouseX/5), 400);
- triangle(210-(mouseX/5), 200, 240-(mouseX/5), 180, 270-(mouseX/5), 200);
- rect(210-(mouseX/5), 200, 270-(mouseX/5), 400);
- triangle(330-(mouseX/5), 200, 360-(mouseX/5), 180, 390-(mouseX/5), 200);
- rect(330-(mouseX/5), 200, 390-(mouseX/5), 400);
- triangle(450-(mouseX/5), 200, 480-(mouseX/5), 180, 510-(mouseX/5), 200);
- rect(450-(mouseX/5), 200, 510-(mouseX/5), 400);
-
- ////////////////////////////////////////////////////////////////////////////////////// hexes 3
-
- fill(0, 210, 0);
- rect(0, 240, 400, 300);
-
- triangle(0-(mouseX/2.5), 240, 40-(mouseX/2.5), 220, 80-(mouseX/2.5), 240);
- triangle(160-(mouseX/2.5), 240, 200-(mouseX/2.5), 220, 240-(mouseX/2.5), 240);
- triangle(320-(mouseX/2.5), 240, 360-(mouseX/2.5), 220, 400-(mouseX/2.5), 240);
- triangle(480-(mouseX/2.5), 240, 520-(mouseX/2.5), 220, 560-(mouseX/2.5), 240);
-
- fill(90, 210, 90);
-
- triangle(80-(mouseX/2.5), 240, 120-(mouseX/2.5), 220, 160-(mouseX/2.5), 240);
- rect(80-(mouseX/2.5), 240, 160-(mouseX/2.5), 400);
- triangle(240-(mouseX/2.5), 240, 280-(mouseX/2.5), 220, 320-(mouseX/2.5), 240);
- rect(240-(mouseX/2.5), 240, 320-(mouseX/2.5), 400);
- triangle(400-(mouseX/2.5), 240, 440-(mouseX/2.5), 220, 480-(mouseX/2.5), 240);
- rect(400-(mouseX/2.5), 240, 480-(mouseX/2.5), 400);
-
- ///////////////////////////////////////////////////////////////////////////////////////// hexes 4
-
- fill(0, 230, 0);
- rect(0, 300, 400, 380);
-
- triangle(60-(mouseX/1.25), 300, 120-(mouseX/1.25), 280, 180-(mouseX/1.25), 300);
- triangle(300-(mouseX/1.25), 300, 360-(mouseX/1.25), 280, 420-(mouseX/1.25), 300);
- triangle(540-(mouseX/1.25), 300, 600-(mouseX/1.25), 280, 660-(mouseX/1.25), 300);
-
-
- fill(120, 230, 120);
-
- triangle(-60-(mouseX/1.25), 300, 0-(mouseX/1.25), 280, 60-(mouseX/1.25), 300);
- rect(-60-(mouseX/1.25), 300, 60-(mouseX/1.25), 400);
- triangle(180-(mouseX/1.25), 300, 240-(mouseX/1.25), 280, 300-(mouseX/1.25), 300);
- rect(180-(mouseX/1.25), 300, 300-(mouseX/1.25), 400);
- triangle(420-(mouseX/1.25), 300, 480-(mouseX/1.25), 280, 540-(mouseX/1.25), 300);
- rect(420-(mouseX/1.25), 300, 540-(mouseX/1.25), 400);
- triangle(660-(mouseX/1.25), 300, 720-(mouseX/1.25), 280, 780-(mouseX/1.25), 300);
- rect(660-(mouseX/1.25), 300, 780-(mouseX/1.25), 400);
-
- ////////////////////////////////////////////////////////////////////////////////////////// hexes 5
-
- fill(0, 250, 0);
- rect(0, 380, 400, 400);
-
- triangle(0-(mouseX/0.625), 380, 80-(mouseX/0.625), 340, 160-(mouseX/0.625), 380);
- triangle(320-(mouseX/0.625), 380, 400-(mouseX/0.625), 340, 480-(mouseX/0.625), 380);
- triangle(640-(mouseX/0.625), 380, 720-(mouseX/0.625), 340, 800-(mouseX/0.625), 380);
- triangle(960-(mouseX/0.625), 380, 1040-(mouseX/0.625), 340, 1120-(mouseX/0.625), 380);
-
- fill(150, 250, 150);
-
- triangle(160-(mouseX/0.625), 380, 240-(mouseX/0.625), 340, 320-(mouseX/0.625), 380);
- rect(160-(mouseX/0.625), 380, 320-(mouseX/0.625), 400);
- triangle(480-(mouseX/0.625), 380, 560-(mouseX/0.625), 340, 640-(mouseX/0.625), 380);
- rect(480-(mouseX/0.625), 380, 640-(mouseX/0.625), 400);
- triangle(800-(mouseX/0.625), 380, 880-(mouseX/0.625), 340, 960-(mouseX/0.625), 380);
- rect(800-(mouseX/0.625), 380, 960-(mouseX/0.625), 400);
-
-
- /////////////////////////////////////////////////////////////// middleground
-
- rectMode(CORNER);
- ellipseMode(CORNER);
- fill(128, 105, 81);
-
- ////////////////////////////////////////////////////////////// head
- rect(70+(mouseX/2), 220-abs((4*sin(mouseX/20))), 40, 40);
-
- //////////////////////////////////////////////////////////////// face
- rect(110+(mouseX/2), 230-abs((4*sin(mouseX/20))), 10, 20);
- triangle(110+(mouseX/2), 220-abs((4*sin(mouseX/20))), 110+(mouseX/2), 230-abs((4*sin(mouseX/20))), 120+(mouseX/2), 230-abs((4*sin(mouseX/20))));
- triangle(110+(mouseX/2), 260-abs((4*sin(mouseX/20))), 110+(mouseX/2), 250-abs((4*sin(mouseX/20))), 120+(mouseX/2), 250-abs((4*sin(mouseX/20))));
-
- /////////////////////////////////////////////////////////////// body
- rect(60+(mouseX/2), 260-abs((4*sin(mouseX/20))), 50, 40);
-
- //////////////////////////////////////////////////////////////// hood
- triangle(60+(mouseX/2), 200-abs((4*sin(mouseX/20))), 110+(mouseX/2), 220-abs((4*sin(mouseX/20))), 70+(mouseX/2), 240-abs((4*sin(mouseX/20))));
- triangle(70+(mouseX/2), 240-abs((4*sin(mouseX/20))), 60+(mouseX/2), 260-abs((4*sin(mouseX/20))), 70+(mouseX/2), 260-abs((4*sin(mouseX/20))));
-
- ////////////////////////////////////////////////////////////////// arm
- triangle(60+(mouseX/2), 260-abs((4*sin(mouseX/20))), 40+(mouseX/2), 280-abs((4*sin(mouseX/20))), 60+(mouseX/2), 280-abs((4*sin(mouseX/20))));
- rect(40+(mouseX/2), 280-abs((4*sin(mouseX/20))), 10, 10);
-
- ////////////////////////////////////////////////////////////////// pants and legs
-
- // legs
- stroke(79, 79, 91);
- strokeWeight(10);
- line(104+(mouseX/2), 298-abs((4*sin(mouseX/20))), 104+(mouseX/2)+(5*sin(mouseX/8)), 303-abs((4*sin(mouseX/20)))-(5*cos(mouseX/8)));
- line(104+(mouseX/2)+(5*sin(mouseX/8)), 303-abs((4*sin(mouseX/20)))-(5*cos(mouseX/8)), 104+(mouseX/2)+(7*sin(mouseX/8)), 310-abs((3*sin(mouseX/20)))-(4*cos(mouseX/8)));
- // two lines with jointed points and circular motion used to creat a 'crab-like' walk cycle.
- line(65+(mouseX/2), 298-abs((4*sin((mouseX+70)/20))), 65+(mouseX/2)+(5*sin((mouseX+70)/8)), 303-abs((4*sin((mouseX+70)/20)))-(5*cos((mouseX+70)/8)));
- line(65+(mouseX/2)+(5*sin((mouseX+70)/8)), 303-abs((4*sin((mouseX+70)/20)))-(5*cos((mouseX+70)/8)), 65+(mouseX/2)+(7*sin((mouseX+70)/8)), 310-abs((3*sin((mouseX+70)/20)))-(4*cos((mouseX+70)/8)));
- noStroke();
-
- // pants
- fill(79, 79, 91);
- rect(60+(mouseX/2), 290-abs((4*sin(mouseX/20))), 50, 10);
- fill(71, 60, 46);
- rect(60+(mouseX/2), 285-abs((4*sin(mouseX/20))), 50, 5);
-
- ////////////////////////////////////////////////////////////////////// eyes and mouth
-
- fill(255);
- ellipse(80+(mouseX/2), 220-abs((4*sin(mouseX/20))), 10, 10);
- ellipse(110+(mouseX/2), 225-abs((4*sin(mouseX/20))), 5, 5);
-
- fill(177, 122, 108);
- triangle(80+(mouseX/2), 240-abs((4*sin(mouseX/20))), 120+(mouseX/2), 240-abs((4*sin(mouseX/20))), 120+(mouseX/2), 250-abs((4*sin(mouseX/20))));
-
- fill(172, 116, 101, 400-mouseY/1.5);
- triangle(80+(mouseX/2), 240-abs((4*sin(mouseX/20))), 120+(mouseX/2), 240-abs((4*sin(mouseX/20))), 120+(mouseX/2), 245-abs((4*sin(mouseX/20))));
-
- ///////////////////////////////////////////////////////////////////////// arm and stabby bit
-
- fill(128, 105, 81);
- triangle(110+(mouseX/2), 250-abs((4*sin(mouseX/20))), 110+(mouseX/2), 270-abs((4*sin(mouseX/20))), 120+(mouseX/2), 270-abs((4*sin(mouseX/20))));
- rect(110+(mouseX/2), 270-abs((4*sin(mouseX/20))), 20, 10);
- fill(79, 79, 91);
- rect(130+(mouseX/2), 265-abs((4*sin(mouseX/20))), 5, 20);
- fill(102, 102, 120);
- triangle(135+(mouseX/2), 280-abs((4*sin(mouseX/20))), 135+(mouseX/2), 270-abs((4*sin(mouseX/20))), 165+(mouseX/2), 275-abs((4*sin(mouseX/20))));
-
- ////////////////////////////////////////////////////////////////////////// foreground
-
- // night color overlay
- fill(10, 0, 50, (mouseY/2.5));
- rect(0, 0, 400, 400);
- }
-
- ////////////////////////////////////////////////////////////////////////////// laugh
- void mousePressed() {
- println("Nyeh heh heh!");
- }
-
- ////////////////////////////////////////////////////////////////////////////// ???
- void keyPressed() {
- }