Et bien pour ça il va falloir se débrouiller un peu elle ne va pas vous tomber tout cru
Je vous donne en passant des optimisations essentielles pour une "bonne" IA
Se cacher
Une bonne IA fait en sorte de prendre le moins de dégâts possibles et pour ça le mieux est tout simplement de se cacher intelligemment au lieu de fuir l’ennemi n'importe comment !
Pour cela la méthode est relativement simple :
-Récupérer toutes les cellules accessibles avec les MP qu'il nous reste (évitez en général de travailler avec getPathLength( . , . ) car cette fonction consomme beaucoup d'opérations)
-Faire de même pour l'adversaire
-Trouver une case accessible ou l'adversaire n'as pas de ligne de vue depuis toutes ses cases accessibles
Je vous laisse vous INSPIRER (pas copier non mais) du code proposé par pierrotdu18
https://leekwars.com/forum/category-7/topic-1922
Vous remarquerez que le code n'est pas au complet mais l'essentiel y est. Attention j'ai bien dit vous inspirez car il reste du travail a faire !
Dépatouillez vous pour vous cacher la où ça vous arrange le plus (le plus loin, le plus proche etc), ne pas se cacher derrière des alliés (qui peuvent bouger ou tout simplement former des zones facile pour l'adversaire), et encore prendre en compte le fait que si vous n’êtes plus a portée de l'adversaire, c'est tout comme si vous étiez cachés (presque...)
Allez ça je vous aide il suffit de rajouter getAliveAllies() en 3eme paramètre de
... lineOfSight(hisCell, myCell, getAliveAllies()) ...
Une fois cette étape faite, il est simple de créer une fonction similaire pour avancer sinueusement (avancer au plus possible tout en restant caché)
Optimiser les attaques en zone
Si ne pas prendre de dégâts, en faire le maximum est tout aussi important ! (Cette partie ne compte évidemment que pour les attaques de zone...)
Pour cela plusieurs méthodes existent (comme pour tout), je vous livre la mienne même si c'est loin d'être la moins gourmande en terme d'opérations elle marche très bien il s'agit de :
si on sait quel ennemi est visé
-récupérer toutes les cases où notre arme lui inflige des dégâts (pour cela il faut récupérer une zone d'une certaine taille autour de l'adversaire)
-enlever toutes celles trop loin pour que vous puissiez tirer dessus, celles ou depuis toutes les cases accessibles, vous n'avez aucune ligne de vue
-calculer les dégâts infligés aux ennemis en tirant sur chaque case de celles restantes
Pour calculer les dégâts totaux il faut ajouter chaque dégât infligé sur chaque personne qu'on touche en tirant sur la case en question (s'aider de getWeaponTargets(...) puis multiplier les dégâts par un coefficient avant de les ajouter au total
Ce coefficient doit (par exemple) être de -1 si c'est un allié qui est touché, 1 si c'est un ennemi, ensuite a vous de jouer avec (on peut considérer que toucher une invoc ennemie est moins important que d'infliger des dégâts a un ennemi, ou affecter un coeff de 0 si l'allié touché est une de nos invocs etc...)
Attention cependant a bien prendre les armures des ennemis en compte ainsi que la distance a la case sur laquelle on tire !
les dégâts que va subir l'ennemi se détermine selon
degats_de_larme*(1+getStrength()/100)*((100-getRelativeShield(ennemi))/100)-getAbsoluteShield(ennemi);
et la réduction de dégats selon la distance via
1-0.5*getCellDistance(celluleSurLaquelleOnTire, getCell(enemi))/rayon
Dernières optimisations
Bien sur il ne faut pas oublier que quand un ennemi n'a presque plus de vie, pas besoin d'utiliser son attaque la plus chère en PT pour l'achever testez donc si une attaque plus faible ne le tue pas a tous les coups.
Gérer les poisons qu'on a sur soit :
Celle la c'est cadeau parce que vous laissez la chercher n'a pas non plus beaucoup d’intérêt :
function getDegatsPoison(){
var dpoison=0;
for(var i in getEffects()){
if(i[0]==13) dpoison+=i[1];
}
return dpoison;
}
Vous voila parés à utiliser la puce antidote !
(De même utilisez la puce libération pour enlever les armures de l'adversaire...)
Vous avez a présent de quoi faire les bases d'une IA assez bonne (vous attendez pas non plus a tout casser avec ces seules optimisations) ! Voici une IA sur ce principe
https://leekwars.com/leek/4771 et franchement elle marche assez bien (pas non plus god tier hein me faites pas dire ce que je n'ai pas dit) au vu le nombre de lignes de codes assez bas (400 avec une optimisation digne d'un singe) ce qui reste vraiment bas devant les meilleurs IA qui dépassent les 4000 lignes (et oui y a des mecs qui sont vraiment chauds))
Dernier point : Allez sur le forum du jeu ! Vous trouverez pleins d'autres astuces etc !
Sur ce : bon jeu !
Citer : Posté le 14/07/2014 19:48 | #
je m'y suis mis, j'ai déjà deux poireaux lvl 8-9 (je me suis fais deux comptes avec deux de mes nombreuses adresses mail), mais je n'ai pas encore trouvé comment rejoindre de team
(mon lvl 8 est boosté en vie et force et a un ration de 9.00 avec 54 victoires pour 6 defaites, mon lvl 9 est boosté en vie et force principalement, mais a quelques points en agilité et a un ratio de 3.33 avec 60 victoires pour 18 défaites)
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed
-mon tuto sur les Str
Mes calto: G25+, G75
Mon minecraft en dévelopement
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Citer : Posté le 14/07/2014 19:53 | #
Désolé mais j'ai décidé de stopper ce jeu, j'aimais bien au début, ça m'amusais mais là j'ai plus beaucoup de temps et ça m'en prend un peu trop chaque jour (4 poireaux), de plus je passe tous les combats sans les regarder tellement ça m'ennuie, ça deviens plus très drôle et je n'améliore pas mon IA (la flemme )
Citer : Posté le 14/07/2014 20:33 | #
Limachi, tu peux faire rejoindre un de tes deux poireaux dans la team via ce lien : http://leekwars.com/team/267
Citer : Posté le 15/07/2014 00:35 | #
je viens d'ajouter mon wae a votre équipe, c'est celui avec le plus de défaites, mais c'est aussi le plus travaillé (la preuve par la manière ou j'ai reussi a démonter un "domingo" en mode diabolique http://leekwars.com/fight/805448 )
Ajouté le 16/07/2014 à 01:53 :
je me suis amusé a faire un IA bavarde et qui sort des répliques en fonction des situations (lvl1, je teste la vie pour les phrases de fin): http://leekwars.com/report/928343
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed
-mon tuto sur les Str
Mes calto: G25+, G75
Mon minecraft en dévelopement
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Citer : Posté le 16/07/2014 09:01 | #
Le seul inconvénient c'est que tu perds tes précieux PT pour tirer ce qui peut être assez dangereux.
Citer : Posté le 16/07/2014 13:14 | #
les phrases sont situationnelles, dans 95% de mes combats elles ne m'ont pas gêné (je pars du principe que les deux premiers tours sont safe, je lance un taunt si l'ennemi ne peut pas m'attaquer au prochain tour, mais moi oui, et enfin quand il passe en dessous de la barre des 40 pv, il me reste deux tirs de pistolet qui tuent presque a coup sur)
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed
-mon tuto sur les Str
Mes calto: G25+, G75
Mon minecraft en dévelopement
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Citer : Posté le 17/07/2014 00:43 | #
Sympa, j'aurai juste mis de majuscules au début des phrases
Ajouté le 18/07/2014 à 19:49 :
J'aimerai savoir qui joue encore à LW, que je fasse du tri dans les poireaux des compositions.
Citer : Posté le 18/07/2014 19:51 | #
S'il y en a qui sont inactifs trop longtemps sans prévenir on les déclasse des compos.
Citer : Posté le 18/07/2014 20:00 | #
Yup, je vais juste laisser la master
Citer : Posté le 18/07/2014 20:56 | #
J'attend d'améliorer mon IA avant de reprendre les combats d'équipe, je vous préviendrai.
Citer : Posté le 18/07/2014 21:25 | #
Yup, je vais juste laisser la master
Comment ça ? Tu veux supprimer les autres compos ??
Par contre c'est vrai que comme on commence à progresser on va pouvoir établir une stratégie d'équipe pour la master et faire un bon truc.
Citer : Posté le 18/07/2014 21:31 | #
Je vois que je suis dans la master, mais n'hésitez pas à me remplacer par quelqu'un de plus actif
La rédaction de ma mémoire me prend du temps - et me grille des neurones aussi. La soutenance est prévue le 15 septembre à 14h !
Vitesse des fonctions en Basic Casio | 7 days CPC | Casio Universal Wiki | Tutoriel Basic Casio
>>> Give me a click Brother <<< >>> Teste mon générateur de mots nouveaux <<<
>>> Random Youtube Video <<<
Citer : Posté le 19/07/2014 07:27 | #
Pour ma part, je n'ai pas encore travaillé sur une vraie IA de coop, je suis occupé a travailler sur une IA de lvl 21 utilisant les info du terrain (je viens tout juste d'atteindre le lvl 21)
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed
-mon tuto sur les Str
Mes calto: G25+, G75
Mon minecraft en dévelopement
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Citer : Posté le 19/07/2014 16:24 | #
première fois que j'arrive a me faire les 4 IA de base en mode test (au 64ème tour, j'ai bien cru que j'allais rater encore une fois ) http://leekwars.com/report/805448
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed
-mon tuto sur les Str
Mes calto: G25+, G75
Mon minecraft en dévelopement
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Citer : Posté le 04/09/2014 00:51 | # | Fichier joint
salut tout le monde,
!Ceci n'est pas un troll / montage ni rien¡
devinez sur qui je tombe VRAIMENT hasard ?
et y a t'il une equipe planète casio ?
Je suis de l'autre coté de la manche maintenant. Yay.
Citer : Posté le 04/09/2014 07:58 | #
Et oui mais a peu pres personne nest dessus eepuis un ptit bout de temps
-Mon Fall Down
-Mon jeu de mains
-Mon starwars
-Mon dessinatout
-Mon niaiseux version 2.0
-Mon niaiseux version 3.0
-Inferno
-Mon super labyrinthe (en cours)
-Mon call of duty en 3D
-Casion (avec Az)
Citer : Posté le 04/09/2014 08:17 | #
Tu sais comment on rejoints ?
et au pire si la team est aussi déserte que planet-casio.com/En on peux toujours en faire un e neuve
Je suis de l'autre coté de la manche maintenant. Yay.
Citer : Posté le 04/09/2014 12:26 | #
Je passe de temps en temps, mais avec les vacances puis le concours je ne m'investis plus autant personnellement...
Mais il y a toujours quelques actifs :).
Citer : Posté le 04/09/2014 12:42 | #
Ca m'intrigue vraiment : Pierrotll t'a mis une raclée ou pas?
Jouez à 6 sur une seule calto : Curve Fever
Un die and retry qui vous fera bieeeen rager Test Andropov
un très bon sokoban
le seul vrai jeu de foot en basic : FIFA 12
Ca c'est ce que j'appelle un jeu de reflexion jewel master
Qui vaincra l'intelligence artificielle de cet othello
Le célèbre pacman
Et tant d'autres BTL's games
Le jeu du mois de Novembre et award du jeu le plus dur de l'année 2013 MultiTask, testez-le
Citer : Posté le 04/09/2014 16:30 | #
Bah en fait c'est moi qui l'ai descendu
Je suis de l'autre coté de la manche maintenant. Yay.
Citer : Posté le 06/09/2014 05:20 | #
Je passe de temps en temps, mais avec les vacances puis le concours je ne m'investis plus autant personnellement...
Je crois que j'en fais partie, j'ai du laisser en plan une IA de 500 lignes pas finie a cause de la rentrée et du concours
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed
-mon tuto sur les Str
Mes calto: G25+, G75
Mon minecraft en dévelopement
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)