-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPlayer.cpp
83 lines (69 loc) · 1.96 KB
/
Player.cpp
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
/*
Este arquivo contém a implementação da classe Player, que contém os atributos
e métodos necessários para gerenciar a movimentação do boneco.
Em termos gerais, esta classe lê os inputs do jogador e altera a posição do
boneco na tela conforme o que foi pedido.
*/
#include "includes/Player.hpp"
// Construtor da classe.
Player::Player() {
posX = 250;
posY = 300;
velX = 0;
camisetaNaMao = false;
}
// Lê os comandos do jogador e altera a velocidade do boneco.
void Player::lerInput(SDL_Event& e) {
// Se uma tecla for pressionada
if(e.type == SDL_KEYDOWN && e.key.repeat == 0) {
// Ajustando a velocidade
switch(e.key.keysym.sym) {
case SDLK_LEFT:
velX -= velMax;
break;
case SDLK_RIGHT:
velX += velMax;
break;
}
}
// Se uma tecla for liberada
else if(e.type == SDL_KEYUP && e.key.repeat == 0) {
// Ajustando a velocidade
switch( e.key.keysym.sym ) {
case SDLK_LEFT:
velX += velMax;
break;
case SDLK_RIGHT:
velX -= velMax;
break;
}
}
}
// além de que o jogo é finalizado.
void Player::movimentar(int rightWall) {
// Movimentando o boneco para a direita ou esquerda.
posX += velX;
// Evitando de o boneco sair das bordas da tela.
if ((posX < 0) || (posX + comprimento > rightWall)) {
//Move back
posX -= velX;
}
}
/*
Retorno:
- 1: Está com a camiseta na mão e está perto da caixa
1: Não está com a camiseta na mão e está perto da camiseta.
0: Nenhum dos casos anteriores.
*/
int Player::verificaPodePegarCamiseta(int leftWall, int rightWall) {
if (posX < leftWall && camisetaNaMao) {
return -1;
}
if (posX > (rightWall - 120) && !camisetaNaMao) {
return 1;
}
return 0;
}
void Player::setCamisetaNaMao(bool novoValor) {
camisetaNaMao = novoValor;
}