Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Algo] Pathfinding

Tactical Rpg

    1 novembre 2014 à 2:42:54

    Bonjour,

    je suis dans la réalisation d'un jeu de style RPG Tactique (Disgaea par exemple).

    Jusque la pas trop de soucis mais je suis maintenant confronté a un problème.

    Lors de la sélection d'un personnage sur le plateau de jeu, je veux montrer a l'utilisateur le nombre de case dont il peux se déplacer.

    Lorsque il n'y avais pas d'obstacle tout allai bien, mais si un obstacle est déjà sur une case ça ce complique.

    Pour résumé, comment je fais pour savoir toutes les cases disponible qu'un personnage peu allé en 3 coup.

    J'ai pensé au pathfinding A* mais a priori (j’avoue n'avoir jamais mis en place ce genre d'algo) que le A* c'est pour aller d'un point A à un point B avec le chemin le plus cour, hors dans mon cas je donne un déplacement max a mon personnage. De plus, je ne cherche pas a cherché un unique chemin, je cherche tout les chemins possible en une série de coup limité.

    Voici un exemple de déplacement sans obstacle :

    En rouge le personnage, en vert ce que je veux afficher.

    Maintenant le même mais avec des obstacles :

    Je voudrais savoir si vous auriez des pistes a me donné car la je me trouve un peu bloqué.

    Merci de votre aide.

    • Partager sur Facebook
    • Partager sur Twitter
      4 novembre 2014 à 23:19:47

      Salut,

      Je ne connais pas tellement la programmation pour les jeux (et donc ton langage non plus ^^ ), mais tu peux faire dans ton algo un système d'erreur. Je m'explique :

      • On appelle \(x\) le nombre de cases dont tu peux te déplacer (en l’occurrence, \(x = 3\))
      • Tu calcules tous les chemins possibles, comme dans ton premier exemple.

      (Je suppose que tu connais les coordonnées des obstacles ici.)

      • On appelle \(y\) la variable prenant comme valeur la case sur laquelle tu es (De par ses coordonnées par exemple).
      • Si \(y\) a pris la valeur d'un obstacle, alors \(E = 1\).
      • Si \(E = 1\), alors le chemin n'est pas validé et ne s'affiche donc pas.

      Voilà, c'est tout du moins de cette manière que je commencerais. Je pense que ce qui pourrait t'aider, c'est d'attribuer à chaque case des coordonnées. Cela pourrait t’aider beaucoup pour ton problème, puisque tu pourrais attribuer à \(y\) une valeur variable définissant sa position, en plus des cases sur lesquelles il est allé (en incrémentant de 1 l'ordonnée, il va en haut, etc...)

      • Partager sur Facebook
      • Partager sur Twitter
        5 novembre 2014 à 13:31:38

        Montre nous comment tu faisais dans le cas où il n'y a pas d'obstacle. Je pense que les aménagements à faire pour le 2ème cas seront plus simples à expliquer.

        • Partager sur Facebook
        • Partager sur Twitter

        [Algo] Pathfinding

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown