Repository navigation
Expand file tree
/
Copy pathjeu.cpp
More file actions
171 lines (130 loc) · 4.1 KB
/
Copy pathjeu.cpp
File metadata and controls
171 lines (130 loc) · 4.1 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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
#pragma once
#include "jeu.h"
#include <vector>
jeux::jeux(sf::RenderWindow *renderWindow)
{
shop = new boutique; // Creation de la boutique
rocket = new fusee; // Création de la fusée
fond = new background; // Création Background
scoreboard = new score(renderWindow); // Creation du scoreboard
gain = new piece; // Creation de piece
fin = new gameover; // Creation du Game Over
tab.push_back(new obstacle);
pieces.push_back(new piece);
for (i=0; i < 5; i++)
{
life.push_back(new vie(i)); // Tableau de vie avec incrémentation pour les espacer
}
chrono3.Zero; // Set du chrono fantome a Zero
}
bool jeux::decollage(sf::RenderWindow *renderWindow) // Animation de départ
{
fond->dessiner(renderWindow);
rocket->deplacement(scoreboard);
rocket->dessiner(renderWindow);
rocket->decollage(fond,&etatdecollage);
if(etatdecollage == true)
{
return true; // Fin de la fonction quand le declencheur est vrai
}
}
bool jeux::controle(sf::RenderWindow *renderWindow)
{
chrono = clock.getElapsedTime(); //
chrono2 = clock2.getElapsedTime(); //
fond->defilement(); // Defilement du fond avec fondu
fond->dessiner(renderWindow);
rocket->deplacement(scoreboard);// Gestion controle de la fusée
if (scoreboard->getImpact() == 1) // Si le score renvoit un impact alors on met la fusée en mode fantome et on chronometre
{
chrono3 = clock3.getElapsedTime();
rocket->fantome();
}
if (chrono3.asMilliseconds() > 3000) // Si le chrono dépasse les 5000ms alors on remet la fusée en mode neutre et on reset l'impact à 0 puis on reset la clock
{
rocket->neutre();
scoreboard->RetImpact();
clock3.restart();
}
if (scoreboard->getImpact() == 0)
{
clock3.restart();
}
rocket->dessiner(renderWindow);
fond->changement(scoreboard,renderWindow);
//######## OBSTACLES #################
if (chrono.asMilliseconds() > (randpop) && shop->veriflag() == false) // Si le chrono dépasse le temps de generation random de l'asteroide alors on créer un nouvel asteroide puis on regenere un nouveau temps random en fonction de la difficulté
{
tab.push_back(new obstacle);
if (difficulte > 0.2) // On gere la difficulté
{
difficulte = difficulte - 0.01;
}
clock.restart();
randpop = rand()%1000 + 200;
}
//########################
//#### PIECES #######
if (chrono2.asMilliseconds() > randpop2) // Temps random pour la generation des pieces
{
pieces.push_back(new piece);
pieces[j]->dessiner(renderWindow);
clock2.restart();
randpop2 = rand()%2000;
}
//###################
//### CHECK COLLI ########
i = 0;
j =0;
while (i < tab.size())
{
tab[i]->checkColli(rocket,renderWindow,scoreboard);
if (tab[i]->gety() > 500)
{
delete tab[i];
tab.erase(tab.begin() + i); // On delete les asteroides qui sortent du cadre
}
else
{
i++;
}
}
while (j < pieces.size())
{
pieces[j]->checkColli(rocket,renderWindow, scoreboard);
if (pieces[j]->gety() > 500)
{
delete pieces[j];
pieces.erase(pieces.begin() + j); // On delete les pieces qui sortent du cadre
}
else
{
j++;
}
}
//######################
scoreboard->piecesdraw(renderWindow);
if (scoreboard->get_vie() == 0)
{
return true; // ON QUITTE LE JEU QUAND ELON MEURT
}
shop->traitement(renderWindow,scoreboard,rocket); // traitement de la boutique + affichage
scoreboard->scoredraw(renderWindow); // Affichage du score
}
bool jeux::over(sf::RenderWindow *renderWindow)
{
if(fin->lancement(renderWindow,scoreboard->get_score(),scoreboard->get_hauteur()) == true)
{
reset(); // Lancement de la supression des objets
return true;
};
}
void jeux::reset()
{
delete shop;
delete rocket;
delete scoreboard;
delete fond;
delete fin;
}
jeux::~jeux() {}