Création Intelligence Artificiel pour jeu 2d

Mokost Messages postés 48 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 29 mars 2010 - 25 oct. 2008 à 16:40
ctx_man Messages postés 285 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 20 janvier 2013 - 26 nov. 2008 à 16:07
Bonjour a tous,
Il y a peu de temps j'ai mis cette source utilisant gdi sur csharp.fr :
http://www.csharpfr.com/codes/JEU-FAUT-ALIGNER-COULEURS-CASSER-BLOCKS-EXEMPLE-ALGORITHME_48274.aspx

entre temps je l'ai améliorée et passer sous directx :
vous trouverez la source ici
http://sharprojet.fr.cr/Projets/Blocks.zip

dans la liste des amélioration j'y ai ajouté un autre joueur et les blocks  qui vous tombent dessus quand l'adversaire fait des chaines
L'adversaire peu être un joueur ou l'ordinateur.

j'ai crée un type enum CpuAct : byte { Left 0, Right 1, Down = 2, Rotate = 3, None = 4 };
qui permetra d'indiquer les touches a effectuer pour pouvoir voir en temps réel les déplacements de l'ordinateur.

L' IA maintenant, auparavent je n'ai jamais fait d ' ia et c'est pour moi l'occasion de me confronter a ce genre d'algorithme qui me retombera dessus j'en suis sure.

L'ordinateu a un plateau de 9 x 14 Block
les blocks sont comme suit :
        struct Block
        {
            //Renvoie la couleur du block
            public BlockColor Color;
            //Renvoie les liens par rapport aux autres blocks
            public BlockLink Liens;
            //entier pour géré l'effet de clignotement
            public int intBlink;
            //indique si ce block a déjà été verifié
            public bool Checked;
            //indique si ce block va exploser
            public bool WillExplode;

            public sbyte Vie;
            public bool LinkedTo(BlockLink aBlink)
            {
                if ((Liens & aBlink) == aBlink)
                    return true;
                else return false;
            }
            public bool IsEmpty
            {
                get
                {                    if (Color BlockColor.Aucun || Color BlockColor.Incassable && Vie <= 0)
                        return true;
                    else return false;
                }
            }

            public static Block NullBlock()
            {
                Block bl = new Block();
                bl.Color = BlockColor.Aucun;
                bl.Checked = false;
                bl.WillExplode = false;
                bl.intBlink = 0;
                bl.Vie = 0;
                bl.Liens = BlockLink.Aucun;
                return bl;
            }

            public static Block BlockFromByte(byte intBlock)
            {
                Block bl = Block.NullBlock();
                bl.Color = (BlockColor)(intBlock);
                return bl;
            }
            public override string ToString()
            {
                return "Color : " + Color.ToString() + ", Liens :" + Liens.ToString() + ", WillExplode :" + WillExplode.ToString();
            }
        }

Le but :
 L'ia devra prévoir les actions prochaines a effectuer liste de CpuAct en fonction de son plateau de jeu.
 Elle doit etre capable de générer des chaines.

Pour être honnête je ne sais pas comment m'y prendre, j'ai seulement crée une petite ia toute bête qui essaie de mettre les mêmes couleur les une sur les autres.

Merci de vous être arrêté ici et pris le temps de lire. N'hésitez pas si vous voulez, plus d'information j'attends avec impatiente vos aides et vos suggestions
Cordialement

1 réponse

ctx_man Messages postés 285 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 20 janvier 2013 3
26 nov. 2008 à 16:07
Bonjour,

Si tu veux faire une IA "intelligente" qui prend des décision correcte en fonction de la situation, soit tu crains pas les migraines et tu code tout en C#. Ca va être la galère, a base d'étude statistique et tout et tout.

Soit tu passe par un autre language tel que LISP ou PROLOG qui sont des languages à base de liste et de prédicats qui permettent de décrire assez simplement un "univers" au sens "probabilité" du terme pour après poser des question du genre "comment aligner 4 couleur ?" et qui te retournera une liste des possibilité. Mais je te cache pas qu'apréhender ces languages quand on y est pas habitué c'est pas facil du tout et ca demande du temps.

Le travail c'est la santé, ne rien faire c'est la préserver !!!
0
Rejoignez-nous