Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Discussions


Index du Forum » Discussions » IA de leek wars
Darkysun Hors ligne Membre Points: 1747 Défis: 52 Message

IA de leek wars

Posté le 04/07/2014 16:00

Update : les IA furent proposées il y a longtemps et ne sont évidemment plus (et n'ont en réalité jamais été) très viables. Elles restent potables si vous êtes très bas level cependant.

Pour de meilleurs IA (haut level)
Cliquer pour enrouler
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 !



Salut à tous
Comme je l'ai appris très récemment (hier soir ), certains membres jouent à leek wars, un jeu de poireaux très marrant .
Je ne suis que lvl 5 mais j'ai déjà pas mal d'idée d'IA et je propose qu'on se les partage ici .
Je commence avec la mienne :
IA avec pistolet (dispo lvl 10)
Cliquer pour enrouler
global tour=0;
var i;
global dit=0;
var enemy = getNearestEnemy();
var name=getName(enemy);
var arme=getWeapon(enemy);
if(arme==1) arme="ton pistolet";
if(arme==2) arme="ta mitrailleuse";
if(arme==3) arme="ton double gun";
if(arme==4) arme="ton shotgun";
if(arme==5) arme="ton magnum";
if(arme==6) arme="ton laser";

if(getCellDistance(enemy, getCell()) <= ((getMP(getLeek()) + getMP(enemy))*3))    useChip(CHIP_HELMET, getLeek());


if(tour==0)    setWeapon(WEAPON_PISTOL);
if(tour==1 && dit==0 || getWeapon(enemy)!=-1 && tour==0){
    say(name +", "+arme+" ne me fais pas peur : je vais te tayer en julienne !!!");
    dit=1;
}

var portee_enemy=getWeaponMaxScope(getWeapon(enemy));
enemy = getNearestEnemy();

if(portee_enemy>=getWeaponMaxScope(getWeapon())) moveToward(enemy);
else    for (i = 1; i < 4; i++) if (getCellDistance(getCell(),getCell(enemy)) > 7) moveToward(enemy,1);

useWeapon(enemy);
useWeapon(enemy);
if(getLife()<getLife(enemy) && getLife()<getTotalLife())    useChip(CHIP_BANDAGE, getLeek());
useChip(CHIP_SPARK, enemy);


if(getTP()>0){
enemy = getNearestEnemy();
portee_enemy=getWeaponMaxScope(getWeapon(enemy));

if(portee_enemy>=getWeaponMaxScope(getWeapon())) moveToward(enemy);
else    for (i = 1; i < 4; i++) if (getCellDistance(getCell(),getCell(enemy)) > 7) moveToward(enemy,1);

useWeapon(enemy);
useWeapon(enemy);
if(getLife()<getLife(enemy) && getLife()<getTotalLife())    useChip(CHIP_BANDAGE, getLeek());
useChip(CHIP_SPARK, enemy);
}

useChip(CHIP_SHOCK, enemy);
useChip(CHIP_SHOCK, enemy);

if(portee_enemy<getWeaponMaxScope(getWeapon()))    moveAwayFrom(enemy);

if(getLife()<getTotalLife() && getLife(enemy)>0)    useChip(CHIP_BANDAGE, getLeek());

name=getName(enemy);

if(isDead(enemy))    debug("Kill "+name+"=Done !!!");

if(getTP()!=0 && tour==0)say("Vous ne perdez rien pour attendre bande de noobs !");
if(getTP()!=0 && tour==1)say("Attention j'arrive !");
if(getTP()!=0 && tour==2)say("Préparez le grand POT-AU-FEU !!!");
if(getTP()!=0 && tour==3)say("Inclinez vous devant votre DIEU : poiraxx le grand !!!");

tour++;


IA avec double gun (dispo lvl 10)
Cliquer pour enrouler
global tour=0;
var i;
global dit=0;
var enemy = getNearestEnemy();
var name=getName(enemy);
var arme=getWeapon(enemy);
if(arme==1) arme="ton pistolet";
if(arme==2) arme="ta mitrailleuse";
if(arme==3) arme="ton double gun";
if(arme==4) arme="ton shotgun";
if(arme==5) arme="ton magnum";
if(arme==6) arme="ton laser";

if(getCellDistance(enemy, getCell()) <= ((getMP(getLeek()) + getMP(enemy))*3))    useChip(CHIP_HELMET, getLeek());

if(tour==0)    setWeapon(WEAPON_DOUBLE_GUN);
if(tour==1 && dit==0 || getWeapon(enemy)!=-1 && tour==0){
    say(name +", "+arme+" ne me fais pas peur : je vais te tayer en julienne !!!");
    dit=1;
}

var portee_enemy=getWeaponMaxScope(getWeapon(enemy));
enemy = getNearestEnemy();

if(portee_enemy>=getWeaponMaxScope(getWeapon())) moveTowardCell(getCellToUseWeapon(enemy));
else{
    for (i = 1; i < 4; i++){
        if (getCellDistance(getCell(),getCell(enemy)) > 7){
            moveToward(enemy,1);
        }
        if(getCellDistance(getCell(), getCell(enemy))<2){
            moveTowardCell(getCellToUseWeapon(enemy));
        }
    }
}
useWeapon(enemy);
useWeapon(enemy);
useChip(CHIP_SPARK, enemy);

enemy = getNearestEnemy();
portee_enemy=getWeaponMaxScope(getWeapon(enemy));

if(getTP()>0 && isDead(enemy)==False){

if(portee_enemy>=getWeaponMaxScope(getWeapon())) moveTowardCell(getCellToUseWeapon(enemy));
else{
    for (i = 1; i < 4; i++){
        if (getCellDistance(getCell(),getCell(enemy)) > 7){
            moveToward(enemy,1);
        }
        if(getCellDistance(getCell(), getCell(enemy))<2){
            moveTowardCell(getCellToUseWeapon(enemy));
        }
    }
}
useWeapon(enemy);
useWeapon(enemy);
useChip(CHIP_SPARK, enemy);
}

useChip(CHIP_SHOCK, enemy);
useChip(CHIP_SHOCK, enemy);

if(portee_enemy<getWeaponMaxScope(getWeapon()))    moveAwayFrom(enemy);


name=getName(enemy);
if(isDead(enemy))    debug("Kill "+name+"=Done !!!");

if(getLife()<getTotalLife())    useChip(CHIP_BANDAGE, getLeek());


if(getTP()!=0 && tour==0)say("Vous ne perdez rien pour attendre bande de noobs !");
if(getTP()!=0 && tour==1)say("Attention j'arrive !");
if(getTP()!=0 && tour==2)say("Préparez le grand POT-AU-FEU !!!");
if(getTP()!=0 && tour==3)say("Inclinez vous devant votre DIEU : poiraxx le grand !!!");

tour++;


Voilà c'est tout, bonne chance avec vos poireaux




Infos diverses :
-> Les tournois

Pour parler entre nous des zones, voici celles proposées :
-> Zone de combat rapproché
-> Zone de combat éloigné
-> Zone d'approche
-> Zone sûre.




Précédente 1, 2, 3, 4, 5, 6, 7, 8, 9 Suivante
Alphacreator Hors ligne Membre Points: 1464 Défis: 43 Message

Citer : Posté le 05/07/2014 20:50 | #


Mouais, mais si on a le double gun ça ne marche plus De plus la machine gun a une portée moins grande et il est facile de se sortir de cette situation. Je pense que le mieux ce serai de se mettre à portée maximale pour tirer puis de se cacher après.
Lephenixnoir En ligne Administrateur Points: 24575 Défis: 170 Message

Citer : Posté le 05/07/2014 20:53 | #


Pour rebondir sur l'idée de Kirafi. Il proposerait une IA qui comprend l'IA adverse et en exploite les failles.
Sans aller jusque-là, je vous conseille de comparer vos IA et de voir ce qu'elles ont en commun. Par extrapolation, on peut penser que cela est commun à la plupart des joueurs. Recherchez-en donc les failles -- souvent des cas particuliers non gérés -- et intégrez-les à vos IA, tout en faisant attention de ne pas faire de la leur votre propre faille.
Déjà, ça pourrait vous permettre de gagner en efficacité considérablement.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Drac0300 Hors ligne Membre Points: 839 Défis: 39 Message

Citer : Posté le 05/07/2014 21:29 | #


Je suis sur qu'il y a aussi un moyen d'exploiter les obstacles...
Dans Z/1Z, 42==666
Coïncidence ? Je ne pense pas.
Alphacreator Hors ligne Membre Points: 1464 Défis: 43 Message

Citer : Posté le 05/07/2014 21:35 | #


Justement j'y pensais, ce qu'il faudrait c'est récupérer des configurations intéressantes en début de partie puis de s'y rendre pour empêcher l'adversaire de nous tirer dessus et de pouvoir lui tirer dessus puis de se cacher.
Par exemple:
--P-
-OO-
E---
Avec P notre poireau, O l'obstacle et E l'ennemi on peut toujours se déplacer pour se mettre hors de danger et revenir lui tirer dessus, bien sûr ceci est un exemple et comporte des inconvénients mais on peut toujours améliorer le système.
Totoyo Hors ligne Membre d'honneur Points: 16102 Défis: 102 Message

Citer : Posté le 05/07/2014 21:35 | #


Je suis tombé sur une IA adverse pas mal.

Je vous explique. Voici le fonctionne simplifié de mon IA :
- si distance à vol d'oiseau > 7, alors utiliser Étincelle ; si inférieure ou égale à 7, alors utiliser le pistolet.

Or, pour le même coup en point d'action (PT), le pistolet fait plus de dégâts que l’Étincelle.
L'astuce est donc de déplacer son poireau pour tirer au pistolet puis de reculer pour pousser l'ennemi à attaquer avec Étincelle. Au final, l'adversaire m'a dégommé avec une bonne marge (et à remporter la final du tournoi !).

Ajouté le 05/07/2014 à 21:36 :
Drac0300 a écrit :
Je suis sur qu'il y a aussi un moyen d'exploiter les obstacles...

En effet, la plupart des armes et puces ne peuvent pas être utiliser s'il y a un obstacle entre les deux poireaux.
Drac0300 Hors ligne Membre Points: 839 Défis: 39 Message

Citer : Posté le 05/07/2014 21:45 | #


@Alpha ou en vérifiant que l'ennemi n'utilise pas un casque et en le bombardant d 'étincelles !
Dans Z/1Z, 42==666
Coïncidence ? Je ne pense pas.
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 05/07/2014 22:12 | #


J'ai tester un truc, et être full agi au début c'est juste imbattable, le helmet enlève tous les dégâts et le soin compense le tour de cd (40 agi de base + les 50 de buffs = super boubou et super heal si bien utilisé)
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
Eltoredo Hors ligne Modérateur Points: 4301 Défis: 35 Message

Citer : Posté le 05/07/2014 22:17 | #


C'est pas bête, il faudrait tester sur un 4ème poireau xD (j'en ai 3) ou commencer tout de suite x)
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 05/07/2014 22:24 | #


