Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Je n'arrive pas à afficher une image  (Lu 2377 fois)

0 Membres et 1 Invité sur ce sujet

demonyunther

  • Newbie
  • *
  • Messages: 2
    • Voir le profil
Je n'arrive pas à afficher une image
« le: Juin 12, 2012, 11:09:22 pm »
Bonjour :)

En fait j'ai réalisé un jeu (ou plutôt le début) sans profiter pleinement de la POO ca s’apparente plus au C donc j'ai revu mon code pour utiliser des class ect...
Donc ca marchait avant, et maintenant j'arrive plus a afficher une image je vous montre le code.
(Le soucis n'est pas l'image en elle même)
PS: Je précise que j'ai enlever tout le surplus de  code pour isoler le problème

En fait ca fait 3 heures que je suis dessus j'ai essayé pleins de choses, je voulais pas vous embeter mais la je peux plus avancer  ::)

MAIN.CPP
#include "menu.h"
#include "graphics.h"
#include <SFML/Graphics.hpp>

const int Window_Width = 1024;
const int Window_Height = 768;
const int sizeDalle_x = 65;
const int sizeDalle_y = 33;

 int main()
 {  //Create Objets
    Graphics graphics;
    //Create Window & Vsync to limitate Frames
    sf::RenderWindow window(sf::VideoMode(Window_Width,Window_Height),"TEST");
    window.setVerticalSyncEnabled(true);



    Menu_Loader(&graphics,&window);
 }
 

menu.h

#ifndef MENU_INCLUDED
#define MENU_INCLUDED

#include "graphics.h"

void Menu_Loader(Graphics::Graphics *graphics,sf::RenderWindow *window);

#endif

 

menu.cpp
#include "menu.h"

using namespace std;


void Menu_Loader(Graphics::Graphics *graphics,sf::RenderWindow *window)
{
 sf::Event event;
while(window->isOpen()) // Boucle principale
    {
        while (window->pollEvent(event)) // Boucle des évènements
        {
             if (event.type == sf::Event::Closed) // Croix en haut à droite
                window->close(); // Fermeture du programme
        }
         window->clear();
         window->draw(graphics->background());
         window->display();
     }
}
 

Graphics.h
#ifndef GRAPHICS_INCLUDE
#define GRAPHICS_INCLUDE

#include <SFML/Graphics.hpp>

class Graphics
{
    public:
    Graphics(); //Constructor
    void loadMenu();
    sf::Sprite background();

    private:
    sf::Sprite fond;
    sf::Texture texture;

};


#endif
 

Graphics.cpp

#include "graphics.h"
#include <iostream>

const int Rectangle_Witdh = 250;
const int Rectangle_Height= 60;

Graphics::Graphics()
{
    if(!texture.loadFromFile("data/ressources/menu_fond.png"))
    {
        std::cout << "Error Import Sprite menu_fond.png" << std::endl;
    }
    sf::Sprite fond(texture);
}

sf::Sprite Graphics::background()
{
    return fond;
}

 
« Modifié: Juin 12, 2012, 11:13:03 pm par demonyunther »

mccusti

  • Invité
Re : Je n'arrive pas à afficher une image
« Réponse #1 le: Juin 12, 2012, 11:26:44 pm »
Dans le constructeur de Graphics tu écris
sf::Sprite fond(texture);
Tu es en train de créer un nouveau sprite, qui n'est pas celui appartenant à ta classe bien qu'il porte le même nom. Ce sprite est ensuite effacé à la fin du constructeur. Au final le sprite de la classe Graphics n'est jamais initialisé.

demonyunther

  • Newbie
  • *
  • Messages: 2
    • Voir le profil
Re : Je n'arrive pas à afficher une image
« Réponse #2 le: Juin 12, 2012, 11:33:38 pm »
C'est bien ce que je pensais vu que l'image été effacé.

En tout cas merci beaucoup, je dois faire comment donc;

fond.setTexture(texture); ?


(C'est bon c'est réglé, j'ai un autre soucis maintenant mais je vais chercher )
« Modifié: Juin 13, 2012, 12:01:25 am par demonyunther »

mccusti

  • Invité
Re : Je n'arrive pas à afficher une image
« Réponse #3 le: Juin 13, 2012, 09:57:00 am »
Oui.