-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPlayer.java
More file actions
129 lines (98 loc) · 3.39 KB
/
Player.java
File metadata and controls
129 lines (98 loc) · 3.39 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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
import java.awt.*;
/**
Esta classe representa os jogadores (players) do jogo. A classe princial do jogo (Pong)
instancia dois objetos deste tipo quando a execução é iniciada.
*/
public class Player {
/**
Construtor da classe Player.
@param cx coordenada x da posição inicial do player (centro do retangulo que o representa).
@param cy coordenada y da posição inicial do player (centro do retangulo que o representa).
@param width largura do retangulo que representa o player.
@param height altura do retangulo que representa o player.
@param color cor do player.
@param id uma string que identifica o player
@param v_limit um array de double contendo dois valores (em pixels) que determinam os limites verticais da área útil da quadra.
@param speed velocidade do movimento vertical do player (em pixels por millisegundo).
*/
//variáveis globais para acesso
private double cx, cy, width, height, speed;
private Color color;
private String id;
private double [] v_limit;
public Player(double cx, double cy, double width, double height, Color color, String id, double [] v_limit, double speed){
super();
this.cx = cx;
this.cy = cy;
this.width = width;
this.height = height;
this.speed = speed;
this.color = color;
this.id = id;
this.v_limit = v_limit;
}
/**
Método chamado sempre que o player precisa ser (re)desenhado.
*/
public void draw(){
GameLib.setColor(this.color);
GameLib.fillRect(this.cx, this.cy, this.width, this.height);
}
/**
Método chamado quando se deseja mover o player para cima.
Este método é chamado sempre que a tecla associada à ação
de mover o player para cima estiver pressionada.
@param delta quantidade de millisegundos que se passou entre o ciclo anterior de atualização do jogo e o atual.
*/
public void moveUp(long delta){
double movimento = this.speed * delta;
if(this.cy - this.height/2 - movimento < this.v_limit[0]) movimento = (this.cy - this.height/2) - this.v_limit[0];
this.cy -= movimento;
}
/**
Método chamado quando se deseja mover o player para baixo.
Este método é chamado sempre que a tecla associada à ação
de mover o player para baixo estiver pressionada.
@param delta quantidade de millisegundos que se passou entre o ciclo anterior de atualização do jogo e o atual.
*/
public void moveDown(long delta){
double movimento = this.speed * delta;
if(this.cy + this.height/2 + movimento > this.v_limit[1]) movimento = this.v_limit[1] - (this.cy + this.height/2);
this.cy += movimento;
}
/**
Método que devolve a string de identificação do player.
@return a String de indentificação.
*/
public String getId() {
return this.id;
}
/**
Método que devolve a largura do retangulo que representa o player.
@return um double com o valor da largura.
*/
public double getWidth() {
return this.width;
}
/**
Método que devolve a algura do retangulo que representa o player.
@return um double com o valor da altura.
*/
public double getHeight() {
return this.height;
}
/**
Método que devolve a coordenada x do centro do retangulo que representa o player.
@return o valor double da coordenada x.
*/
public double getCx() {
return this.cx;
}
/**
Método que devolve a coordenada y do centro do retangulo que representa o player.
@return o valor double da coordenada y.
*/
public double getCy() {
return this.cy;
}
}