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;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 driver->getTexture("ressources/intro1.png");alors que le return ! ... n'a jamais été exécuté pour l'instant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part device->setEventReceiver(&event);
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; } }Sachant que si je remplace mon getTexture parIrrlicht 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ça ne plante pas et je vois la bonne dimension.
Code : Sélectionner tout - Visualiser dans une fenêtre à part std::cout << driver->getScreenSize().Height << std::endl;
Est-ce que vous auriez une idée? Je sèche complètement...
Partager