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

Langage Delphi Discussion :

L'IA du jeu dans le défi Puissance 4


Sujet :

Langage Delphi

  1. #1
    bruce-willis
    Invité(e)
    Par défaut L'IA du jeu dans le défi Puissance 4
    http://delphi.developpez.com/defi/puissance4/

    Bonjour,

    D'abord, normal que ce programme est le vainqueur car il est doté d'un adversaire piloté par IA
    D'après les commentaires du code, l'algo utilisé est MinMax! Ce qui m'intrigue c'est pourquoi arrive-t-on encore à battre l'IA dans ce jeu si simple qu'est P4??

    Dans la figure suivante, j'ai arrivé à lui piéger: l'IA n'a aucun choix de défense, il va perdre
    Est-ce dû à une mauvaise quantification de la valeur? En fait, comment chiffre-t-on les valeurs à donner dans MinMax?

    Nom : Yellow winner.JPG
Affichages : 154
Taille : 46,3 Ko

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    je n'ai pas regardé le code mais pour battre un MinMax il faut, soit que le calcul du score d'une case soit éronné (du coup le cas de victoire n'est pas détecté), soit que tu arrives à un niveau de profondeur tel que le programme stoppe sa recherche...ça ne doit pas être le cas

    il faudrait afficher le score des cases pour voir ou ça déconne
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Oooh, cela me dit quelque chose ce petit jeu.
    Citation Envoyé par bruce-willis Voir le message
    D'abord, normal que ce programme est le vainqueur car il est doté d'un adversaire piloté par IA
    A part que l'IA n'est pas entré dans la notation des projets présentés, car cela n'était pas requis.

    Citation Envoyé par bruce-willis Voir le message
    D'après les commentaires du code, l'algo utilisé est MinMax!
    En effet.

    Citation Envoyé par bruce-willis Voir le message
    Ce qui m'intrigue c'est pourquoi arrive-t-on encore à battre l'IA dans ce jeu si simple qu'est P4??
    Pour te donner une réponse franche et directe: car mon implémentation n'est certainement pas optimisée.
    Cela a été mon seul, et pour l'instant unique, projet utilisant cet algo.

    Citation Envoyé par bruce-willis Voir le message
    Dans la figure suivante, j'ai arrivé à lui piéger: l'IA n'a aucun choix de défense, il va perdre
    Est-ce dû à une mauvaise quantification de la valeur?
    Très certainement. J'ai remarqué d'ailleurs qu'il arrive dans certaines situations que l'algo renvoie une valeur inexploitable, dès lors je choisis de façon aléatoire une colonne disponible.
    Je n'ai pas cherché à améliorer davantage cette IA par manque de temps et aussi (surtout ?) de motivation.

    Une chose est certaine, et pour répondre pleinement à ta question, normalement avec un algo bien "léché" le joueur "humain" n'a pas le droit à l'erreur si il veut l'emporter, et aucune si il ne débute pas la partie.

    Citation Envoyé par Paul TOTH Voir le message
    il faudrait afficher le score des cases pour voir ou ça déconne
    J'ai prévu ceci: une directive de compilation {$DEFINE DEBUG} dans le fichier P4.inc qui alimente un mémo avec les valeurs en retour de MinMax.

    Let's debug si tu en as le courage.

    @+ Claudius

  4. #4
    Membre confirmé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Points : 475
    Points
    475
    Par défaut
    Desolé pour cette question mais

    C'est quoi IA ?

  5. #5
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    IA: Intelligence Artificielle.

    Tu as un forum d'ailleurs .

  6. #6
    bruce-willis
    Invité(e)
    Par défaut
    Mais votre application reste bonne Claudius! Joueur à un jeu où on ne va jamais gagner est plutôt balaise

    je n'ai pas regardé le code mais pour battre un MinMax il faut, soit que le calcul du score d'une case soit éronné (du coup le cas de victoire n'est pas détecté)
    Pour un jeu simple comme Puissance 4 pas comme Dames-Echecs-... on ne doit jamais battre un ordinateur qui parcourt l'arbre de jeu jusqu'au bout!!
    Ne connaissant de MiniMax que la théorie sur Wikipedia, comment evaluer un plateau?

  7. #7
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par bruce-willis Voir le message
    Mais votre application reste bonne Claudius! Joueur à un jeu où on ne va jamais gagner est plutôt balaise


    Pour un jeu simple comme Puissance 4 pas comme Dames-Echecs-... on ne doit jamais battre un ordinateur qui parcourt l'arbre de jeu jusqu'au bout!!
    Ne connaissant de MiniMax que la théorie sur Wikipedia, comment evaluer un plateau?
    "comment evaluer un plateau" ? c'est justement le noeud du problème le principe du MinMax dépend justement de la méthode de détermination du score d'un coup.

    Mais dans le cas que tu donnes, la case faisait gagner l'adversaire devrait avoir un score maximum qui arrête toute recherche d'autre solution. Car s'il existe une autre case faisait gagner l'adversaire, on n'a de toute façon perdu.

    A vu de nez, je dirais que le poids d'un case doit dépendre du nombre de possibilité qu'elle offre d'aligner 4 jetons...
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  8. #8
    bruce-willis
    Invité(e)
    Par défaut
    OK merci à vous

Discussions similaires

  1. Intégration des données d'un jeu dans NetBeans
    Par Voyvode dans le forum NetBeans
    Réponses: 3
    Dernier message: 04/11/2009, 14h39
  2. Un nouveau jeu dans Jeux que je n'ai pas installé - virus ?
    Par Caro-Line dans le forum Windows Vista
    Réponses: 3
    Dernier message: 18/08/2009, 15h52
  3. Réponses: 6
    Dernier message: 11/03/2009, 11h28
  4. sauver score jeu dans fichier
    Par cocotomy dans le forum Langage
    Réponses: 18
    Dernier message: 22/12/2006, 16h04

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