Le 18 novembre 2016 à 00:12:45 Linktothesky a écrit :
Merci à vous deux pour vos avis.
Pour la gestion de la carte, je pensais pas que ce serait si compliqué :
(C ke de la theorie
)
j'ai édité une carte via le logiciel Tiled Map Editor
je l'ai intégré dans une classe Map.
Comme la carte est composée de tuiles (des carrés quoi) de 157 x 123
Je pensais me faire bien chier avec une matrice
{0,0,0,0}
{0,0,0,0}
{0,0,0,0}
{0,0,0,0}
157 par 123.
Dans cette matrice , on aurait des "1" à l'endroit où l'ennemi pourrait potentiellement passer.
J'aurai une Classe Mère 'Ennemi'
et puis deux ou trois filles 'mages', 'fantassins', 'cavaliers' avec des caractéristiques différentes.
Mais mon expertise s'arrete la 
Cette vidéo explique super bien l'algo A*, tu verras que ce n'est pas si compliqué : https://www.youtube.com/watch?v=-L-WgKMFuhE
Tu pourrais éventuellement modifier la valeur des coups des cases si tu veux par exemple que les ennemis passent par un chemin pavé en priorité (tu diminues la valeur de la case), ou qu'ils tendent à éviter un terrain désavantageux (tu augmentes la valeur).
Donc tu aurais une classe pathfinding qui serait incluse dans ta classe IA. Pour l'IA, d'abord tu devrais faire choisir le type de mouvement de l'ennemi en fonction des infos sur la map. Tu construirais une liste d'action avec chacune une valeur plus ou moins élevée et tu choisis de façon semi aléatoire parmi les actions. La valeur de ces actions serait plus ou moins élevé en fonction des informations que tu as (distance des héros de l'ennemi, classe des héros, leur état, les sorts de l'ennemi, etc...)
Perso je ferais l'IA de cette manière :
Si par exemple ton ennemi à un héro tank assez proche de lui, mais avec un archer héro avec peu de vie un peu plus loin derrière le héro tank, alors l'algo de ton IA lancerait le pathfinding pour évaluer la distance entre l'ennemi et le héro tank, puis l'ennemi et le héro archer. Tu vois que ton ennemi est à distance 10 du tank, et 15 de l'archer.
Donc dans ta liste d'action tu aurais :
-attaquer l'archer blessé
-attaquer le tank plein de vie
Puis tu attribues une valeur à ces actions, en initialisant cette valeur à 100. L'action a la valeur la plus élevé à plus de chance de passer en priorité :
-attaquer l'archer blessé, valeur = 100 - 15 = 85
-attaquer le tank plein de vie, valeur = 100 - 10 = 90
Donc ton ennemi voudra plutôt attaquer le tank, mais dans ton algo tu vérifierais aussi l'état des héros, et tu vois que le tank est un tank, et que sa vie est pleine. De plus l'archer est blessé, et c'est un archer :
-attaquer l'archer blessé, valeur = 85 + 10 (c'est un archer) + 5 (il est blessé) = 100
-attaquer le tank plein de vie, valeur = 90 - 10 (c'est un tank) - 5 (plein de vie = 75
Si ton ennemi est aussi blessé et qu'il a une potion, tu pourrais aussi avoir en plus dans ta liste d'action :
-Utilisation de potion = 100 + 10 (ennemi blessé) = 110
ou si il n'a qu'une égratignure :
-Utilisation de potion = 100 - 50 = 50
Mais avant de te lancer dans la programmation, je te conseille de faire un diagramme UML pour que tu sois bien clair que tu ne t'embrouilles pas, sinon tu risques de te décourager si c'est le bordel dans ton code 