ben... deux IA en mode diabolique quoi http://leekwars.com/fight=394315
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
Darkysun Hors ligne Membre Points: 1747 Défis: 52 Message

Citer : Posté le 05/07/2014 23:19 | #


alors moi j'ai développé un petit bout d'IA pas mal qui compare ta portée avec celle de l'ennemi et de t'approcher juste le nécessaire si la tienne et plus grande, puis de s'en aller, et sinon, de rester où tu peux utiliser ton arme : ca ma permis de faire des perfects sur des bots qui n'avaient q'une mitrailleuse ou un shotgun

Ajouté le 05/07/2014 à 23:19 :
j'actualise et c'est bon

Si je ne réponds pas à un post depuis trop longtemps : envoyez-moi un message pour me le rappeler !




Totoyo Hors ligne Membre d'honneur Points: 16102 Défis: 102 Message

Citer : Posté le 06/07/2014 10:41 | #


En Basic Casio, une variable a la même valeur pour tous les programmes.
En supposant que function soit l'équivalent de Prog, peut-on faire la même chose en LeekScript ?

var a = 1;

function test (b) {
  return a + b; //la compilation plante car je n'ai pas défini la variable a dans la fonction test
}

Dark storm En ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 06/07/2014 11:04 | #


Oui, car tu déclare a en global
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Legolas Hors ligne Ancien rédacteur Points: 3266 Défis: 104 Message

