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 :

Programmation d'une IA d'un jeu de bluff


Sujet :

Intelligence artificielle

  1. #1
    Membre habitué Avatar de le Daoud
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2002
    Messages : 287
    Points : 169
    Points
    169
    Par défaut Programmation d'une IA d'un jeu de bluff
    Bonjour,

    Je viens de finir de programmer la partie fonctionnelle et graphique d'un jeu de bluff (Shazamm). Je souhaiterais désormais commencer la programmation d'une IA. Cependant je ne sais pas trop sur quelle piste me lancer. Pourriez vous me conseiller ?
    Les éléments du jeu sont :
    - Chaque joueur à une réserve de points qui est de 50 et peut miser ce qu'il veut.
    - Chaque joueur à des cartes qui modifient le jeu (nombre de points par exemple).

    merci

    Copie d'une partie des règles :
    La partie se joue en plusieurs manches.
    Pour chaque manche, les joueurs disposent de 50 points
    de Mana chacun, qu’ils vont utiliser pour tenter de repousser le mur de feu vers l'adversaire.
    Quand le mur de feu arrive sur la dalle d'un sorcier, la manche est terminée (de même que si l’un des joueurs a épuisé sa réserve de mana). Le perdant, celui qui a été atteint par le mur de feu, doit alors reculer de trois dalles et le vainqueur s’avancer à trois dalles du feu. Une nouvelle dalle du pont
    s'écroule à chacune de ses extrémités, et on entame une nouvelle manche avec 50 points de Mana.
    Dès qu’un sorcier se retrouve sur une dalle "pont effondré", il a perdu la partie* !
    * Quand une nouvelle dalle du pont s’écroule, si un sorcier s’y trouvait, il a évidemment perdu la partie.

    Mais comment déplace-t-on le mur de feu ?
    A chaque tour, chacun mise secrètement, à l'aide de son disque, une partie de la Mana restant dans sa réserve. Chaque joueur doit miser au moins 1, et peut au maximum miser tout ce qui lui reste. Chacun peut en même temps poser face cachée la ou les cartes "sortilège" qu’on désire jouer à ce tour.
    Quand les deux joueurs sont prêts, ils révèlent simultanément leurs disques et les cartes "sortilège" éventuellement jouées. La puissance des attaques, qui équivaut à la mise, est évaluée en appliquant l'effet des cartes "sortilège". Celui dont l'attaque est finalement supérieure avance le mur de feu d'une dalle vers l'adversaire (UNE SEULE DALLE, quelle que soit la différence de valeur d'attaque entre les joueurs).
    Une fois appliquées, les cartes "sortilège" sont défaussées, dans des défausses distinctes pour chaque joueur. Chacun dispose, en tout et pour tout, de 14 sortilèges pour l'ensemble de la partie (sauf effet spécial des cartes). Chaque joueur retranche à sa réserve de Mana, la Mana qu’il vient de dépenser.
    Et c'est reparti pour un tour !

  2. #2
    Membre averti Avatar de xxiemeciel
    Inscrit en
    Juin 2005
    Messages
    371
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 371
    Points : 352
    Points
    352
    Par défaut
    Salut,

    Quels genre de carte peuvent etre jouees ? Je suppose ca influence beaucoup le resultat de la manche .

    Pour faire une IA il faudrait que tu definisses les differentes strategies possible a ton jeu (Ca prend du temps parceque si il manque une strategie et qu'un joueur la trouve il pourra tout le temps gagner), les effets de toutes les cartes et les differents cas possible (gagner, perdre, ou egalite).

    Ensuite tu peux definir un system a base de connaissance, un genre de base de données et des poids de decisions (comme un reseau de neurone) ou alors de regles de decisions (plus base de données). Tu peux aussi faire un system qui apprend et qui evoluera d'une partie a l'autre.

    XXiemeciel
    XXiemeciel

  3. #3
    Membre habitué Avatar de le Daoud
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2002
    Messages : 287
    Points : 169
    Points
    169
    Par défaut
    salut et merci pour ta réponse.

    Les cartes sont effectivement très importantes .
    ex :
    1• Mutisme
    Aucun sortilège n'a plus d'effet,pour aucun des deux joueurs,jusqu'à la fin de la MANCHE.

    2• Clone
    Je choisis une des cartes "sortilège" jouées par mon adversaire au tour précédent, et la pose devant moi. Elle s’applique ce tour-ci, comme
    si je l'avais jouée (et selon son ordre de priorité).

    3• Larcin
    Toutes les cartes "sortilège"
    posées par l'adversaire ce tour-ci,
    et non encore appliquées, passent de mon côté. Chaque sort est,
    selon mon choix, appliqué
    en ma faveur ou détruit.

    4• Fin de manche
    Fin immédiate de la manche ! Le mur de feu reste où il est. On commence une nouvelle manche en se replaçant à 3 pas de part et d'autre, et en faisant tout ce qu'on fait normalement en début de manche. Les autres cartes "sortilège" posées à ce tour, et non encore appliquées, sont nulles et défaussées.

    5• Milieu
    Je remets immédiatement le mur
    de feu entre les sorciers, à égale
    distance des deux, comme au début de la manche. Le tour continue ensuite comme si de rien n'était. Après cette remise au centre, le mur de feu se déplacera donc en fonction du résultat des attaques.

    6• Recyclage
    Cette carte permet de recycler sa mise : après consultation de toutes les cartes, soit je récupère 5 points de ma mise initiale, soit je peux rajouter jusqu’à 5 points à ma mise.

    7• Boost attaque
    La puissance de mon attaque
    est augmentée de 7 points.
    Bien sûr, je ne paierai néanmoins que ce que j'ai misé.

    ...
    Peux tu me donner quelques mots-cle pour faire des recherches sur le net ?
    Comment se représente un système à base de connaissance ?


    merci

  4. #4
    Membre éprouvé Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Points : 1 122
    Points
    1 122
    Par défaut
    Salut,

    un cours trouvé sur le net, je ne l'ai pas exploité mais c'est ce qu'il te faut je pense:
    http://www.liafa.jussieu.fr/~haberm/cours/ia/cours4.pdf

    Pour les mots clés : "intelligence artificielle" stratégie IA I.A

  5. #5
    Membre habitué Avatar de le Daoud
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2002
    Messages : 287
    Points : 169
    Points
    169
    Par défaut
    Merci

    Cependant le jeu que je programme ne peut utiliser les algos tels que le min-max, enfin, je ne vois pas comment. J'ai déjà utiliser ces algos (alpha beta notamment), mais c'était pour un jeu de stratégie de type échecs.

    a+

    david

  6. #6
    Membre averti Avatar de xxiemeciel
    Inscrit en
    Juin 2005
    Messages
    371
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 371
    Points : 352
    Points
    352
    Par défaut
    Salut,

    Essaye de chercher du coté des arbres de decisions, des systemes a base de connaissance et des reseaux de neurones (pour ton cas ce ne sera pas un reseau tres compliqué vu qu'il n'y a que 7 cartes et le nombre de strategie devrait etre assez raisonnable)

    Maintenant tu vas devoir developper un algo propre a ton jeu et cela tu ne pourras pas le trouver sur le net

    XXiemeciel
    XXiemeciel

  7. #7
    Membre habitué Avatar de le Daoud
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2002
    Messages : 287
    Points : 169
    Points
    169
    Par défaut
    Merci

    Je reviendrais peut-être pour poser des questions spécifiques en fonction de mes essais

    david

    ps : en fait il y a 14 cartes

  8. #8
    Membre habitué Avatar de le Daoud
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2002
    Messages : 287
    Points : 169
    Points
    169
    Par défaut
    Bonjour,

    Je réouvre le sujet car je n'ai pas réussi à avancer depuis malgré mes recherches. Je me demande même si je peux y arriver...
    Le problème des systèmes de classeur, c'est le nombre de classeurs possibles étant donné le nombre de situations possibles qui est énorme et la difficulté de création des règles.

    Auriez vous des idées supplémentaires ?

  9. #9
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    je ne pense pas qu'il soit utile (et amusant) de faire un arbre des possibilités poussé.
    à mon avis, il te suffit (un grand mot) d'atribuer une valeur au resultat d'une action.
    je pense qu'il faut différentier tout d'habord les cas logiques et les cas aléatoires.
    il est évident que pour la mise, seule une fonction aléatoire ou une moyenne basée sur des statistique de nombreuses parties pourra permettre à ton ordinateur de gagner. de toutes évidnce, une fonction aléatoire (avec certaines regles quand même) permet d'éviter à l'ordinateur d'être prévisible.
    Pour les cartes, tu peux déja associer certaines cartes comme la carte mutisme qui peut être jouée quand l'ordinateur à l'avantage, pour la carte clone, tu considére que la defausse de l'adversaire est "dans ta main". le milieu s'apique en cas de désavantage et de perspective d'avntage ou bien avec la carte fin d manceh. les cartes d'attaques doivent se jouer lorsque l'adversaire à peut de cartes celles de mana en cas de déficit ou de besoin.
    tu peux ainsis différencier les cartes en cinq catégories: quand l'ordi à l'avantage (ex: mutisme) lorsque l'ordi est en désavantage( ex: milieu) lorque l'ordi à des chances d'avoir l'avantage(ex: brasier), quand l'ordi à des chances d'avoir le désavantage (ex: qui perd gagne) et enfin, quand il n'a rien à faire (augmentation de mana).
    La mise est en relation directe avec les cartes. il est évident que si le sorcier dispose de plusieurs cartes de contre, il à interet à les jouer avec peu de mana et inversement.

    la dificulté est de savoir quand les jouer.
    au debut, sule la fonction aleatoire est (à mon avis) enviseagable (dans une certaine limite) àpres, il faut déterminer la fonction "jouer des cartes/ ne pas jouer des carte qui est à mon avis la plus complexe). enfin, si cette fonction est determiné, il te faut une troisième fonction de mise de mana logique cette fois.

    salut
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  10. #10
    Membre habitué Avatar de le Daoud
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2002
    Messages : 287
    Points : 169
    Points
    169
    Par défaut
    Citation Envoyé par méphistopheles
    il faut déterminer la fonction "jouer des cartes/ ne pas jouer des carte qui est à mon avis la plus complexe)
    C'est bien mon pb

  11. #11
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    Je pense que tu peux déja déterminer lesmoment de perte critique (mur à une case), de victoire critique (mur à une case de l'adversaire) (deux si brasier) qui te permettent de jouer les cartes de type "dernieres chances".
    autre situation, l'enemi n'a plus de cartes -> jouer au moin une carte(utile) par tour.
    l'ennemi à peu de mana->jouer + que le rapport du mana enemi sur le sien.

    pour le reste, je pense que c'est l'expérience des parties qui te permettre d'afiner cette fonction.
    commence donc par un random à 1/3 pour jouer ne pas jouer et enregistre les stratégies et les resultats. en cas de gain, encourager à jouer tour x sinon, diminuer.
    Cependant, pour eviter d'avoir n'importe-quoi, il est nésséçaire que tu détermine ce qu'est une bone main.
    Petit problème, il y as 3003 mains possible et je ne sait pas si tu est pres à toutes les remplir.
    si tu ne veut pas donner une valeur à chacunes de mains, donne en une à chacunes des cartes et à certaines asssociations "combo".

    bonne chance.
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

Discussions similaires

  1. Spécifier une nouvelle librairie graphique/jeu
    Par Montaigne dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 20/06/2005, 18h59
  2. Question de pointeur entre un programme et une DLL
    Par Neilos dans le forum C++Builder
    Réponses: 12
    Dernier message: 01/02/2005, 19h12
  3. Programmation d'une fonction dans Rn
    Par simone.51 dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 12/11/2004, 11h30
  4. Réponses: 3
    Dernier message: 26/01/2004, 17h59
  5. Fin de programme dans une procédure
    Par Sinclair dans le forum Langage
    Réponses: 13
    Dernier message: 29/11/2002, 22h30

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