Bonjour,

Après être passé de :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
return ! ( jeux->m_map ? jeux->m_map->onEvent(event) : true );
à
Code : Sélectionner tout - Visualiser dans une fenêtre à part
return ! ( jeux->m_map ) ? jeux->m_map->onEvent(event) : true;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
driver->getTexture("ressources/intro1.png");
plante (Le programme a cessé de fonctionner) sans raison apparente dès que je le place après
Code : Sélectionner tout - Visualiser dans une fenêtre à part
device->setEventReceiver(&event);
alors que le return ! ... n'a jamais été exécuté pour l'instant.

Voici le code minimal :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
#include<iostream>
#include "jeux.h"
 
int main(void)
{
    LD::Jeux jeux(800,600, L"Last Dungeon - ");
    return 0;
}

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
#ifndef JEUX_H
#define JEUX_H
 
#include <irrlicht/irrlicht.h>
 
#include "eventrecever.h"
 
namespace LD
{
    class Map;
    struct Preferances;
    class Sommaire;
 
    /** @brief Classe permettant de lancer le jeux */
    class Jeux
    {
    public:
        /** @brief Initialise la fenêtre de jeux.
          @param irr::u32 x  : largeur de la fenêtre
          @param irr::u32 y : hauteur de la fenêtre
          @param const wchar_t * titre : titre de la fenetre à laquelle sera concaténée la version */
        Jeux(irr::u32 x, irr::u32 y, const wchar_t * titre);
 
        virtual ~Jeux();
 
        /** @brief Permet de changer la map */
        void setMap(Map *);
 
        /** @brief Démarre le Jeux.
            /!\ Avant de lancer cette méthode, pensez bien à définir les actions clavier et souris */
        void start(void);
 
        /** @brief Permet d'obtenir le driver */
        inline irr::video::IVideoDriver * getDriver(void){ return driver; }
 
        //TODO changeCamera();
        //TODO changeCurseur();
        //TODO changeGui();
    private :
        /** @brief détecte les autres évènements */
        void detectAutreEvent(void);
 
        /** @brief Heu... */
        irr::IrrlichtDevice *device;
 
        /** @brief driver */
        irr::video::IVideoDriver* driver;
 
        /** @brief sceneManager */
        irr::scene::ISceneManager *sceneManager;
 
        /** @brief reçoit les évents */
        EventRecever event;
 
        /** @brief fond */
        Map * m_map;
 
        /** @brief Preferances du joueur */
        Preferances * preferances;
 
    public :
        /** @brief permet de changer de map */
        Sommaire * sommaire;
 
        /** @brief gui */
      //  irr::gui::IGUIEnvironment * gui;
 
        friend class EventRecever;
    };
}
#endif // JEUX_H

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
namespace LD
{
Jeux::Jeux(irr::u32 x, irr::u32 y, const wchar_t * titre) :
        //TODO voir pour la vsync (avant-dernier argument), true ou false ?
        device(irr::createDevice(irr::video::EDT_OPENGL, irr::core::dimension2d<irr::u32>(x,y), 32, false, true, false, 0) ),
        driver(device->getVideoDriver() ),
        sceneManager(device->getSceneManager() ),
        event(this)/*,
        m_map(NULL),
        preferances(new Preferances() ),
       // sommaire(new Sommaire(this) ),
       // gui(NULL) */
    {
 
        /* Ajout d'une caméra par défaut */
        sceneManager->addCameraSceneNode (0, irr::core::vector3df (0,0,0), irr::core::vector3df (5,0,0));
 
        /* Ajout de la reception d'event */
        device->setEventReceiver(&event);
 
 
        std::cout << driver << "\n" << sceneManager << "\n" << device << std::endl;
        driver->getTexture("ressources/intro1.png");
        std::cout << "tot" << std::endl;
       }
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#ifndef EVENTRECEVER_H
#define EVENTRECEVER_H
 
#include <irrlicht/irrlicht.h>
 
namespace LD
{
    class Jeux;
 
    class EventRecever : public irr::IEventReceiver
    {
    public:
        /** @param Jeux * jeux : instance de jeux qui a créé EventRecever */
        EventRecever(Jeux * jeux);
        /** @brief Capte les évènements
            @param const irr::SEvent &event : évènement reçu */
        bool OnEvent(const irr::SEvent &event);
    private :
        /** @brief createur */
        Jeux * jeux;
    };
}
#endif // EVENTRECEVER_H

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
#include "eventrecever.h"
#include "jeux.h"
#include "map.h"
 
namespace LD
{
    EventRecever::EventRecever(Jeux * jeux) : jeux(jeux)
        {
        }
 
    bool EventRecever::OnEvent(const irr::SEvent &event)
    {
        return ! ( jeux->m_map ) ? jeux->m_map->onEvent(event) : true;
    }
}
Irrlicht Engine version 1.7.1
Personal (Build 7600)
Using renderer: OpenGL 2.1.0
Intel(R) HD Graphics: Intel
OpenGL driver version is 1.2 or better.
GLSL version: 1.2
Irrlicht Engine version 1.7.1
Personal (Build 7600)
Using renderer: OpenGL 2.1.0
Intel(R) HD Graphics: Intel
OpenGL driver version is 1.2 or better.
GLSL version: 1.2
0xa39fe0
0xa3bfb0
0x2581498
Sachant que si je remplace mon getTexture par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
std::cout << driver->getScreenSize().Height << std::endl;
ça ne plante pas et je vois la bonne dimension.

Est-ce que vous auriez une idée? Je sèche complètement...