-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.cpp
85 lines (66 loc) · 2.58 KB
/
main.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
84
85
#include <SFML/Graphics.hpp>
#include <cmath>
#include <iostream>
#include "include/Joueur.h"
#include "include/Carte.h"
#include "include/CanevasJeu.h"
using namespace std;
int main()
{
sf::ContextSettings settings;
settings.antialiasingLevel = 8;
// On crée une fenêtre de jeu de la taille de l'écran appelée "Infinite Orbits"
sf::RenderWindow fenetreJeu(sf::VideoMode::getDesktopMode(), "Infinite Orbits", sf::Style::Default);
int largeur=fenetreJeu.getSize().x;
int hauteur=fenetreJeu.getSize().y;
fenetreJeu.setKeyRepeatEnabled(false); // pas de répétition d'appui sur la touche
// Calcul de la fenêtre de jeu en 16/9 et création du canevas
CanevasJeu canevas(largeur,hauteur);
// création de la carte
vector<Orbite> orbites;
orbites.push_back(Orbite(&canevas, sf::Vector2f(1000,500), 500));
Carte carte(orbites);
// Remplissage en blanc de la fenêtre de jeu
sf::RectangleShape fond(sf::Vector2f(1920*canevas.getEchelle(),1080*canevas.getEchelle()));
fond.setPosition(canevas.getOffset());
fond.setFillColor(sf::Color::White);
// Création du joueur
Joueur joueur1(&canevas,&carte);
sf::Clock temps;
// Boucle du jeu
while (fenetreJeu.isOpen())
{
// Gestion des évènements
sf::Event event;
while (fenetreJeu.pollEvent(event))
{
// Fermer la fenêtre
if (event.type == sf::Event::Closed)
fenetreJeu.close();
// Gestion du changement de taille de fenêtre
if (event.type == sf::Event::Resized) {
largeur=event.size.width;
hauteur=event.size.height;
// On crée une fenêtre 16/9 la plus grande possible à l'intérieur de la fenêtre
canevas.redimensionner(largeur,hauteur);
// Redimensionement du jeu
fond.setSize(sf::Vector2f(1920*canevas.getEchelle(),1080*canevas.getEchelle()));
fond.setPosition(canevas.getOffset());
carte.redimensionner();
fenetreJeu.setView(sf::View(sf::FloatRect(0,0,largeur,hauteur)));
}
joueur1.evenements(event); // Gestion des évenements du joueur
}
// Effacer l'écran pour afficher l'image suivante
fenetreJeu.clear();
// Tick
sf::Time delta = temps.restart();
joueur1.deplacement(delta);
// Dessin de l'image
fenetreJeu.draw(fond);
fenetreJeu.draw(carte);
fenetreJeu.draw(joueur1);
fenetreJeu.display();
}
return EXIT_SUCCESS;
}