OVH Cloud OVH Cloud

algorithme

2 réponses
Avatar
maxime_phan
Bonjour, j'espere poster sur le bon forum.
J'=E9crit un jeu de strat=E9gie au tour par tour en python.
c'est un jeu ou on =E0 plusieurs unit=E9s qui se d=E9placent, attaquent...
chaque unit=E9 =E0 des points de d=E9placement (par exemple 4 points
permet de se d=E9placer sur 4 cases)
une case coute 1 point de d=E9placement mais peut couter plus, si on se
d=E9place sur de l'eau par exemple.
pour l'instant, mon unit=E9 se d=E9place de case en case avec la souris.
c'est contraignant parce que par exemple si on veut se d=E9placer en un
lieu =E0 4 cases de distance, il faut cliquer 4 fois sur la souris (case
par case).
J'aimerai faire un algorithme qui permet d'afficher toutes les cases
possibles selon le terrain et le nombre de point de d=E9placement
disponible, puis, apres avoir cliqu=E9 sur la case ou je veux aller,
l'unit=E9 se d=E9place automatiquement sur celle-ci en passant par les
cases interm=E9diaires possible.
en gros c'est rechercher les cases possible + pathfinding
J'imagine que cela a =E9t=E9 fait 1000 fois. quelqu'un connaitrait-il un
endroit ou je puisse trouver des codes d'exemple en python la dessus?
Merci

2 réponses

Avatar
William Dode
On 02-05-2006, wrote:
Bonjour, j'espere poster sur le bon forum.
J'écrit un jeu de stratégie au tour par tour en python.
c'est un jeu ou on à plusieurs unités qui se déplacent, attaquent...
chaque unité à des points de déplacement (par exemple 4 points
permet de se déplacer sur 4 cases)
une case coute 1 point de déplacement mais peut couter plus, si on se
déplace sur de l'eau par exemple.
pour l'instant, mon unité se déplace de case en case avec la souris.
c'est contraignant parce que par exemple si on veut se déplacer en un
lieu à 4 cases de distance, il faut cliquer 4 fois sur la souris (case
par case).
J'aimerai faire un algorithme qui permet d'afficher toutes les cases
possibles selon le terrain et le nombre de point de déplacement
disponible, puis, apres avoir cliqué sur la case ou je veux aller,
l'unité se déplace automatiquement sur celle-ci en passant par les
cases intermédiaires possible.
en gros c'est rechercher les cases possible + pathfinding
J'imagine que cela a été fait 1000 fois. quelqu'un connaitrait-il un
endroit ou je puisse trouver des codes d'exemple en python la dessus?


Si tu veux vraiment afficher toutes les cases possibles, le plus simple
c'est un programme recursif, ensuite tu donnes des notes à chaque chemin
pour préférer celui le plus intéressant et éliminer au fur et à mesure
les chemins qui arrivent au même endroit à un coût supérieur.
A mon avis tu vas passer plus de temps à rechercher un algo existant
qu'a l'écrire directement en fonction de tes besoins...

Ce qui est beaucoup plus compliqué par contre et qui mérite de trouver
un algo existant c'est si tu fait l'inverse, cad déterminer le meilleur
chemin entre deux points _sans les essayer tous un par un_...

--
William Dodé - http://flibuste.net

Avatar
Guillaume Bouchard
William Dode wrote:
Ce qui est beaucoup plus compliqué par contre et qui mérite de trouver
un algo existant c'est si tu fait l'inverse, cad déterminer le meilleur
chemin entre deux points _sans les essayer tous un par un_...


Pour cela il y a Dijkstra, relativement simple à implanter quand on le
connait (mais cette homme resteras toujours proche de l'incantation
divine a mes yeux pour avoir pondu un truc aussi beau :)

http://fr.wikipedia.org/wiki/Algorithme_de_Dijkstra

Le plus dur avec Dijkstra c'est d'être capable de simplifier le graph
que tu crée. Cela ne sert à rien de faire mouliner l'algo sur une map de
200x200 si ton perso ne peut au maximum que se deplacer de 6 cases.

Good luck.

--
Guillaume.