/* Title: Basket Ball By: Raj Vijayakumar (Student#: 991 487 624) Date: October 4, 2018 Intro to Media Computation Instructor: Nicolas Hesler Description: Use the left and right arrow keys to control the basket and collect balls. Be careful about the circles in the background. They serve as an optical illusion to thwart you. NOTE: You have to catch the balls perfectly between the basket or it will not register it. Have fun! */ //////Declare all global variables////// //variables for the basket float basketSpeed = 5; float basketPositionX = 60; float basketPositionY = 375; //variables to check which direction the basket needs to be moved boolean basketMovesLeft; boolean basketMovesRight; //variables for the 3 balls that spawn above beyond the sketch float dropSpeed = 2; //ball #1 float ballOnePositionX = random(40,360); float ballOnePositionY = -20; //ball #2 float ballTwoPositionX = random(40,360); float ballTwoPositionY = -200; //ball #3 float ballThreePositionX = random(40,360); float ballThreePositionY = -400; void setup(){ //Setup canvas size(400,400); //hide cursor noCursor(); } void draw(){ //Set background background(245,238,203); //define how ellipses should be drawn ellipseMode(RADIUS); //return under defined functions graphic(); basketMovement(); assets(); dropBall(); } //Contains all the assets that the user sees on screen void assets(){ //Adresses the balls that fall noStroke(); fill(134,43,43); ellipse(ballOnePositionX,ballOnePositionY,20,20); ellipse(ballTwoPositionX,ballTwoPositionY,20,20); ellipse(ballThreePositionX,ballThreePositionY,20,20); //Adresses the basket fill(216,210,210); stroke(64,60,60); strokeWeight(5); quad(basketPositionX - 30,basketPositionY - 5,basketPositionX + 30,basketPositionY - 5,basketPositionX + 20,basketPositionY + 25,basketPositionX - 20,basketPositionY + 25); } //Allows the basket to move left and right on the screen but never beyond it void basketMovement(){ //move basket right if(basketMovesRight == true){ basketPositionX = basketPositionX + basketSpeed; } //move basket left if (basketMovesLeft == true){ basketPositionX = basketPositionX - basketSpeed; } //stops basket from exiting the screen on the left if(basketPositionX <= 30){ basketPositionX = 30; } //stops basket from exiting the screen on the right if(basketPositionX >= 370){ basketPositionX = width-30; } } //Checks to see if keys are pressed void keyPressed(){ //checks if arrow keys are pressed if (key == CODED) { if (keyCode == LEFT) { //if left key is pressed then moving right gets set to false basketMovesLeft = true; basketMovesRight = false; } else if (keyCode == RIGHT) { //if right key is pressed then moving left gets set to false basketMovesRight = true; basketMovesLeft = false; } } } //Checks to see if key is released void keyReleased() { if (key == CODED) { if (keyCode == LEFT) { //if the left key is released then then the basket moving left becomes false basketMovesLeft = false; } else if (keyCode == RIGHT) { ///if the right key is released then then the basket moving right becomes false basketMovesRight = false; } } } //Collision detection system that checks what the balls come into contact with/ generates random coordinates from which the balls drop void dropBall(){ //Add a speed at which the ball will fall to their position ballTwoPositionY += dropSpeed; ballThreePositionY += dropSpeed; //collision for ball #1 if(ballOnePositionY >= basketPositionY - 25 && ballOnePositionX - 20 >= basketPositionX - 30 && ballOnePositionX + 20 <= basketPositionX + 30 || ballOnePositionY > 400) { //determine a random position the ball will start at on the horizontal axis ballOnePositionX = random(40,360); //set the ball drop above the screen to give it a falling effect ballOnePositionY = -200; } //collision for ball #2 if(ballTwoPositionY >= basketPositionY - 25 && ballTwoPositionX - 20 >= basketPositionX - 30 && ballTwoPositionX + 20 <= basketPositionX + 30 || ballTwoPositionY > 400) { //determine a random position the ball will start at on the horizontal axis ballTwoPositionX = random(40,360); //set the ball drop above the screen to give it a falling effect ballTwoPositionY = -500; } //collision for ball #3 if(ballThreePositionY >= basketPositionY - 25 && ballThreePositionX - 20 >= basketPositionX - 30 && ballThreePositionX + 20 <= basketPositionX + 30 || ballThreePositionY > 400) { //determine a random position the ball will start at on the horizontal axis ballThreePositionX = random(40,360); //set the ball drop above the screen to give it a falling effect ballThreePositionY = -800; } } //Background circles drawn using while loop void graphic(){ //local variable int radius = 20; while(radius <= width){ strokeWeight(5); stroke(200); fill(255 + radius); ellipse(200,200,radius,radius); radius = radius += 20; } }