IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Intelligence artificielle Discussion :

IA pour un jeu d'ATAXX


Sujet :

Intelligence artificielle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 77
    Points : 66
    Points
    66
    Par défaut IA pour un jeu d'ATAXX
    Bonjour à tous,

    J'essaye actuellement de faire une petite IA pour un jeu d'Ataxx, la version sur plateau hexagonale ...

    J'ai quelques questions à ce propos :
    1. Dans l'algo min-max on construit les noeuds de l'arbre de recherche avec des move et des undo-move. Mais je n'ai pas bien compris comment faire un undo move dans le cas où il y a une prise ? Forcément le pb est identique pour une IA de type reversi mais ne se pose pas pour une IA de puissance4.

    2. Est ce que le PHP est adapté pour faire ce genre d'IA, ou est ce qu'il y a d'autres alternatives ?

    3. En ce qui concerne l'architecture de mon programme j'ai fait 3 classes.
    Une pour ce qui concerne l'interface graphique.
    Une deuxième pour gérer les actions, mise à jour du plateau ...
    Et une troisième pour l'IA. Pour cette classe, je la fait dériver de la classe précédente, puisque j'ai besoin de la même structure de données pour le plateau, des fonctions de voisinages pour les coups ...

    Je ne sais pas si c'est bien, je voudrais bien faire quelque chose de propre, même si juste un projet perso ...

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Coucou,

    Je ne suis qu'un très grand débutant en IA mais je me risque à te répondre :
    1. Je ne sais pas si sa peut t'aider mais tu peux t'épargner le "undo move" en créant à chaque itération une copie du plateau de jeu ou tu effectueras ton mouvement. Tu n'auras donc pas à "undo" puisqu'il ne s'agit que d'une copie. C'est ensuite cette copie que tu passeras à ta fonction récursive.
    2. PHP ou n'importe quel langage est adapté. Car au final il ne s'agit que d'un programme comme les autres.
    3. Pour moi la classe de l'IA n'a pas à dériver de celle du plateau. Car au final la classe min-max sera la même pour Ataxx, que pour tic tac toe ou puissance 4. Ce qui changera c'est ta fonction d'évaluation qui sera propre à ton jeu. J'ai tendance à placer la fonction d’évaluation dans la classe représentant le plateau de jeu.


    J'espère avoir pus t'aider un petit peu.


  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 77
    Points : 66
    Points
    66
    Par défaut
    Hello,

    Merci pour ta réponse,
    Finalement j'ai trouvé une astuce, à chaque coup possible, j'associe un tableau de case à convertir.
    Comme il y en & 2-3 en moyenne, ça m'évite de recopier les 81 valeurs du tableau ...

    Ben oui, mais C++ / Java / Php, en terme de rapidité, je pense que cela diffère, ça ferait un bon exercice de comparer le même programme dans différents langages, mais bon je ne le ferais pas ... Mais ma question était le Php est il plus lent qu'un applet Java par exemple ?
    La j'ai fini une première version de mon IA, j'arrive à évaluer 6000 - 7000 positions par seconde. Est ce que c'est bien ?

    Sinon, j'ai refait ma classe IA, c'est bon maintenant

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour Rumpel,
    Je dois aussi écrire un IA en c# de ce jeu, mon professeur a déjà créer tout le reste.
    Je ne sais pas trop par ou commencer (je suis encore étudiant et débutant)
    pourrais tu m'envoyer en prive un exemple de ton IA que je puisse m'orienter, tu me sauverais la vie !!
    Merci

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 77
    Points : 66
    Points
    66
    Par défaut
    Salut,
    Désolé pour la réponse tardive.
    Oui si tu veux mon code, n'hésite pas à m'envoyer ton email.
    C'est une version Java et pour le plateau hexagonal ...

Discussions similaires

  1. [c++]Architecture des classes pour un jeu
    Par Pegasus32 dans le forum C++
    Réponses: 23
    Dernier message: 16/02/2005, 15h07
  2. Menus en OpenGL pour un jeu?
    Par shifty.net dans le forum OpenGL
    Réponses: 7
    Dernier message: 02/07/2004, 13h38
  3. Réponses: 6
    Dernier message: 30/06/2004, 09h16
  4. [Threads]Comment les organiser pour un jeu du serpent ?
    Par Pill_S dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 11/05/2004, 16h22
  5. Quel style de DirectX pour un jeu 2D ?
    Par delire8 dans le forum DirectX
    Réponses: 34
    Dernier message: 31/07/2003, 01h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo