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

C++ Discussion :

IA Morpion besoin d'aide


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 30
    Points : 18
    Points
    18
    Par défaut IA Morpion besoin d'aide
    Bonjour,
    J'ai réalisé le début du Jeu le morpion avec quelques particularités :

    -Nécessiter de 5 alignements pour marquer un point
    -Taille de la grille aléatoire (fixer par le joueur au début de la partie)
    -La partie ce termine lorsque la grille est complète

    Voici ce que j'ai déjà réalisé :

    J'ai codé tout en C++, une classe Grille qui gère l'application des différents symboles (X,O), avec une méthode obtenirResultat qui à tout moment de la partie restitue le résultat de chaque symboles en calculant tout les alignements de 5 sur la grille.

    Voila mais maintenant j'aimerais mettre en place un joueur virtuel.
    Eh je ne sais vraiment pas du tout d'où partir et ce qu'il faut que je fasse...
    En cherchant sur internet, j'ai trouvé qu'il existait différents algorithmes comme min-max ou alphabeta.
    Mais je ne vois pas du tout comment mettre un tel algorithme en place.

    Pourriez vous me donnez des pistes, pour m'aider à mettre tout ça en place ?

    Merci de votre aide.

  2. #2
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    Les algos min-max, alpha béta sont des algos exhaustifs c'est à dire qu'ils calculent tous les cas possibles. Donc à un instant T du jeu (quand c'est à l'IA de jouer), tu récupères l'état du jeu (la position des pions sur le plateau) tu calcules les coups suivants jusqu'a la profondeur N (fixée par toi) et tu évalues les arbres de façon à choisir le meilleur selon tes critères (nombre de "pions" alignés, nombre de pions que l'ennemie peut aligner au prochain coup, .....) puis tu joues le 1er coup qui a permi la construction de cet arbre. Ensuite au joueur de jouer puis on recommence (plateau, calcul, jouer).
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  3. #3
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 36
    Points : 41
    Points
    41
    Par défaut
    PS.
    l'algo Min-Max et Alpha Beta ont un même principe, sauf l'Alpha Beta c'est le version optimisé de Min-Max.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    Ok mais concrètement je fait comment ?
    Récupérer l'Etat de ma grille pas de soucis mais par contre comment calculer les coups suivant et évaluer les arbres ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    Personne ?

    Comment appliquer une fonction Max et Min qui calcul tout les coups possible de ma grille ?
    Il faudrait que je calcul un maximum de coups possible, puis voir à partir de quel emplacement, le score de fin est le plus élevé...

  6. #6
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    Citation Envoyé par Suefou Voir le message
    Personne ?

    Comment appliquer une fonction Max et Min qui calcul tout les coups possible de ma grille ?
    Il faudrait que je calcul un maximum de coups possible, puis voir à partir de quel emplacement, le score de fin est le plus élevé...
    C'est l'idée.

    Tu récupères ton plateau, tu simules un coup du joueur, le coup en réponse que ton IA va jouer jusqu'à une profondeur N , et ceci pour chaque coup que le joueur peut faire.

    A là fin (quand tu as construit ton arbre), tu regardes quel position est la meilleure pour toi et tu joues le coup qui a permis de la construire.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2010
    Messages : 43
    Points : 50
    Points
    50
    Par défaut
    Attention a ne pas oublier. Ce genre d'algorithme est exponentiel en temps de calcul. Avec une trop grande profondeur et une grande grille tu va vite avoir besoin d'un deep blue si tu veux jouer correctement.
    Commence avec des petites grilles et des petites profondeur.

  8. #8
    Membre à l'essai
    Profil pro
    Poubelle
    Inscrit en
    Juillet 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Poubelle

    Informations forums :
    Inscription : Juillet 2009
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    Salut,

    Tu peux déjà regarder ça:
    http://fr.wikipedia.org/wiki/Algorithme_MinMax
    http://fr.wikipedia.org/wiki/%C3%89lagage_alpha-beta
    http://www.ffothello.org/info/algos.php
    Ca te donnera les bases pour faire une IA minimum.
    Après, la route est longue...

    Arnaud

Discussions similaires

  1. Besoin d'aide pour morpion sur pyhton
    Par bodem dans le forum Général Python
    Réponses: 0
    Dernier message: 29/04/2013, 22h31
  2. Besoin d'aide jeu du morpion
    Par narcis60floyjo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/02/2008, 15h14
  3. besoin d'aide pour le composant DBComboBox
    Par jane2002 dans le forum Bases de données
    Réponses: 8
    Dernier message: 28/02/2004, 19h01
  4. [TP]besoin d'aide pour commandes inconnues
    Par Upal dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 03/10/2002, 10h48
  5. Besoin d'aide pour l'I.A. d'un puissance 4
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 17h05

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