Historique des modifications - Message

Message #2686

Sujet: Implémentation d'un pathfinder


Type Date Auteur Contenu
Création du message 16-07-2007 15:47:23 izguit
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

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