Citer : Posté le 06/07/2014 11:08 | #


En très bas niveau, juste avec un mode :
-on approche à portée de puce étincelle;
-on tire deux fois + étincelle;
-on augmente énormément les PV
Je gagne 9 fois/10 environ.
Mes programmes
Cacher les programmes
Mes défis
Cacher les défis



Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 06/07/2014 11:09 | #


Oui, mais a partir du niveau 11 (helmet) cette strat ne marche plus
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
Legolas Hors ligne Ancien rédacteur Points: 3266 Défis: 104 Message

Citer : Posté le 06/07/2014 11:26 | #


Oui, tu as raison, je suis au niveau 11, et je gagnais tout, mais là 2 défaites à la suite
Mes programmes
Cacher les programmes
Mes défis
Cacher les défis



Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 06/07/2014 11:31 | #


Pour contrer le helmet, il faut utiliser des sort/armes qui font de gros degats, et se soigne+ helmet, et avoir beaucoup de force
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
Legolas Hors ligne Ancien rédacteur Points: 3266 Défis: 104 Message

Citer : Posté le 06/07/2014 11:33 | #


Donc il faut que j'achète un helmet, mais il me manque 700 $.

Ajouté le 06/07/2014 à 11:34 :
Donc je continue comme ça pour l'instant.
Mes programmes
Cacher les programmes
Mes défis
Cacher les défis



