Historique des modifications - Message

Message #2686

Sujet: Implémentation d'un pathfinder


TypeDateAuteurContenu
Création du message16-07-2007 15:47:23izguit
Salut tout le monde,
La lib de pathfinding que je code commence à ressembler à quelque chose (enfin à devenir utilisable)
Pour l'instant il fait :
  • Résolution de chemin par l'algo A* dans un graphe 2D (une matrice)
  • Coûts de déplacement modifiables (si vous voulez que telle ou telle case soit de l'herbe, sable, bitume ou autre, l'algo en tiendra compte)


A venir (peut etre) :
  • Résolution dans un univers 3D ? (je vois l'intéret que pour les simulateurs de vol/spatiaux)
  • threads? Ca serait sympa même si pour l'instant je le trouve pas lent.


En gros à utiliser ca donne ça :

#include <yasp.h>
#include <iostream>

int main()
{
    // First, we create the graph
    yasp::CGraph *world;
    world = new yasp::CGraph(20);

    // Then, we make some squares unwalkable...
    for (int y = 1 ; y < 6 ; y++)
        world->getSquare(4,y)->setState(yasp::CSquare::ST_UNWALKABLE);

    for (int x = 1 ; x < 4 ; x++)
        world->getSquare(x,4)->setState(yasp::CSquare::ST_UNWALKABLE);

    // ... and we make some others slow
    for (int y = 3 ; y < 8 ; y++)
        world->getSquare(2,y)->setMoveCost(40);

    // We call the finder and give him the graph...
    yasp::CPathFinder aStarFinder(world);
    // And we solve it.
    yasp::CPath shortestPath = aStarFinder.find(world->getSquare(2,2),world->getSquare(8,8));

    std::cout << "Chemin choisi :" << std::endl;

    for(int i = 0 ; i < shortestPath.getSize() ; i++ )
        std::cout << "X = " << shortestPath.getSquareCoords(i).x << " et Y = " << shortestPath.getSquareCoords(i).y << std::endl;

    return 0;
}

Mais bon je sais pas si c'est utilisable partout. Comment vous voudriez que ça se présente pour l'utiliser dans votre projet? L'utilisation de matrice limite peut-être les possibilités?

plouf

Retour

OptionsLiens officielsCaractéristiquesStatistiquesCommunauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1441 sujets
11339 messages
Dernier membre inscrit: Saidov17
319 invités en ligne
membre en ligne: -
RSS Feed