#0 

01-03-2007 10:59:07

cryo25
Petit nouveau
Date d'inscription: 26-02-2007
Messages: 5

bonjour a tous!!

Voila, je suis dans la création d'un petit jeu FPS en open source et j'aurai une ou deux questions a propos du menu:

tout d'abord, mon projet se presente sous la forme suivante:

un fichier MAIN.CPP:

Code:

#include "StdAfx.h"



// le jeu
class CJeu Game;



int main(int argc, char* argv[])
{
    // Initiation game
    Game.Init();
    printf("chargement reussit");
    Game.Chargement();
    
    Game.Prepare();

//boucle
    while(Game.device->run())
    {
        Game.MainLoop();
    }

    
    Game.Finish();

    return 0;
}

ensuite vient un fichier JEU.H regroupant la class CJeu : public IEventReceiver
enfin, un fichier JEU.CPP regroupant les fonctions de la class CJeu.

Jusque la pas de probleme, mon jeu compile, tout va bien!!

par contre, comment puis-je implanter un menu? dois-je créer une nouvelle class Menu?Mon fichier MAIN.CPP doit peut etre etre modifié? je souhaiterai aussi acceder au menu lors de la mise en pause par le joueur, commen dois-je m'y prendre?

Je ne souhaite pas un code complet, simplement une piste qui me mettrait sur la voie, je cherche sur le forum officiel et j'ai du mal a comprendre l'anglais (bien que j'ai des notions et que je m'efforce de comprendre).....

Merci par avance de vos réponses!!

Hors ligne


#1 

01-03-2007 14:16:16

dark calculator
Abonné
Date d'inscription: 25-02-2007
Messages: 153

salut

Je sais pas si les autres ont compris mais moi pas vraiment :

Qu'est ce qu'il y a dans ta classe ? tu creer l'engine, le gui ... ?
Pourquoi la faire dérivé IEventReceiver ?

Personnelement je connais le c++ mais je ne sais pas trop comment l'utiliser pour faire que de l'orienté objet comme apparament tu fait. Donc mes interrogations viennent de la.

Sinon pour faire un menu tu creer le gui :

Code:

video::IVideoDriver* driver = device->getVideoDriver();
IGUIEnvironment* env = device->getGUIEnvironment();

Puis ensuite tu ajoute fenetre bouton, texte...
Le mieu etant de suivre le tuto de user interface et  meme si tu comprend pas trop l'anglais tu peut toujours lire le code et l'adapter

Pour quand le joueur mets en pause c'est une autre histoire bien plus complexe, tout depend si c'est le meme menu et tout mais fait deja le menu de debut apres tu verra wink

dark calculator

Dernière modification par dark calculator (01-03-2007 14:17:02)

Hors ligne


#2 

01-03-2007 18:13:20

cryo25
Petit nouveau
Date d'inscription: 26-02-2007
Messages: 5

Merci pour ton aide, je vai commencer par le début, c'est a dire le menu, ensuite, je verrai plus tard pour le menu pause du jeu!! Irrlicht est tellement facile a prendre en main (j'avais essayer avec Ogre3d avant, l'angoisse!!) que j'ai envie de tout faire en meme temps! Je vai calmer mes neuronnes 5 minutes et gravir tout les echellons un a un avant d'attaquer autre chose!

Merci encore!!wink

Hors ligne


#3 

01-03-2007 18:40:39

Jerry Kan
Habitué
Date d'inscription: 21-11-2006
Messages: 265

en fait, tu doit creer une classe qui hérite  public de IEventReceiver


dans le constructeur de cette classe (mais tu peux le faire ailleur hein ..), tu met :

device->setEventReceiver(this); 

et dans cette classe tu crée une méthode :

virtual bool OnEvent(SEvent event)

cette méthode sera appellé a chaque fois qu'un évènement gui aura lieu, et recevra la nature de l'évènement en paramètre, dans cette méthode, tu fait donc un gros switch sur la nature de l'évènement



apres, il te reste simplement a creer des objet de la graphical user interface, il seront automatiquement ajoutés dans la le module de récupération des évènements

Hors ligne


#4 

01-03-2007 18:46:22

Jerry Kan
Habitué
Date d'inscription: 21-11-2006
Messages: 265

ah j'oubliais,
quand tu crée un bouton, un ascenceur, ou n'importe quoi dans la gui, tu récupere le pointeur vers la gui avec


IGUIEnvironment* env = device->getGUIEnvironment();


puis tu crée ton objet en lui donnant un numéro unique :

guienv->addButton(rect<s32>(10,610,100,640), 0, 101, L"Quit");


et dans ta Classe
class MyEventReceiver : public IEventReceiver

tu va dans ta fonction
virtual bool OnEvent(SEvent event)

et tu as ton switch qui comporte un truc du style :

Code:

case EGET_BUTTON_CLICKED:
      {
      if (id == 101)
        {
          device->closeDevice();
          exit(1);
        }

      if (id == 102)
        {
          INTF->createToolBox();                   
          return true;
        }

      if (id == 103){

n'hésite pas a aller voir dans les exemples fournis avec irrlicht, ils sont tres bien détaillés

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
881 membres
1426 sujets
11116 messages
Dernier membre inscrit: Bidule
11 invités en ligne
Aucun membre connecté
RSS Feed