Totoyo Hors ligne Membre d'honneur Points: 16102 Défis: 102 Message
Dark storm En ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 06/07/2014 12:51 | # | Fichier joint


Voici une infographie pour mieux comprendre et déterminer les zones de combat rapproché, de combat éloigné, d'approche, et sûre.

Ici, les zones de combat sont par rapport à un poireau ayant 4 MP, et ayant une porté d'arme max de 7. Vous pouvez déterminer des zones différentes en fonction de chaque poireau (par exemple si il a la puce SPARK).



Ajouté le 06/07/2014 à 12:54 :
Ici mon poireau est dans la zone d'approche, il ne peut pas se faire tirer dessus au tour suivant, il va donc s'arrêter là et utiliser les puces de défense et de boost (casque -CHIP_HELMET- et protéines -CHIP_PROTEIN-). Le tour suivant il sera donc protégé et aura de fortes chances de tirer le premier

Han Solo shoot first !
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Alphacreator Hors ligne Membre Points: 1464 Défis: 43 Message

Citer : Posté le 06/07/2014 13:41 | #


Good, ça va bien m'aider pour améliorer ma stratégie.
J'ai trouvé une stratégie qui se base au début sur le glaçon avant de passer aux armes à feu: on se place dans la zone d'approche comme sur ton schémas puis on s'y arrête et on prend le casque (au cas où), ensuite il se déplace mais on est encore hors de portée (8) du coup on utilise glaçon et on fuis, on répète le processus jusqu'à ne plus pouvoir fuir puis on utilise les stratégies pour les zones de combat.
C'est en tout cas comme ça que je prévoit de faire mon IA.
Dark storm En ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 06/07/2014 15:21 | #


Suppression de l'IA par Dark Storm (voir les messages suivants)
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Précédente 1, 2, 3, 4, 5, 6, 7, 8, 9 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 270 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd