-
Notifications
You must be signed in to change notification settings - Fork 0
/
Ball.java
74 lines (52 loc) · 1.11 KB
/
Ball.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package PongGame;
import java.awt.Color;
import java.awt.Graphics;
public class Ball {
public static final int SIZE = 16;
private int x, y;
private int xVel, yVel;
private int speed = 5;
public Ball() {
reset();
}
private void reset() {
x = Game.WIDTH/2 - SIZE/2;
y = Game.HEIGHT/2 - SIZE/2;
xVel = Game.sign(Math.random()*2 -1);
yVel = Game.sign(Math.random()*2 -1);
}
public void changeXDir() {
xVel *= -1;
}
public void changeYDir() {
yVel *= -1;
}
public void draw(Graphics g) {
g.setColor(Color.white);
g.fillOval(x, y, SIZE, SIZE);
}
public void update(Paddle paddle1, Paddle paddle2) {
// ball movement
x += xVel * speed;
y += yVel * speed;
// for collisions with upper and lower walls
if(y >= Game.HEIGHT - SIZE || y<= 0) {
changeYDir();
}
// for paddle miss
if(x >= Game.WIDTH - SIZE) {
paddle1.addPoint();
reset();
}
if(x <= 0) {
paddle2.addPoint();
reset();
}
}
public int getX() {
return x;
}
public int getY() {
return y;
}
}