Skip to content

Commit 2014335

Browse files
committed
Merge branch 'phoenix' with GUI and full features.
2 parents cefaa3f + 7a90f7f commit 2014335

36 files changed

+1213
-179
lines changed

.gitignore

+3-2
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,12 @@ sfml-app
3535
# Data files and pictures
3636
*.dat
3737
*.res
38-
*.png
38+
*.stat.png
39+
3940

4041
# Fichiers de référence
4142
rk4.cpp
4243
rk4_old.cpp
4344

4445
**/build
45-
.vscode/
46+
.vscode/

Main.cpp

+14-57
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,22 @@
1-
#include <SFML/Window.hpp>
2-
#include <SFML/Graphics.hpp>
3-
#include <SFML/System.hpp>
4-
#include <iostream>
5-
#include <fstream>
1+
#include "Game.h"
62

7-
#include "Vecteur.h"
8-
#include "Objet.h"
9-
10-
sf::RenderWindow window;
11-
sf::CircleShape Prometheus(15);
3+
sf::RenderWindow game;
4+
sf::RenderWindow param;
125

136
int main() {
14-
//creation du système
15-
Objet Vaisseau;
16-
17-
//création d'un fichier de sortie des données et d'un compteur d'itérations
18-
std::ofstream outfile;
19-
outfile.open("../vaisseau.dat");
20-
21-
int iterations = 0;
22-
//temps d'une boucle (fps)
23-
sf::Time time = sf::milliseconds(10);
24-
double dTime = 0.010;
25-
26-
// création de la fenêtre
27-
window.create(sf::VideoMode(800, 600), "My window");
28-
Prometheus.setFillColor(sf::Color(100, 250, 50));
29-
30-
// on fait tourner le programme tant que la fenêtre n'a pas été fermée
31-
while (window.isOpen()) {
32-
//Chronometrage
33-
sf::Clock clock;
347

35-
// on traite tous les évènements de la fenêtre qui ont été générés depuis la dernière itération de la boucle
36-
sf::Event event;
37-
while (window.pollEvent(event)) {
38-
// fermeture de la fenêtre lorsque l'utilisateur le souhaite
39-
if (event.type == sf::Event::Closed)
40-
window.close();
41-
}
42-
// effacement de la fenêtre en noir
43-
window.clear();
44-
Vaisseau.Acceleration();
8+
Data Parametres(3,120,30,80,20,10,10,2,0);
459

46-
//Vaisseau.affiche_acceleration_x(Vaisseau.acceleration_x());
47-
//Vaisseau.affiche_acceleration_y(Vaisseau.acceleration_y());
48-
outfile << iterations << " " << Vaisseau.acceleration_x() << " " << Vaisseau.acceleration_y() << " " << Vaisseau.vitesse_x() << " " << Vaisseau.vitesse_y() << " " << Vaisseau.x_() << " " << Vaisseau.y_() << std::endl;
10+
sf::Time time = sf::milliseconds(20);
11+
Vecteur Diff_de_ref;
4912

50-
Vaisseau.Euler(dTime);
51-
Prometheus.setPosition(Vaisseau.x_(), Vaisseau.y_());
13+
bool end = true;
14+
bool close = true;
5215

53-
// c'est ici qu'on dessine tout
54-
window.draw(Prometheus);
55-
56-
// fin de la frame courante, affichage de tout ce qu'on a dessiné
57-
iterations += 1;
58-
window.display();
59-
60-
// Wait for the next frame, in order to get a constant framerate, independent from the execution time
61-
sf::sleep(time - clock.getElapsedTime());
62-
}
63-
outfile.close();
16+
do {
17+
game.create(sf::VideoMode(Parametres.Lx(), Parametres.Ly()), "The Game");
18+
param.create(sf::VideoMode(Parametres.Lx(), Parametres.Ly()), "Paramètres");
19+
Front_Page (param, game, Diff_de_ref, Parametres, close);
20+
} while (Game(game, param, Diff_de_ref, time, Parametres, end, close));
6421
return 0;
65-
}
22+
}

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,4 @@ ninja
1616
./sfml-app
1717
```
1818

19-
Make sure that `libsfml` is installed.
19+
Make sure that `libsfml` is installed.

fonts/28 Days Later.ttf

278 KB
Binary file not shown.

fonts/FORCED SQUARE.ttf

49.1 KB
Binary file not shown.

fonts/PROMETHEUS.ttf

64.5 KB
Binary file not shown.

fonts/contrast.ttf

29.5 KB
Binary file not shown.

fonts/cubic.ttf

37.7 KB
Binary file not shown.

fonts/good times rg.ttf

67 KB
Binary file not shown.

fonts/space age.ttf

26.1 KB
Binary file not shown.

images/P1.png

9.17 KB
Loading

images/P2.png

5.9 KB
Loading

images/P3.png

13.8 KB
Loading

images/V1.png

522 KB
Loading

include/CorpsStellaire.h

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#ifndef CorpsStellaire_h
2+
#define CorpsStellaire_h
3+
#include <SFML/Graphics.hpp>
4+
#include "Vecteur.h"
5+
#include "Objet.h"
6+
7+
class CorpsStellaire : public Objet {
8+
public:
9+
CorpsStellaire ();
10+
CorpsStellaire (const double rayon_, const Vecteur vitesse_, const Vecteur position_, const double masse_, const sf::Texture texture_, const sf::CircleShape planete_);
11+
void set_CorpsStellaire (double & rayon_, sf::CircleShape & planete_);
12+
13+
double rayon_ () const;
14+
15+
private:
16+
double rayon;
17+
sf::CircleShape planete;
18+
};
19+
20+
#endif

include/Data.h

+127
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
#ifndef Data_h
2+
#define Data_h
3+
#include <SFML/Window.hpp>
4+
#include <SFML/Graphics.hpp>
5+
#include <SFML/System.hpp>
6+
#include <iostream>
7+
#include <fstream>
8+
#include <sstream>
9+
#include <string>
10+
#include <vector>
11+
#include <random>
12+
#include "Vecteur.h"
13+
#include "Objet.h"
14+
#include "Vaisseau.h"
15+
#include "CorpsStellaire.h"
16+
#include "PageSetting.h"
17+
18+
19+
using namespace std;
20+
21+
class Data {
22+
23+
public:
24+
25+
Data ();
26+
Data (const double N,
27+
const double RMAX,
28+
const double RMIN,
29+
const double PROPULSION_AR,
30+
const double PROPULSION_AV,
31+
const double PROPULSION_LAT,
32+
const double PROPULSION_ROT,
33+
const double MASSE,
34+
const int MODE
35+
);
36+
37+
void default_setting_1 (vector<Input> & Input);
38+
Data cstr_setting_1 (vector<Input> Input);
39+
void corpsstellaire_generation (CorpsStellaire & CorpsStellaire_, sf::CircleShape & corps_);
40+
void mapping ();
41+
bool uncovering_test ();
42+
void Texturage ();
43+
void reset ();
44+
void sides ();
45+
void Game_Over ();
46+
void set_mode ();
47+
void ship_deplacement (bool & test);
48+
void planete_deplacement (bool & test, Vecteur & Diff_de_ref);
49+
50+
51+
double n ();
52+
//int t () const;
53+
//double R () const;
54+
//double M () const;
55+
//int Rmax () const;
56+
//int Rmin () const;
57+
int Lx ();
58+
int Ly ();
59+
//double h () const;
60+
//double Propulsion_Ar () const;
61+
//double Propulsion_Av () const;
62+
//double Propulsion_Lat () const;
63+
//double Propulsion_Rot () const;
64+
//double Masse () const;
65+
//int Largeur () const;
66+
//int Longueur () const;
67+
//Vecteur position_initial () const;
68+
//sf::Texture texture_vaisseau () const;
69+
sf::RectangleShape Ship ();
70+
Vaisseau Prometheus();
71+
vector<CorpsStellaire> list_objet ();
72+
vector<sf::CircleShape> corps ();
73+
Text game_over ();
74+
int Mode ();
75+
76+
private:
77+
//Nombre d'objets
78+
double n_;
79+
//Nombre de texture de planètes differentes
80+
double t_;
81+
//Rayon d'un CorpsStellaire
82+
double R_;
83+
//Masse d'un CorpsStellaire
84+
double M_;
85+
//Rayon maximum d'un CorpsStellaire
86+
double Rmax_;
87+
//Rayon minimum d'un CorpsStellaire
88+
double Rmin_;
89+
//Taille de la fenêtre selon x
90+
int Lx_;
91+
//Taille de la fenêtre seon y
92+
int Ly_;
93+
//Paramètrage RK4
94+
double h_;
95+
//Propulsion arrière d'un Vaisseau
96+
double Propulsion_Ar_;
97+
//Propulsion avant d'un Vaisseau
98+
double Propulsion_Av_;
99+
//Propulsion laterale d'un Vaisseau
100+
double Propulsion_Lat_;
101+
//Propulsion de rotation d'un Vaisseau
102+
double Propulsion_Rot_;
103+
//Masse d'un Vaisseau
104+
double Masse_;
105+
//Largeur d'un Vaisseau
106+
int Largeur_;
107+
//Longueur d'un Vaisseau
108+
int Longueur_;
109+
//Position initial du Vaisseau
110+
Vecteur position_initial_;
111+
//Texture du vaisseau
112+
sf::Texture texture_vaisseau_;
113+
//Forme du vaisseau
114+
sf::RectangleShape Ship_;
115+
//vaisseau
116+
Vaisseau Prometheus_;
117+
//Liste de CorpsStellaire (physique)
118+
vector<CorpsStellaire> list_objet_;
119+
//Liste de CorpsStellaire (affichage)
120+
vector<sf::CircleShape> corps_;
121+
//Police game over
122+
Text game_over_;
123+
//Mode de jeu
124+
int mode_;
125+
};
126+
127+
#endif

include/Game.h

+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
#include "Parametres.h"
2+
3+
bool Game (sf::RenderWindow & game_, sf::RenderWindow & param_, Vecteur Diff_de_ref, sf::Time time, Data & game_setting, bool & end, bool & close) {
4+
5+
bool Continue = true;
6+
7+
if (close) {
8+
while (game_.isOpen()) {
9+
10+
sf::Event event;
11+
12+
while (game_.pollEvent(event)) {
13+
if (event.type == sf::Event::Closed) {
14+
game_.close();
15+
end = false;
16+
}
17+
};
18+
19+
if(Continue) {
20+
sf::Clock clock;
21+
vector<sf::CircleShape> Corps;
22+
Corps = game_setting.corps();
23+
vector<CorpsStellaire> Objets;
24+
Objets = game_setting.list_objet();
25+
sf::RectangleShape Ship;
26+
Ship = game_setting.Prometheus().ship_();
27+
game_.display();
28+
game_.clear();
29+
game_.draw(Ship);
30+
if (game_setting.Mode() == 0) {
31+
game_setting.ship_deplacement(Continue);
32+
};
33+
if (game_setting.Mode() == 1) {
34+
game_setting.planete_deplacement(Continue, Diff_de_ref);
35+
};
36+
for (int i = 0; i<game_setting.n(); i++) {
37+
Corps[i].setPosition(Objets[i].position_().x_() - Objets[i].rayon_() - Diff_de_ref.x_(), Objets[i].position_().y_() - Objets[i].rayon_() - Diff_de_ref.y_());
38+
Corps[i].setRadius(Objets[i].rayon_());
39+
sf::Texture texture = Objets[i].texture_();
40+
Corps[i].setTexture(& texture);
41+
game_.draw(Corps[i]);
42+
};
43+
sf::sleep(time - clock.getElapsedTime());
44+
}
45+
else {
46+
game_.display();
47+
game_.clear();
48+
game_.draw(game_setting.game_over().text());
49+
if (sf::Keyboard::isKeyPressed(sf::Keyboard::C)) {
50+
end = true;
51+
game_.close();
52+
param_.close();
53+
}
54+
else {
55+
end = false;
56+
};
57+
};
58+
};
59+
}
60+
else {
61+
end = false;
62+
};
63+
return (end);
64+
};

include/Input.h

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#ifndef Input_h
2+
#define Input_h
3+
#include <SFML/Graphics.hpp>
4+
#include <iostream>
5+
#include <string>
6+
#include "Text.h"
7+
8+
class Input : public Text {
9+
public:
10+
Input ();
11+
Input (sf::RectangleShape INPUT_ZONE, string INPUT, Text TEXT);
12+
13+
sf::RectangleShape input_zone ();
14+
string input ();
15+
Text input_text();
16+
bool focus_zone ();
17+
18+
void set_input (string ipt);
19+
void input_zone (sf::Vector2f size, Vecteur position);
20+
21+
protected:
22+
sf::RectangleShape input_zone_;
23+
string input_;
24+
Text text_;
25+
bool focus_zone_;
26+
};
27+
28+
#endif

include/Objet.h

+18-21
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,32 @@
11
#ifndef Objet_h
22
#define Objet_h
3+
#include <SFML/Graphics.hpp>
4+
#include <vector>
5+
#include <string>
36
#include "Vecteur.h"
47

5-
68
class Objet {
79
public:
8-
Objet();
9-
Objet(Vecteur position_, Vecteur position_precedente_, Vecteur acceleration_, Vecteur vitesse_, Vecteur vitesse_precedente_);
10-
11-
void Acceleration ();
12-
void Euler (double dTime);
10+
Objet ();
11+
Objet (const double masse_, const Vecteur vitesse_, const Vecteur position_, const sf::Texture texture_);
1312

1413
Vecteur position_ () const;
15-
double x_ () const;
16-
double y_ () const;
17-
//Vecteur acceleration_ () const;
18-
double vitesse_x () const;
19-
double vitesse_y () const;
20-
double acceleration_x () const;
21-
double acceleration_y () const;
14+
double masse_ () const;
15+
sf::Texture texture_ () const;
2216

23-
void affiche_acceleration_x (double x);
24-
void affiche_acceleration_y (double y);
17+
void set_position (Vecteur & Vect_);
18+
void set_position (double x, double y);
19+
void set_vitesse (Vecteur & Vect_);
20+
void set_texture (std::string nom_texture);
21+
void set_Objet (double & masse_, Vecteur & vitesse_, Vecteur & position_, sf::Texture & texture_);
2522

26-
private:
27-
Vecteur position;
28-
Vecteur position_precedente;
29-
Vecteur acceleration;
30-
Vecteur vitesse;
31-
Vecteur vitesse_precedente;
23+
double Distance (const Vecteur & Vecteur1, const Vecteur & Vecteur2);
3224

25+
protected:
26+
double masse;
27+
Vecteur vitesse;
28+
Vecteur position;
29+
sf::Texture texture;
3330
};
3431

3532
#endif

0 commit comments

Comments
 (0)