Historique des modifications - Message

Message #4531

Sujet: Créer système de PathFinding


Type Date Auteur Contenu
Création du message 01-09-2008 09:00:34 bestben
Bonjour,
j'essaie de créer un système de PathFinding mais je patauge lol
J'ai commencé à regarder un peux les algorithmes (surtout A*) et j'ai réussi à écrire un bout de code mais j'ai une boucle infini et je ne sais pas d'où viens le problème
voici le code :
//PathFinding.h
#include <iostream>
#include <irrlicht.h>

class PathFinding
{
    public:
    PathFinding(irr::scene::ISceneManager* smgr);
    void FindPath(irr::scene::ISceneNode* StartPoint, irr::scene::ISceneNode* EndPoint);

    private:
    irr::scene::ISceneManager* m_smgr;
    irr::scene::ISceneNode* m_StartPoint;
    irr::scene::ISceneNode* m_EndPoint;
    irr::scene::ISceneNode* m_PointBuffer;
    irr::core::list<irr::scene::ISceneNode*> RootChild;
    irr::core::list<irr::scene::ISceneNode*>::ConstIterator debut;
    irr::core::list<irr::scene::ISceneNode*>::ConstIterator fin;
    irr::core::line3df Distance;
    int OldDistance;
    const irr::c8* BestNode;
};

 //PathFinding.cpp

#include "PathFinding.h"

using namespace std;

PathFinding::PathFinding(irr::scene::ISceneManager* smgr)
{
    m_smgr = smgr;
};

void PathFinding::FindPath(irr::scene::ISceneNode* StartPoint, irr::scene::ISceneNode* EndPoint)
{
    m_StartPoint = StartPoint;
    m_EndPoint = EndPoint;
    RootChild = m_smgr->getRootSceneNode()->getChildren();
    debut = m_smgr->getRootSceneNode()->getChildren().begin();
    fin = m_smgr->getRootSceneNode()->getChildren().end();
    BestNode = m_StartPoint->getName();


    while(debut != fin || m_EndPoint->getName() != BestNode)
    {


        Distance.start = m_StartPoint->getPosition();
        Distance.end = (*debut)->getPosition();

        if(OldDistance > Distance.getLength() && (*debut)->getID() != 3)
        {
            OldDistance = Distance.getLength();
            BestNode = (*debut)->getName();
        };

        if(debut != fin)
         { debut++; }

        if(debut == fin && m_EndPoint->getName() != BestNode)
        {
            debut = m_smgr->getRootSceneNode()->getChildren().begin();
            fin = m_smgr->getRootSceneNode()->getChildren().end();
            while((*debut)->getName() != BestNode)
            {
                debut++;
            };
            m_StartPoint = (*debut);
            debut = m_smgr->getRootSceneNode()->getChildren().begin();
            fin = m_smgr->getRootSceneNode()->getChildren().end();
        };

    };
};

Pour info j'ai attribué un Id de 3 à la camera pour pas qu'elle soit comptée
Si vous aviez des conseilles sa m'arrangerais
Merci d'avance

Retour

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
162 invités en ligne
membre en ligne: -
RSS Feed