#1 

01-09-2008 09:00:34

bestben
Membres
Date d'inscription:
Messages: 133
IP: 79.80.176.163
Courriel

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


Hors ligne


#2 

01-09-2008 11:44:28

Perceval
Membres
Avatar de Perceval
Date d'inscription:
Messages: 105
IP: 90.32.151.144
Courriel

A tout hasard, sans me pencher plus sur ton code, je remplacerais le || de ta condition de boucle par un &&.

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


Hors ligne


#3 

01-09-2008 13:01:06

bestben
Membres
Date d'inscription:
Messages: 133
IP: 79.80.176.163
Courriel

Non ça marche pas
mais merci quand même
Ma boucle est infini mais je vois pas pourquoi puisque les conditions sont possible


Hors ligne


#4 

26-11-2013 11:51:12

mayya
Membres
Date d'inscription:
Messages: 2
IP: 175.110.77.164
Courriel

je voudrait savoir si certain on tester Irrnet et ce qu'ils en ont pensé
Car moi perso j'ai voulu l'essayer mais c'était complètement bugué (plusieurs version)
Ou si vous connaissé une bonne bibliothèque résaux facile d'utilisation (ou plutôt pas trop dur ^^)
Merci pour vos réponse


mayya

Hors ligne


#5 

26-11-2013 18:02:42

Copland
Modérateurs
Date d'inscription:
Messages: 657
IP: 90.38.247.187
Courriel  Site web

Mayya,
Merci de créer un nouveau sujet pour tes questions car ici tu pollues des posts qui n'ont rien à voir !


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


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
153 invités en ligne
membre en ligne: -
RSS Feed