float ballPositionX, ballPositionY; float monsteronePositionX, monsteronePositionY; float monstertwoPositionX, monstertwoPositionY; float monsterthreePositionX, monsterthreePositionY; float monsterfourPositionX, monsterfourPositionY; float energyonePositionX, energyonePositionY; float energytwoPositionX, energytwoPositionY; float energythreePositionX, energythreePositionY; float energyfourPositionX, energyfourPositionY; float energyfivePositionX, energyfivePositionY; float ballYSpeed, ballXSpeed; float gravity=.01; boolean isBallTouchCoinOne=false; boolean isBallTouchCoinTwo=false; boolean isBallTouchCoinThree=false; boolean isBallTouchCoinFour=false; boolean isBallTouchCoinFive=false; boolean isBallTouchMonsterOne=false; boolean isBallTouchMonsterTwo=false; boolean isBallTouchMonsterThree=false; boolean isBallTouchMonsterFour=false; float score=0; float scoreCount=1/15; void setup(){ size(400,400); frameRate(60); smooth(); rectMode(CENTER); ellipseMode(CENTER); initializeBall(); } void initializeBall(){ ballPositionX=width/2; ballPositionY=300; monsteronePositionX=width/2; monsteronePositionY=170; monstertwoPositionX=60; monstertwoPositionY=80; monsterthreePositionX=340; monsterthreePositionY=265; monsterfourPositionX=60; monsterfourPositionY=305; energyonePositionX=100; energyonePositionY=270; energytwoPositionX=300; energytwoPositionY=230; energythreePositionX=160; energythreePositionY=150; energyfourPositionX=280; energyfourPositionY=50; energyfivePositionX=100; energyfivePositionY=60; ballXSpeed=0; ballYSpeed=0; } int y=0; int rectY = -20; void draw(){ //shining background noStroke(); fill(random(150,255),random(150,255),random(150,255)); rect(width/2,y,width,20); y+=20; rectY +=20; if (rectY ==800){ rectY=0; } if (y ==400){ y=0; } noStroke(); fill(147,127,80); rect(width/2, rectY-400, width,30); //user-defined functions constrainBallToCanvasBounds(); ballPosition(); constrainBallToIslandBounds(); ballTouch(); //draw functions drawIsland(); drawBall(); drawMonster(); drawEnergy(); drawLand(); } void constrainBallToCanvasBounds(){ //set the boundaries of the canvas if(ballPositionY+10>height){ ballYSpeed=0; ballXSpeed=0; ballPositionY=height-10; } else if(ballPositionY<0){ ballYSpeed=0; ballXSpeed=0; } if(ballPositionX>width){ ballXSpeed=0; ballPositionX=width; } else if(ballPositionX<0){ ballXSpeed=0; ballPositionX=0; } } void constrainBallToIslandBounds(){ //set the boundaries of the Islands if(ballPositionY-15<360 && ballPositionY+15>320 && ballPositionX-15<160 ){ ballYSpeed=0; ballXSpeed=0; if(ballPositionY-15<360 && ballPositionX-15<160){ gravity=.01; } else{ gravity=0; } ballYSpeed+=gravity; } else if(ballPositionY-15<320 && ballPositionY+15>280 && ballPositionX-15<360 && ballPositionX+15>260){ ballYSpeed=0; ballXSpeed=0; //println("hit"); if(ballPositionY-15<320 && ballPositionX-15<360 && ballPositionX+15>260){ // println("hit bottom"); gravity=.01; } else{ gravity=0; } ballYSpeed+=gravity; } else if(ballPositionY-15<220 && ballPositionY+15>180 && ballPositionX-15<260 && ballPositionX+15>140){ ballYSpeed=0; ballXSpeed=0; if(ballPositionY-15<220 && ballPositionX-15<260 && ballPositionX+15>140){ gravity=.01; } else{ gravity=0; } ballYSpeed+=gravity; } else if(ballPositionY-15<130 && ballPositionY+15>90 && ballPositionX-15<120 && ballPositionX+15>20){ ballYSpeed=0; ballXSpeed=0; if(ballPositionY-15<130 && ballPositionX-15<120 && ballPositionX+15>20){ gravity=.01; } else{ gravity=0; } ballYSpeed+=gravity; } else if(ballPositionY-15<100 && ballPositionY+15>80 && ballPositionX-15<320 && ballPositionX+15>220){ ballYSpeed=0; ballXSpeed=0; if(ballPositionY-15<100 && ballPositionX-15<320 && ballPositionX+15>220){ gravity=.01; } else{ gravity=0; } ballYSpeed+=gravity; } else{ gravity = 0.01; ballYSpeed+=gravity; } } void ballTouch(){ //set the situation when ball touches coins or monsters if(ballPositionX>92.5 && ballPositionX<107.50 && ballPositionY>262.5 && ballPositionY<277.5 ){ isBallTouchCoinOne=true; score++; } else if(ballPositionX>292.5 && ballPositionX<307.5 && ballPositionY>223.5 && ballPositionY<237.5){ isBallTouchCoinTwo=true; score++; } else if(ballPositionX>152.5 && ballPositionX<167.5 && ballPositionY>142.5 && ballPositionY<157.5){ isBallTouchCoinThree=true; score++; } else if(ballPositionX>272.5 && ballPositionX<287.5 && ballPositionY>42.5 && ballPositionY<57.5){ isBallTouchCoinFour=true; score++; } else if(ballPositionX>92.5 && ballPositionX<107.5 && ballPositionY>52.5 && ballPositionY<67.5){ isBallTouchCoinFive=true; score++; } else if(ballPositionX>190 && ballPositionX<210 && ballPositionY>160 && ballPositionY<180){ isBallTouchMonsterOne=true; score--; } else if(ballPositionX>50 && ballPositionX<70 && ballPositionY>70 && ballPositionY<90){ isBallTouchMonsterTwo=true; score--; } else if(ballPositionX>325 && ballPositionX<355 && ballPositionY>250 && ballPositionY<280){ isBallTouchMonsterThree=true; score--; } else if(ballPositionX>45 && ballPositionX<75 && ballPositionY>290 && ballPositionY<320){ isBallTouchMonsterFour=true; score--; } println(score); } void ballPosition(){ //set the controls for ball movement if(mousePressed){ ballYSpeed+=-.08; if(mouseX>ballPositionX){ ballXSpeed+=.02; } else if(mouseX<ballPositionX){ ballXSpeed+=-.02; } } ballPositionX+=ballXSpeed; ballPositionY+=ballYSpeed; ballPositionY=constrain(ballPositionY,0,380); } //draw the canvas void drawBall(){ noStroke(); fill(245,163,10); ellipse(ballPositionX,ballPositionY,30,30); } void drawIsland(){ fill(179,136,185); rect(80,340,160,40); rect(310,300,100,40); rect(200,200,120,40); rect(70,110,100,40); rect(270,90,100,20); } void drawMonster(){ fill(207,114,129); if(isBallTouchMonsterOne == false){ rect(monsteronePositionX,monsteronePositionY,20,20); } if(isBallTouchMonsterTwo == false){ rect(monstertwoPositionX,monstertwoPositionY,20,20); } if(isBallTouchMonsterThree == false){ rect(monsterthreePositionX,monsterthreePositionY,30,30); } if(isBallTouchMonsterFour == false){ rect(monsterfourPositionX,monsterfourPositionY,30,30); } } void drawEnergy(){ fill(random(100,255)); if(isBallTouchCoinOne == false){ ellipse(energyonePositionX,energyonePositionY,15,15); } if(isBallTouchCoinTwo == false){ ellipse(energytwoPositionX,energytwoPositionY,15,15); } if(isBallTouchCoinThree == false){ ellipse(energythreePositionX,energythreePositionY,15,15); } if(isBallTouchCoinFour == false){ ellipse(energyfourPositionX,energyfourPositionY,15,15); } if(isBallTouchCoinFive == false){ ellipse(energyfivePositionX,energyfivePositionY,15,15); } } void drawLand(){ fill(179,136,185); rect(200,400,400,16); }