1
Graphique / Problème de lecture du loadFromFile de la classe Texture
« le: Juin 02, 2017, 04:55:29 pm »
Bonjour,
Je suis nouveau dans la programmation C++ et sfml.
Depuis ce matin je cherche un solution, comme je ne trouve pas je viens vous demander de l'aide.
je n'arrive pas un importer une image il ne semble pas reconnaître loadFromFile j'ai mis le message d'erreur à la fin.
Merci pour votre aide car là je ne sais pas quoi faire.
Voici mon code :
#include <SFML/Graphics.hpp>
#include <string>
#include <iostream>
#include <cstdlib>
#include "shape.h"
#include <SFML/Window.hpp>
#include <SFML/system.hpp>
#include <SFML/Audio.hpp>
using namespace std;
using namespace sf;
sf::RenderWindow window;
sf::CircleShape cercle;
sf::RectangleShape rect;
int speed = 5;
sf::Vector2i positionSouris;
sf::Texture Perso;
sf::Sprite sprite_perso;
void gestion_clavier();
int main()
{
//création de la fenêtre 800x600
window.create(sf::VideoMode(800,600), "Ma fenêtre");
//modifier la osition de la fenêtre
window.setPosition(sf::Vector2i(50, 200));
//Modifier la taille de la fenêtre
//window.setSize(sf::Vector2u(800, 800));
window.setFramerateLimit(60);
std::cout <<"Début du jeux"<< std::endl;
if (!Perso.loadFromFile("mario.png"))
{
std::cout <<"erreur chargement mario"<< std::endl;
}
cercle.setFillColor(sf::Color(100,250,50));
cercle.setOutlineColor(sf::Color(150,200,40));
cercle.setOutlineThickness(5);
cercle.setRadius(50);
cercle.setPosition(100, 100);
rect = PB_rect(10,10,32,32);
//tant que la fenêtre est ouverte
while(window.isOpen())
{
sf::Event event;
//test des événements
while (window.pollEvent(event))
{
//si on clic sur fermer
if (event.type == sf::Event::Closed)
window.close();
}
/*gestion du clavier*/
gestion_clavier();
//on dessine, on affiche et on met à jour
window.draw(cercle);
window.draw(rect);
window.display();
window.clear();
}
return 0;
}
//objet gestion clavier
void gestion_clavier()
{
if (sf::Mouse::isButtonPressed(sf::Mouse::Left))
{
//on récupère les coordonées du clic gauche de la souris
positionSouris = sf::Mouse::getPosition(window);
std::cout << "Mouse.x" <<positionSouris.x <<"Mouse.y" <<positionSouris.y <<std::endl;
// on créer un variable position souris
int mouseX = positionSouris.x;
int mouseY = positionSouris.y;
//on positionne le rectangle à l'endroit du clic gauche souris
rect.setPosition(mouseX,mouseY);
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
{
rect.move(0,-speed);
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
{
rect.move(0,speed);
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
{
rect.move(-speed,0);
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
{
rect.move(speed,0);
}
}
voici le message d'erreur.
F:......|39|undefined reference to `_imp___ZN2sf7Texture12loadFromFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_4RectIiEE'|
Je suis nouveau dans la programmation C++ et sfml.
Depuis ce matin je cherche un solution, comme je ne trouve pas je viens vous demander de l'aide.
je n'arrive pas un importer une image il ne semble pas reconnaître loadFromFile j'ai mis le message d'erreur à la fin.
Merci pour votre aide car là je ne sais pas quoi faire.
Voici mon code :
#include <SFML/Graphics.hpp>
#include <string>
#include <iostream>
#include <cstdlib>
#include "shape.h"
#include <SFML/Window.hpp>
#include <SFML/system.hpp>
#include <SFML/Audio.hpp>
using namespace std;
using namespace sf;
sf::RenderWindow window;
sf::CircleShape cercle;
sf::RectangleShape rect;
int speed = 5;
sf::Vector2i positionSouris;
sf::Texture Perso;
sf::Sprite sprite_perso;
void gestion_clavier();
int main()
{
//création de la fenêtre 800x600
window.create(sf::VideoMode(800,600), "Ma fenêtre");
//modifier la osition de la fenêtre
window.setPosition(sf::Vector2i(50, 200));
//Modifier la taille de la fenêtre
//window.setSize(sf::Vector2u(800, 800));
window.setFramerateLimit(60);
std::cout <<"Début du jeux"<< std::endl;
if (!Perso.loadFromFile("mario.png"))
{
std::cout <<"erreur chargement mario"<< std::endl;
}
cercle.setFillColor(sf::Color(100,250,50));
cercle.setOutlineColor(sf::Color(150,200,40));
cercle.setOutlineThickness(5);
cercle.setRadius(50);
cercle.setPosition(100, 100);
rect = PB_rect(10,10,32,32);
//tant que la fenêtre est ouverte
while(window.isOpen())
{
sf::Event event;
//test des événements
while (window.pollEvent(event))
{
//si on clic sur fermer
if (event.type == sf::Event::Closed)
window.close();
}
/*gestion du clavier*/
gestion_clavier();
//on dessine, on affiche et on met à jour
window.draw(cercle);
window.draw(rect);
window.display();
window.clear();
}
return 0;
}
//objet gestion clavier
void gestion_clavier()
{
if (sf::Mouse::isButtonPressed(sf::Mouse::Left))
{
//on récupère les coordonées du clic gauche de la souris
positionSouris = sf::Mouse::getPosition(window);
std::cout << "Mouse.x" <<positionSouris.x <<"Mouse.y" <<positionSouris.y <<std::endl;
// on créer un variable position souris
int mouseX = positionSouris.x;
int mouseY = positionSouris.y;
//on positionne le rectangle à l'endroit du clic gauche souris
rect.setPosition(mouseX,mouseY);
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
{
rect.move(0,-speed);
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
{
rect.move(0,speed);
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
{
rect.move(-speed,0);
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
{
rect.move(speed,0);
}
}
voici le message d'erreur.
F:......|39|undefined reference to `_imp___ZN2sf7Texture12loadFromFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_4RectIiEE'|