#0 

01-03-2011 02:47:08

mmorpglefilm
Abonn
Lieu: la galaxie UDFy-38135539
Date d'inscription: 18-05-2010
Messages: 162
Site web

Bonjour, je viens de continuer mon jeu (j'avance de jour en jour !!) est la je bloque pour crer un systme dvnement.
En raliter je viens de crer une classe spcialement pour pouvoir piloter tous les mesh de mon jeu, sauf quand je fais :

Event Evenement(m_device, m_VaisseauNode, m_Position, m_rotation, m_Aceleration, m_vitesse);
m_device->setEventReceiver(&Evenement);

Bam un jolie "negativity.exe" cess de fonctionner...

Voila ma class pour crer un gestionnaire dvnement :

Code c++ :

#include "Event.h"

Event::Event(irr::IrrlichtDevice *device, irr::scene::IAnimatedMeshSceneNode *Mesh, irr::core::vector3df Posi,
int RotateSpeed, int Speed, int VitesseMax) : m_device(device), m_Mesh(Mesh), m_Posi(Posi),
m_RotateSpeed(RotateSpeed), m_Speed(Speed), m_VitesseMax(VitesseMax)
{
    m_Mesh = Mesh;
    m_device = device;
}

int i3;

bool Event::OnEvent(const irr::SEvent &event)
{


    if (event.EventType == irr::EET_KEY_INPUT_EVENT)
    {
        //!OMFG VOUS AVEZ APPUYER SUR UNE TOUCHE !!!
    }
    return false;
}



La class :

Code c++ :

#ifndef EVENT_H_INCLUDED
#define EVENT_H_INCLUDED

#include <irrlicht.h>
#include <iostream>
#include <windows.h>

class Event : public irr::IEventReceiver
{
    public :

    Event(irr::IrrlichtDevice *device, irr::scene::IAnimatedMeshSceneNode *Mesh, irr::core::vector3df Posi,
    int RotateSpeed, int Speed, int VitesseMax);

    virtual bool OnEvent(const irr::SEvent &event);

    irr::scene::IAnimatedMeshSceneNode *Mesh;

    private :

    irr::IrrlichtDevice *m_device;
    irr::scene::IAnimatedMeshSceneNode *m_Mesh;
    irr::core::vector3df m_Posi;

    int m_RotateSpeed, m_Speed, m_VitesseMax, m_VitesseEnCour;
};

#endif // EVENT_H_INCLUDED



Dsoler de ne pas donner plus de code de mon jeu , j'ai peur qu'elle qu'un me copie tous se que j'ai fais pendant des mois...

Je sais vraiment pas ou est l'erreur.

Qu'elle qu'un peut-il m'aider ?

Hors ligne


#1 

01-03-2011 14:14:10

thesus
Membre
Date d'inscription: 11-08-2009
Messages: 19
Corrections: 1

Debug ton projet et regarde quelle ligne a plante.

Je suppose que tu ne sait pas utiliser le mode Debug (mais a s'apprend vite) donc je vais faire un petit tuto :

sous CodeBlock :
- ajoute un point d'arret sur une ligne (clique cot du n de ligne, a fait un point rouge, ou clique droit "Add breakpoint"), dans ton cas ce sera sur ton constructeur et/ou sur la fonction OnEvent (on peut en mettre autant que l'on veut et n'importe o).

- on lance le mode Debug (menu "Debug" puis "Start" ou plus simplement F8)

- ton programme va se lancer puis va s'arreter au point d'arret, pour qu'il avance il faut cliquer sur "Debug" "Next line" (ou l'icone correspondant dans la barre d'outils).

L'interet de ce mode est de savoir quelle ligne bloque, et surtout l'tat des variables, pour les afficher il faut aller sur "Debug" "Debugging windows" "Watches"
Les pointeurs ne s'affichent pas directement, pour savoir ce qu'ils contiennent clique droit sur la variable (dans la fenetre Watches), puis "Deference pointer ???" (le reste est de l'anglais basique, donc tu devrais comprendre).

Si aprs a tu ne peut toujours pas rsoudre ton problme, repost ici (en disant quelle ligne bloque, et il est possible que a ne bloque pas au niveau de l'event, dans ce cas la, met le point d'arret sur le main (c'est long, mais radical quand on ne sait pas quelle ligne fait bloquer le programme).


PS : Si j'ai expliquer tout a c'est que le mode debug est une des choses les plus importantes de ton IDE, sans a on ne peut pas faire de projets complexe.

PPS : Pour entrer dans une fonction, c'est "Step Into".

Hors ligne


#2 

11-03-2011 16:52:31

mmorpglefilm
Abonn
Lieu: la galaxie UDFy-38135539
Date d'inscription: 18-05-2010
Messages: 162
Site web

Je fais se que tu dit mes sa ne marche pas, quand je fais "debug>start" le programme se compile mes se lance pas.
Et je sur que c'est bien la ligne "m_device->setEventReceiver(&Evenement);" qui ne marche pas.

Alors j'ai fais :

if(m_device->getEventReceiver() == 0)
    m_device->setEventReceiver(&Evenement);
else
    std::cout<<"Erreur : il y a deja un event receiver actif."<<std::endl;

pour savoir s'il y a dj un event receiver actif, se qui crait des bug, alors je voudrais savoir s'il y a une fonctions pour dsactiver tous les gestionnaires dvnement de la scne, j'ai dj tester se truc mes sa marche pas....

m_device->setEventReceiver(0);

Qu'elle qu'un peut-il m'aider...

Hors ligne


#3 

15-03-2011 16:55:04

Hawk
Membre
Lieu: Wissous
Date d'inscription: 08-11-2008
Messages: 91
Site web

Sans plus d'information comme a, je dirais que a pourrait tre un problme de porte.

Code c++ :


void une_certaine_mthode()
{
blabla ....
Event Evenement(m_device, m_VaisseauNode, m_Position, m_rotation, m_Aceleration, m_vitesse);
m_device->setEventReceiver(&Evenement);
...
}



Avec cette manire de crer ton Event, ce dernier est dtruit la fin de "une_certaine_mthode", et donc s'il est utilis ailleurs (si ta boucle de jeu est en dehors de cette mthode), ben tu vas taper sur un pointeur vers un objet qui n'existe plus.
Mon conseil, c'est de crer ton objet avec new, et de stocker le pointeur quelque part pour faire un delete la fin de ton programme.

Code c++ :


Event* Evenement = new Event(m_device, m_VaisseauNode, m_Position, m_rotation, m_Aceleration, m_vitesse);
m_device->setEventReceiver(Evenement);

Hors ligne


#4 

16-03-2011 00:21:10

mmorpglefilm
Abonn
Lieu: la galaxie UDFy-38135539
Date d'inscription: 18-05-2010
Messages: 162
Site web

Merci sa fonctionne !!!

Mme si je peut plus utiliser ma camera, mes je vais m'en passer, mes sa serait quand mme utile de lavoir.

Wtf, ma touche "^^" crit deux fois un appuient qu'une fois !!!

Hors ligne


Options Liens officiels Caractristiques Statistiques Communaut
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propuls par FluxBB
Traduit par FluxBB.fr
Analys par
872 membres
1423 sujets
11109 messages
Dernier membre inscrit: Glider
11 invits en ligne
Aucun membre connect
RSS Feed

[ Gnre en 0.021 sec., 10 requtes excutes ]