/********************************* By Qianlin Xu October 2 2017 Use keyboard to move around and hook up fish by kliking the left mouse *********************************/ //declaring varibales float boatX; float boatY; float boatSpeed; float fishManX; float fishManY; float fishManSpeed; float hookY; float hookSpeed; float waterY; float water1Y; float fish1PosX; float fish1PosY; float fish2PosX; float fish2PosY; float fish3PosX; float fish3PosY; float fish4PosX; float fish4PosY; float fish5PosX; float fish5PosY; float water1Speed, water2Speed,water3Speed,water4Speed,water5Speed,water6Speed,water7Speed; float fish1Speed,fish2Speed,fish3Speed,fish4Speed; //set up void setup(){ //creates the canvas size size(400,400); //initialize veribales waterY=160; boatX=200; boatY=145; fishManX=200; fishManY=100; hookY=200; fish1PosX=420; fish1PosY=random(210,380); fish1Speed=random(0.5,5); fish2PosX=-20; fish2PosY=random(210,380); fish2Speed=random(0.5,5); fish3PosX=420; fish3PosY=random(210,380); fish3Speed=random(0.5,5); fish4PosX=-20; fish4PosY=random(210,380); fish4Speed=random(0.5,5); } //functions void draw(){ //sets the background colour background(200,255,253); //function calls drawBackground(); fishMan(); boat(); waterOne(); waterTwo(); waterThree(); waterFour(); waterFive(); waterSix(); waterSeven(); fishOne(); fishTwo(); fishThree(); fishFour(); fishMan(); hook(); } //backGround void drawBackground(){ //draw mountain strokeWeight(3); stroke(44,218,93); fill(14,173,59); arc(60,200,120,240,PI,PI*2); arc(200,200,200,320,PI,PI*2); arc(400,200,100,240,PI,PI*2); arc(320,200,120,200,PI,PI*2); //draw the sun stroke(244,110,29); fill(215,70,13); ellipse(30,40,40,40); } //boat void boat(){ //draw boat stroke(130,75,21); fill(88,47,7); arc(boatX,boatY,80,80,0,PI); strokeWeight(1); line(boatX+40,boatY+5,boatX-40,boatY+5); line(boatX+38,boatY+10,boatX-38,boatY+10); line(boatX+36,boatY+15,boatX-36,boatY+15); line(boatX+34,boatY+20,boatX-34,boatY+20); boatY=145+(2*sin(frameCount/15f)); //if press left arrow, move ship left, if press right arrow, move ship right if(keyPressed) { boatSpeed=1.5; if(keyCode==RIGHT) { boatX=boatX+boatSpeed; }else if (keyCode==LEFT) { boatX=boatX-boatSpeed; } //keep boat on screen boatX=constrain(boatX,40,360); } } //water void waterOne(){ //draw the first layer of water strokeWeight(3); stroke(115,220,250); fill(95,200,230); triangle(0,water1Y,0,water1Y+20,20,water1Y+20); triangle(20,water1Y+20,40,water1Y,60,water1Y+20); triangle(60,water1Y+20,80,water1Y,100,water1Y+20); triangle(100,water1Y+20,120,water1Y,140,water1Y+20); triangle(140,water1Y+20,160,water1Y,180,water1Y+20); triangle(180,water1Y+20,200,water1Y,220,water1Y+20); triangle(220,water1Y+20,240,water1Y,260,water1Y+20); triangle(260,water1Y+20,280,water1Y,300,water1Y+20); triangle(300,water1Y+20,320,water1Y,340,water1Y+20); triangle(340,water1Y+20,360,water1Y,380,water1Y+20); triangle(400,water1Y,400,water1Y+20,380,water1Y+20); noStroke(); rectMode(CENTER); rect(200,water1Y+30,400,22); water1Y = 160+(3*sin(frameCount/25f)); } void waterTwo(){ strokeWeight(3); stroke(116,222,248); triangle(0,waterY+20,20,waterY,40,waterY+20); triangle(40,waterY+20,60,waterY,80,waterY+20); triangle(80,waterY+20,100,waterY,120,waterY+20); triangle(120,waterY+20,140,waterY,160,waterY+20); triangle(160,waterY+20,180,waterY,200,waterY+20); triangle(200,waterY+20,220,waterY,240,waterY+20); triangle(240,waterY+20,260,waterY,280,waterY+20); triangle(280,waterY+20,300,waterY,320,waterY+20); triangle(320,waterY+20,340,waterY,360,waterY+20); triangle(360,waterY+20,380,waterY,400,waterY+20); noStroke(); rect(200,waterY+30,400,24); waterY = 160+(5*sin(frameCount/20f)); } void waterThree(){ stroke(105,210,240); fill(85,190,220); rect(200,water1Y+65,405,50); } void waterFour(){ stroke(95,200,230); fill(75,180,210); rect(200,waterY+105,405,50); } void waterFive(){ stroke(85,190,220); fill(65,170,190); rect(200,water1Y+145,405,50); } void waterSix(){ stroke(75,180,210); fill(55,160,190); rect(200,waterY+185,405,50); } void waterSeven(){ stroke(65,170,200); fill(45,150,180); rect(200,water1Y+225,405,50); } //draw fish void fishOne(){ fill(239,141,105); stroke(0); strokeWeight(1); arc(fish1PosX,fish1PosY,40,40,HALF_PI,HALF_PI+PI); quad(fish1PosX+10,fish1PosY-20,fish1PosX+20,fish1PosY-30,fish1PosX+40,fish1PosY-20,fish1PosX+42,fish1PosY-17); arc(fish1PosX+20,fish1PosY+18,20,22,HALF_PI,PI); arc(fish1PosX,fish1PosY,140,40,HALF_PI+PI,HALF_PI+TWO_PI); triangle(fish1PosX+10,fish1PosY,fish1PosX+30,fish1PosY+10,fish1PosX+30,fish1PosY-10); triangle(fish1PosX+80,fish1PosY,fish1PosX+100,fish1PosY-10,fish1PosX+100,fish1PosY+10); noStroke(); triangle(fish1PosX+60,fish1PosY+11,fish1PosX+60,fish1PosY-11,fish1PosX+80,fish1PosY); strokeWeight(1); stroke(0); fill(255); ellipse(fish1PosX-7,fish1PosY-5,6,6); line(fish1PosX+60,fish1PosY+10,fish1PosX+80,fish1PosY); line(fish1PosX+60,fish1PosY-10,fish1PosX+80,fish1PosY); //make fish move if (fish1PosX>-100){ fish1PosX=fish1PosX-fish1Speed; }else{ fish1PosX=random(420,500); fish1PosY=random(210,380); fish1Speed=random(0.5,5);//reset } } void fishTwo(){ fill(55,52,124); stroke(0); strokeWeight(1); arc(fish2PosX,fish2PosY,40,30,HALF_PI+PI,HALF_PI+TWO_PI); quad(fish2PosX-5,fish2PosY-15,fish2PosX-10,fish2PosY-25,fish2PosX-30,fish2PosY-15,fish2PosX-33,fish2PosY-7); arc(fish2PosX-10,fish2PosY+14,20,22,0,HALF_PI); arc(fish2PosX,fish2PosY,80,30,HALF_PI,HALF_PI+PI); triangle(fish2PosX-8,fish2PosY,fish2PosX-20,fish2PosY+5,fish2PosX-20,fish2PosY-5); triangle(fish2PosX-50,fish2PosY,fish2PosX-60,fish2PosY-10,fish2PosX-60,fish2PosY+10); noStroke(); triangle(fish2PosX-30,fish2PosY+10,fish2PosX-30,fish2PosY-10,fish2PosX-50,fish2PosY); strokeWeight(1); stroke(0); fill(255); ellipse(fish2PosX+7,fish2PosY-5,6,6); line(fish2PosX-30,fish2PosY+10,fish2PosX-50,fish2PosY); line(fish2PosX-30,fish2PosY-10,fish2PosX-50,fish2PosY); //make fish move if (fish2PosX<500){ fish2PosX=fish2PosX+fish2Speed; }else{ fish2PosX=-20; fish2PosY=random(210,380); fish2Speed=random(0.5,3);//reset } } void fishThree(){ fill(50,174,88); stroke(0); strokeWeight(1); arc(fish3PosX,fish3PosY,20,20,HALF_PI,HALF_PI+PI); quad(fish3PosX+5,fish3PosY-10,fish3PosX+10,fish3PosY-15,fish3PosX+20,fish3PosY-10,fish3PosX+21,fish3PosY-8); arc(fish3PosX+10,fish3PosY+9,10,11,HALF_PI,PI); arc(fish3PosX,fish3PosY,60,20,HALF_PI+PI,HALF_PI+TWO_PI); triangle(fish3PosX+5,fish3PosY,fish3PosX+15,fish3PosY+5,fish3PosX+15,fish3PosY-5); triangle(fish3PosX+40,fish3PosY,fish3PosX+50,fish3PosY-5,fish3PosX+50,fish3PosY+5); noStroke(); triangle(fish3PosX+26,fish3PosY+5,fish3PosX+26,fish3PosY-5,fish3PosX+40,fish3PosY); strokeWeight(1); stroke(0); fill(255); ellipse(fish3PosX-3,fish3PosY-3,3,3); line(fish3PosX+26,fish3PosY+5,fish3PosX+40,fish3PosY); line(fish3PosX+26,fish3PosY-5,fish3PosX+40,fish3PosY); //make fish move if (fish3PosX>-100){ fish3PosX=fish3PosX-fish3Speed; }else{ fish3PosX=random(420,500); fish3PosY=random(210,380); fish3Speed=random(0.5,5);//reset } } void fishFour(){ fill(205,160,53); stroke(0); strokeWeight(1); arc(fish4PosX,fish4PosY,20,20,HALF_PI+PI,HALF_PI+TWO_PI); quad(fish4PosX-5,fish4PosY-10,fish4PosX-10,fish4PosY-15,fish4PosX-20,fish4PosY-10,fish4PosX-21,fish4PosY-8); arc(fish4PosX-10,fish4PosY+9,10,11,0,HALF_PI); arc(fish4PosX,fish4PosY,60,20,HALF_PI,HALF_PI+PI); triangle(fish4PosX-5,fish4PosY,fish4PosX-15,fish4PosY+5,fish4PosX-15,fish4PosY-5); triangle(fish4PosX-40,fish4PosY,fish4PosX-50,fish4PosY-5,fish4PosX-50,fish4PosY+5); noStroke(); triangle(fish4PosX-26,fish4PosY+5,fish4PosX-26,fish4PosY-5,fish4PosX-40,fish4PosY); strokeWeight(1); stroke(0); fill(255); ellipse(fish4PosX+3,fish4PosY-3,3,3); line(fish4PosX-26,fish4PosY+5,fish4PosX-40,fish4PosY); line(fish4PosX-26,fish4PosY-5,fish4PosX-40,fish4PosY); //make fish move if (fish4PosX<450){ fish4PosX=fish4PosX+fish4Speed; }else{ fish4PosX=-10; fish4PosY=random(210,380); fish4Speed=random(0.5,5);//reset } } void fishMan() { //draw fishMan stroke(248,211,179); fill(228,191,159); arc(fishManX,fishManY+10,10,20,0,PI); stroke(156,89,30); strokeWeight(2); fill(115,63,17); triangle(fishManX,fishManY,fishManX-10,fishManY+10,fishManX+10,fishManY+10); stroke(43,32,126); fill(23,12,106); quad(fishManX-2,fishManY+20,fishManX+2,fishManY+20,fishManX+10,fishManY+40,fishManX-10,fishManY+40); fishManY=105+(2*sin(frameCount/15f)); //move fishMan if(keyPressed) { fishManSpeed=0.8; if(keyCode==RIGHT) { fishManX=fishManX+fishManSpeed; }else if (keyCode==LEFT) { fishManX=fishManX-fishManSpeed; } //keep boat on screen fishManX=constrain(fishManX,10,390); } } //draw fish hook void hook() { noFill(); stroke(0); strokeWeight(3); arc(fishManX+70,fishManY+40,120,160,PI,PI+HALF_PI); strokeWeight(1); line(fishManX+70,fishManY-40,fishManX+70,hookY); fill(255,204,0); arc(fishManX+66,hookY,8,8,0,PI*5/6); //move hook up and down if(keyPressed) { hookSpeed=1.5; if(keyCode==UP) { hookY=hookY-hookSpeed; }else if (keyCode==DOWN) { hookY=hookY+hookSpeed; } } }