#0 

12-03-2011 13:48:09

Kaze
Membre
Date d'inscription: 12-03-2011
Messages: 60

Bonjour à tous. C'est mon premier post donc je vais essayer de faire au mieux : je programme sur irrlicht depuis peu de temps et j'ai d'abord fait du C. Tout cela pour dire que j'ai essayé d'inclure une page en plus dans mon projet et il crée deux fenetres. Voiçi mes codes :

main.cpp :

#include <irrlicht.h>
#include "menu.h"

using namespace irr;

int main(void)
{
    IrrlichtDevice* device = createDevice(video::EDT_OPENGL,core::dimension2d<u32>(1024,725), 32);
    video::IVideoDriver* driver = device->getVideoDriver ();
    scene::ISceneManager *sceneManager = device->getSceneManager ();
    gui::IGUIEnvironment *gui = sceneManager->getGUIEnvironment();

    int Jactif = 0, Oactif = 0, Qactif = 0;
   
    // CHARGEMENT DE L'IMAGE DE FOND

    video::ITexture *menuF = driver->getTexture ("menu/accueil/fond.png");  // chargement de la texture
   
    core::position2d<s32> origine;                        // creation position origine
    origine.X = 0;
    origine.Y = 0;
    core::position2d<s32> fin;                        // creation position fin
    fin.X = 1024;
    fin.Y = 725;
    core::rect<s32> fenetre;                              // creation rectangle
    fenetre.UpperLeftCorner = origine;                            // contenant l'image
    fenetre.LowerRightCorner = fin;
   
    // CHARGEMENT DES DIFFERENTS BOUTONS
   
    video::ITexture *jouer = driver->getTexture ("menu/accueil/jouer.png");
    video::ITexture *jouerPRESS = driver->getTexture ("menu/accueil/jouerPRESS.png");
    video::ITexture *options = driver->getTexture ("menu/accueil/options.png");
    video::ITexture *optionsPRESS = driver->getTexture ("menu/accueil/optionsPRESS.png");
    video::ITexture *quitter = driver->getTexture ("menu/accueil/quitter.png");
    video::ITexture *quitterPRESS = driver->getTexture ("menu/accueil/quitterPRESS.png");
   
    gui::IGUIButton *jouerB = gui->addButton(core::rect<s32>(176,163,299,529),0, -1);
    jouerB->setImage(jouer); jouerB->setPressedImage(jouerPRESS);
    gui::IGUIButton *optionsB = gui->addButton(core::rect<s32>(574,409,695,725),0, -1);
    optionsB->setImage(options); optionsB->setPressedImage(optionsPRESS);
    gui::IGUIButton *quitterB = gui->addButton(core::rect<s32>(887,654,1024,725),0, -1);
    quitterB->setImage(quitter); quitterB->setPressedImage(quitterPRESS);

   
    while(device->run ())                                             // la boucle de rendu
    {
        driver->beginScene(true, true,video::SColor (0,120,120,120));
        driver->draw2DImage(menuF,origine,fenetre,0,video::SColor (255,255,255,255),true);
       
        if(jouerB->isPressed()){Jactif=1;} // Permet de montrer l'image jouerPRESS
        if(!jouerB->isPressed() && Jactif==1){return 0;}
       
        if(optionsB->isPressed()){Oactif=1;} // Permet de montrer l'image optionsPRESS
        if(!optionsB->isPressed() && Oactif==1){optionsM();}
       
        if(quitterB->isPressed()){Qactif=1;} // Permet de montrer l'image quitterPRESS
        if(!quitterB->isPressed() && Qactif==1){return 0;}
       
        gui->drawAll();
        driver->endScene ();
    }

    device->drop ();
    return 0;
}

menu.h :

#ifndef MENU_H
#define MENU_H

        void optionsM();

#endif

options.cpp :

#include <irrlicht.h>
#include "menu.h"

using namespace irr;

void optionsM()
{
    IrrlichtDevice* device = createDevice(video::EDT_OPENGL,core::dimension2d<u32>(1024,725), 32);
    video::IVideoDriver* driver = device->getVideoDriver ();
    scene::ISceneManager *sceneManager = device->getSceneManager ();
    gui::IGUIEnvironment *gui = sceneManager->getGUIEnvironment();
   
    // CHARGEMENT DE L'IMAGE DE FOND

    video::ITexture *menuF = driver->getTexture ("menu/options/menu.png");  // chargement de la texture
   
    core::position2d<s32> origine;                        // creation position origine
    origine.X = 0;
    origine.Y = 0;
    core::position2d<s32> fin;                        // creation position fin
    fin.X = 1024;
    fin.Y = 725;
    core::rect<s32> fenetre;                              // creation rectangle
    fenetre.UpperLeftCorner = origine;                            // contenant l'image
    fenetre.LowerRightCorner = fin;
   
   
    while(device->run ())                                             // la boucle de rendu
    {
        driver->beginScene(true, true,video::SColor (0,120,120,120));
        driver->draw2DImage(menuF,origine,fenetre,0,video::SColor (255,255,255,255),true);
        gui->drawAll();
        driver->endScene ();
    }

    device->drop ();
    return 1;
}

Donc quand je lance le programme, il m'affiche une fenetre avec mes boutons et lorsque je clique sur le bouton optionsB, il crée une seconde fenetre. Est-il possible de faire afficher la page optionsM dans la première fenetre ?

Merci d'avance.

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
883 membres
1429 sujets
11121 messages
Dernier membre inscrit: Saidov17
20 invités en ligne
Aucun membre connecté
RSS Feed