-
Notifications
You must be signed in to change notification settings - Fork 0
/
joueur.cpp
74 lines (63 loc) · 1.88 KB
/
joueur.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
#include "joueur.h"
#include <iostream>
enum Directions
{
IMMOBILE, GAUCHE, DROITE
};
Joueur::Joueur()
{
m_freqDeTir = 4;
}
Joueur::~Joueur()
{
}
void Joueur::set_joueur(sf::Vector2u dimensionJeu, sf::Vector2u tailleVaisseau)
{
m_position.x = dimensionJeu.x / 2 - tailleVaisseau.x / 2;
m_position.y = dimensionJeu.y - tailleVaisseau.y - 10;
m_vitesseMax = dimensionJeu.x * 1.5;
m_tailleVaisseau = tailleVaisseau;
m_dimensionFenetre = dimensionJeu;
}
void Joueur::deplacer(sf::Time tempsPassePrincipal, int direction)
{
if(this->get_vivant())
{
m_acceleration = m_vitesseMax * (tempsPassePrincipal.asSeconds() - m_tempsPasseMouvement.asSeconds()) * 6;
if(m_vitesse == 0) m_direction = direction;
if(direction == m_direction && direction != IMMOBILE)
{
m_vitesse = m_vitesse + m_acceleration;
}
else if(direction == IMMOBILE)
{
m_vitesse = m_vitesse - m_acceleration;
}else{
m_vitesse = m_vitesse - 2 * m_acceleration;
}
if(m_vitesse > m_vitesseMax) m_vitesse = m_vitesseMax;
if(m_vitesse <= 0)
{
m_vitesse = 0;
}
if(m_direction == GAUCHE)
{
m_position.x = m_position.x - m_vitesse * (tempsPassePrincipal.asSeconds() - m_tempsPasseMouvement.asSeconds());
}
else if(m_direction == DROITE)
{
m_position.x = m_position.x + m_vitesse * (tempsPassePrincipal.asSeconds() - m_tempsPasseMouvement.asSeconds());
}
if(m_position.x < 0)
{
m_position.x = 0;
m_vitesse = 0;
}
if(m_position.x > m_dimensionFenetre.x - m_tailleVaisseau.x)
{
m_position.x = m_dimensionFenetre.x - m_tailleVaisseau.x;
m_vitesse = 0;
}
}
m_tempsPasseMouvement = tempsPassePrincipal;
}