delete paddle
parent
9d154bbbe6
commit
9f30f43361
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_X" default="true" project-jdk-name="openjdk-18" project-jdk-type="JavaSDK">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_18" default="true" project-jdk-name="openjdk-18" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
</project>
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,82 +0,0 @@
|
|||
/* Eric Li, ICS4U, Completed 5/29/2022
|
||||
|
||||
Paddle class defines behaviours for the left and right player-controlled paddles */
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.KeyEvent;
|
||||
|
||||
public class Paddle extends GenericObject {
|
||||
public final int SPEED = 5;
|
||||
public static final int PADDLE_WIDTH = 8;
|
||||
public static final int PADDLE_HEIGHT = 80;
|
||||
public int upKey, downKey;
|
||||
public Paddle(int x, int y, int upKey, int downKey) {
|
||||
super(x, y, PADDLE_WIDTH, PADDLE_HEIGHT);
|
||||
this.upKey = upKey;
|
||||
this.downKey = downKey;
|
||||
}
|
||||
|
||||
// this is private because it's only intended to be called from checkCollision
|
||||
// this checks whether the ball has collided with the paddle in either the 'L' or the 'R' direction, and returns a boolean
|
||||
private boolean hasCollided(Ball ball, char direction) {
|
||||
// while this.x and this.y were not needed, they were added to prevent confusion with ball.x and ball.y
|
||||
if ((Math.abs(ball.x - this.x - this.xVelocity) <= Paddle.PADDLE_WIDTH && direction == 'L' && Math.signum(ball.xVelocity) == -1.0) ||
|
||||
(Math.abs(ball.x - this.x - this.xVelocity) <= Ball.BALL_DIAMETER && direction == 'R' && Math.signum(ball.xVelocity) == 1.0)) {
|
||||
return (this.y - ball.y <= Ball.BALL_DIAMETER && this.y - ball.y >= 0) ||
|
||||
(ball.y - this.y <= Paddle.PADDLE_HEIGHT && ball.y - this.y >= 0);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// this uses hasCollided() to check if a collision has happened; if it has, the xDirection is reversed and the speed is changed
|
||||
// returns a boolean which is used for sanity checking in GamePanel.checkCollision()
|
||||
public boolean checkCollision(Ball ball, char direction) {
|
||||
if (hasCollided(ball, direction)) {
|
||||
// reverse x direction and add a portion of paddle speed
|
||||
// also adds random spray
|
||||
ball.yVelocity += this.yVelocity / 4 + (int)(Math.random() * 3 - 1);
|
||||
ball.xVelocity = -(ball.xVelocity) + (int)(Math.random() * 3 - 1);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// moves paddle when key is pressed
|
||||
public void keyPressed(KeyEvent e) {
|
||||
if(e.getKeyCode() == upKey){
|
||||
setYDirection(SPEED*-1);
|
||||
move();
|
||||
}
|
||||
if(e.getKeyCode() == downKey){
|
||||
setYDirection(SPEED);
|
||||
move();
|
||||
}
|
||||
}
|
||||
|
||||
// stops moving paddle when key is released
|
||||
public void keyReleased(KeyEvent e) {
|
||||
if(e.getKeyCode() == upKey){
|
||||
setYDirection(0);
|
||||
move();
|
||||
}
|
||||
if(e.getKeyCode() == downKey){
|
||||
setYDirection(0);
|
||||
move();
|
||||
}
|
||||
}
|
||||
|
||||
// calls parent then does sanity checking to ensure that the paddle does not leave the screen
|
||||
public void move() {
|
||||
super.move();
|
||||
// collisions logic for paddles to prevent them from going into the borders
|
||||
if (y + PADDLE_HEIGHT + 5 > GamePanel.GAME_HEIGHT) {
|
||||
y = GamePanel.GAME_HEIGHT - PADDLE_HEIGHT - 5;
|
||||
} else if (y < 5) {
|
||||
y = 5;
|
||||
}
|
||||
}
|
||||
public void draw(Graphics g) {
|
||||
g.setColor(Color.WHITE);
|
||||
g.fillRect(x, y, PADDLE_WIDTH, PADDLE_HEIGHT);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue