float x; // ball's x position float y; // ball's y position float gravity; // acceleration due to gravity int ballRadius; int paddleWidth; float xv, yv; // x and y velocities void setup(){ size(800,600); x = width*0.5; y = height*0.5; ballRadius = 50; // nice large ball paddleWidth = 100; // nice wide paddle xv = 0.2; yv = -4.0; // start with the ball moving up gravity = 0.1; // adjust gravity here } void draw(){ background(200); ellipse(x,y,ballRadius,ballRadius); rect(mouseX-paddleWidth*0.5,height-20,paddleWidth,10); x = x + xv; y = y + yv; /* if(y > height-ballRadius*0.5 || y < 0){ yv = yv * -1; y = y + yv; } */ // corrected paddle bounce if(abs(x-mouseX) < paddleWidth*0.5 && abs(y-(height-20)) < ballRadius*0.5){ yv = yv * -1; y = y + yv; } // bounce off sides if(x > width || x < 0){ xv = xv * -1; x = x + xv; } yv = yv + gravity; }