diff --git a/src/break_out/model/Ball.java b/src/break_out/model/Ball.java index 94d3d46..a60e79c 100644 --- a/src/break_out/model/Ball.java +++ b/src/break_out/model/Ball.java @@ -142,8 +142,27 @@ public class Ball implements IBall { * @param paddle hitbox mechanism of paddle * @todo implementation */ - public void reflectOnPaddle(Paddle paddle) { - return; - } + public void reflectOnPaddle(Paddle p) { + // get the Position of the middle of the paddle + Position newOffset = new Position( + p.getPosition().getX() + p.getWidth() / 2.0,//the middle of the x coordinates + p.getPosition().getY() + p.getHeight() / 2.0);//the middle of the y coordinates + //deciding if the paddle is at the top or bottom to adjust if its +or- y direction + if (p.getPosition().getY() == 0) { + newOffset.setY(newOffset.getY() - Constants.REFLECTION_OFFSET);// paddle at the top with negative direction + } else { + newOffset.setY(newOffset.getY() + Constants.REFLECTION_OFFSET); // the paddle at the bottom with positive direction + } + + // calculating the center of the ball by dividing by zero + Position ballCenter = new Position( + position.getX() + Constants.BALL_DIAMETER/2.0, //the middle of the x coordinates + position.getY() + Constants.BALL_DIAMETER/2.0); //the middle of the y coordinates + + // The direction is set to the middle of the offset point and the ball + direction = new Vector2D(newOffset, ballCenter); + // rescaling to adjust the balls speed + direction.rescale(); + } }