J'ai remarquer aussi que lorsque je remplace app.close(); par autre chose comme un message sur console alors le programme ne plante pas comme cela :
#include <SFML/Graphics.hpp>
#include <iostream>
using namespace sf;
int const LONGUEUR(1008);
int const LARGEUR(567);
int main(int argc,char** argv)
{
/**
* page de titre
*/
RenderWindow app(VideoMode(LONGUEUR,LARGEUR),"Tower Defence : Ecran Titre", Style::None);
Font font;
if(!font.loadFromFile("Decibel_2.ttf"))
{
return EXIT_FAILURE;
}
Text text("Lancer le jeu !",font);
text.setCharacterSize(36);
text.setPosition(672,472);
FloatRect rect = text.getGlobalBounds();
float largeurTexte = rect.width;
float hauteurTexte = rect.height;
while(app.isOpen())
{
Event event;
while(app.pollEvent(event))
{
if((event.type == Event::MouseButtonPressed) && (event.mouseButton.button == sf::Mouse::Left))
{
if ((event.mouseButton.x >= LONGUEUR/1.5) && (event.mouseButton.x <= (LONGUEUR/1.5 + hauteurTexte)))
{
if ((event.mouseButton.y >= LARGEUR/1.2) && (event.mouseButton.y <= (LARGEUR/1.2 + largeurTexte)))
{
std::cout << "message" << std::endl;
}
}
}
if((event.type == Event::KeyReleased) && (event.key.code == sf::Keyboard::Escape))
{
app.close();
}
}
app.draw(text);
app.display();
}
return EXIT_SUCCESS;
}
et même étrangement il fonctionne très bien
alors est-ce un problème avec app.close(); et l'affichage d'un texte ?
de plus bizarrement ce programme fonctionne aussi parfaitement :
/**
*
* @author Majurian
*/
#include <iostream>
#include <SFML/Graphics.hpp>
using namespace sf;
int const LONGUEUR(1008);
int const LARGEUR(567);
int main(int argc,char** argv)
{
/**
* page de titre
*/
RenderWindow app(VideoMode(LONGUEUR,LARGEUR),"Tower Defence : Ecran Titre", Style::None);
/**
* ouverture de la page de titre ainsi que de la police
*
*/
Texture imageTitre;
Font font;
// test ouverture de la page de titre et de la police
if(!imageTitre.loadFromFile("titre.png"))
return EXIT_FAILURE;
Sprite titre(imageTitre);
if(!font.loadFromFile("Decibel_2.ttf"))
{
return EXIT_FAILURE;
}
// parametre du text et de l'arrier plan
Text text("Lancer le jeu !",font);
text.setCharacterSize(36);
text.setPosition(LONGUEUR/1.5,LARGEUR/1.2);
titre.setPosition(0,0);
// taille du texte
FloatRect rect = text.getGlobalBounds();
float largeurTexte = rect.width;
float hauteurTexte = rect.height;
/**
* boucle principal de l'écran de Titre
*/
while(app.isOpen())
{
Event event;
while(app.pollEvent(event))
{
if((event.type == Event::MouseButtonPressed) && (event.mouseButton.button == sf::Mouse::Left))
{
if ((event.mouseButton.x >= LONGUEUR/1.5) && (event.mouseButton.x <= (LONGUEUR/1.5 + largeurTexte)))
{
if ((event.mouseButton.y >= LARGEUR/1.2) && (event.mouseButton.y <= (LARGEUR/1.2 + hauteurTexte)))
{
std::cout << "run" << std::endl;
}
}
}
if((event.type == Event::KeyReleased) && (event.key.code == sf::Keyboard::Escape))
{
std::cout << "fermer" << std::endl;
}
app.draw(titre);
app.draw(text);
app.display();
}
}
return EXIT_SUCCESS;
}
j'ai enlever app.close(); et modifier par un texte afficher...
Merci