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:
#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
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 :
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
dark calculator
Dernière modification par dark calculator (01-03-2007 14:17:02)
Hors ligne
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!!
Hors ligne
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
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 :
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