-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPongGame.java
More file actions
113 lines (76 loc) · 2.49 KB
/
PongGame.java
File metadata and controls
113 lines (76 loc) · 2.49 KB
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
package pong;
import javax.swing.JPanel;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
public class PongGame extends JPanel implements MouseMotionListener {
static final int WINDOW_WIDTH = 640, WINDOW_HEIGHT = 480;
private Ball gameBall;
private Paddle userPaddle, pcPaddle ;
private int userMouseY, userScore, pcScore, bounceCount ;
public PongGame(){
gameBall = new Ball(320, 220, 3, 3, 3, 10, Color.yellow);
userPaddle = new Paddle(10, 200, 75, 3, Color.BLUE) ;
pcPaddle = new Paddle(610, 200, 75, 3, Color.RED) ;
userMouseY = 0;
bounceCount = 0;
addMouseMotionListener(this) ;
}
public void paintComponent(Graphics g){
// paint game
g.setColor(Color.black);
g.fillRect(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT);
// paint ball
gameBall.paint(g);
// paint paddle
userPaddle.paint(g);
pcPaddle.paint(g);
//score
g.setColor(Color.WHITE);
g.drawString("SCORE - User [" + userScore + "] PC [" + pcScore + "]", 250, 20 );
}
public void gameLogic(){
gameBall.moveBall();
gameBall.bounceOffEdges(0, WINDOW_HEIGHT);
// user paddle moves towards y position of mouse
userPaddle.moveTowards(userMouseY);
// pc paddle
pcPaddle.moveTowards(gameBall.getY());
//check for paddle collison
if (userPaddle.checkCollision(gameBall)) {
gameBall.reverseX();
bounceCount ++;
}
// check pc paddle collison
if (pcPaddle.checkCollision(gameBall)) {
gameBall.reverseX();
bounceCount ++;
}
if (bounceCount == 3){
gameBall.increaseSpeed();
}
//game win / lose
if (gameBall.getX() < 0 ){
pcScore ++;
reset();
}
else if (gameBall.getX() > WINDOW_WIDTH){
userScore ++;
reset();
}
}
public void reset(){
// creates new ball and resets everything else
gameBall = new Ball(320, 220, 3, 3, 3, 10, Color.yellow);
userPaddle = new Paddle(10, 200, 75, 3, Color.BLUE) ;
pcPaddle = new Paddle(610, 200, 75, 3, Color.RED) ;
bounceCount = 0;
}
@Override
public void mouseDragged(MouseEvent e) {
}
@Override
public void mouseMoved(MouseEvent e) {
userMouseY = e.getY();
}
}