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 18/05/2015 21:36 | #
Il se rapproche pas mal du JavaScript, d'ailleurs le nom lui ressemble.
Pong400
PierrePaCiseaux (CP400)
Les Triangles
Menu
ASCII
Nombres premiers
Citer : Posté le 18/05/2015 22:38 | #
C'est un dérivé du Javascript : la syntaxe est la même, seules s'ajoutent les fonctions spécifiques.
Citer : Posté le 19/05/2015 18:36 | #
Au temps pour moi
il y a après une sorte d'API pour le leekScript
black wolf Invité
Citer : Posté le 08/05/2016 18:11 | #
hello je suis niv 2 et je me fais n***** j'ai 14 défaite 1 matche nul et 0 victoire )j'utilise le script de base mais il m'indique que la commande move away(enemy) est utilisable a partir du level5 le probleme c'est que cette commande n'est inscrite dans le scripte de mon IA :aie2: Pouvais vous m'aider ??? je m'apelle blackwolf et mon poireau ragnorock. Sil vous plait !!! aidez moi !!!!Merci d'avance !!
Citer : Posté le 22/10/2018 18:30 | #
Loin de moi l'idée de vouloir déterrer un topic ! (Shame !)
Y en a qui y joue encore ? Dans mes études d'informatique, on est plusieurs à s'y être remis. J'ai redéterré mon vieux marmotti, qui entre temps est monté niveau 60 en se faisant agresser ^^. J'ai refais une IA, au lieu de juste copier l'IA basique de Darky proposée plus haut.... j'étais vraiment nul en progra haha pas foutu de faire ma propre IA à l'époque :') Bref... Qui pour un petit défi ?
Citer : Posté le 26/10/2018 11:21 | #
Salut, je me suis remis au jeu après ma découverte il y a quelques années, où je fut rebuté par le fait que certaines fonctions n'étaient pas débloquées de base et par mon faible niveau de programmation à l'époque.
J'ai recommencé hier, grâce à ce magnifique up (merci Marmotti ) et je m'éclate !
Je suis Niveau 11, je me suis fait un petit mage, j'ai bien balancé ses stats et je défonce la plupart des poireaux de mon niveau (même si je sens que ça ne va pas durer )
J'ai fait en sorte que mon poireau s'approche de l'ennemi jusqu'à ce qu'il puisse le toucher avec Spark ou le Gun de base (je n'ai pas acheté d'autres armes), ensuite il s'éloigne avec les MP restant.
S'il se trouve en dessous de 80 LP, il régénère avec Bandage.
Et il fait un petit taunt à la mort de l'ennemi (ça ne sert à rien...)
Voici une belle bataille de poireau (le mien c'est Timothe) :
https://leekwars.com/fight/26885750
Cordialement, KikooDX
Ajouté le 26/10/2018 à 18:22 :
En une journée, le code a bien évolué, je suis maintenant niveau 22.
Ajouté le 27/10/2018 à 17:41 :
Je suis tombé sur l'IA proposé dans le premier post
https://leekwars.com/report/26903989
Citer : Posté le 27/10/2018 19:38 | #
Ça me fait penser qu'il faut que je reprogramme une IA
Actuellement mes poireaux sont à poil
https://leekwars.com/leek/2050
https://leekwars.com/leek/9217
https://leekwars.com/leek/34602
Citer : Posté le 27/10/2018 19:43 | #
Wow, en effet tu n'es pas du même niveau xD
Citer : Posté le 31/10/2018 23:14 | #
Non pas du tout effectivement
Je débute juste, pour de potentiels intéressés sachez que le système des fonctions déblocables avec le niveau n'est plus !
Et aussi, à partir du niveau 35 vous allez commencer à vous faire défoncer en boucle.
La solution : http://leekwarswiki.net/index.php?title=Le_cache-cache
Je suis niveau 48, je n'attend plus que le Bulbe pour commencer à m'amuser !
Citer : Posté le 31/10/2018 23:15 | #
Les invocations, ça sert à rien avant le niveau 150
Enfin, disons que ça tape pas fort, et que c'est facile à ignorer x)
Citer : Posté le 31/10/2018 23:18 | #
Les invocations, ça sert à rien avant le niveau 150
Enfin, disons que ça tape pas fort, et que c'est facile à ignorer x)
Peut-être, mais ça m'amuse
J'ai un emplacement de chip vide, et un healer automatique c'est pas mal, ça me permettra de rebalancer mes stats (je suis plutôt défensif actuellement)
Citer : Posté le 31/10/2018 23:32 | #
wow je connaissais pas du tout ce jeu il a l'air cool je vais tester ça
Citer : Posté le 31/10/2018 23:38 | #
wow je connaissais pas du tout ce jeu il a l'air cool je vais tester ça
Il est génial
D'ailleurs je viens de voir que le site a une bêta ouverte !
https://beta.leekwars.com/
C'est moins stable, mais c'est bôôôôôôôôôôô !
Citer : Posté le 31/10/2018 23:44 | #
c'est génial d'avoir des genre de jeu bien comme ça qui abandonne pas quand il y a des joueurs dessus et qui se renouvelle surtout que l'idée est grave intéressante !
Citer : Posté le 31/10/2018 23:50 | #
c'est génial d'avoir des genre de jeu bien comme ça qui abandonne pas quand il y a des joueurs dessus et qui se renouvelle surtout que l'idée est grave intéressante !
Ouaip !
Le seul défaut que je lui trouve c'est qu'aux heures de tournois il y a des files d'attente énormes qui se créent.
Genre une demi-heure une heure.
D'ailleurs, inscrivez-vous toujours aux tournois, les combats lors des tournois ont un multiplicateur d'XP de x3, c'est gratuit et nullement pénalisant, même pas besoin d'être connecté, c'est de l'XP gratuite (du moins à bas niveau)
Citer : Posté le 30/04/2019 21:58 | #
Hey ! (désolé pour le re déterrage en passant)
Je me suis récemment remis au jeu aussi et j'ai refait totalement l'IA évidemment (celle du topic est quand même pas mal nulle x) )
J'ai notamment inclus une optimisation des dégâts de zone ainsi que la recherche de cachettes pour prendre le moins de dégâts possibles.
Après toute IA est faisable en grappillant des idées sur le forum du jeu et je veux bien la partager mais elle est plus orientée pour les poireaux proches du niveau 300 ^^'
-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 30/04/2019 22:04 | #
Tiens, j'ai pas fait le cours de Machine Learning mais je demande ce que ça donne si tu branches ton IA sur des solveurs hyper génériques genre optimisation convexe pour le continu et SMT pour les décisions. Ça pourrait être super violent...