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] Algorithme reconaissance de figure (jeu de poker)


Sujet :

Intelligence artificielle

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut [IA] Algorithme reconaissance de figure (jeu de poker)
    Bonjour,
    je suis actuellement en train de coder un jeux de poker en console. Jusque là tout va bien, jusqu'a ce que j'en arrive à la fonction qui permet de reconnaître, en combinant cartes sur tables et cartes en main (texas hold'em) pour trouver la figure qu'a l'utilisateur (paire, double paires, etc.).
    Pour les paires ou doubles paires ca peut aller mais dès que l'on en arrive aux suites, je ne suis pas loin de 120 possibilités (avec seulement 2 + 3 cartes).

    J'ai classé mes cartes dans un tableau (de 0 à 12 pour les figures et de 0 à 3 pour les couleurs).

    J'aimerais savoir si il n'y a pas un moyen plus rapide, car je n'imagine même pas en arriver à 2 + 5 cartes.

    Merci pour votre aide.
    Edit je code en langage c.

  2. #2
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    je ne sais pas s'il y a une façon précise pour repérer une suite au poker, mais voilà comment je ferai :
    - je prendrai un tableau de sept cases (2 + 5), seules les hauteurs des cartes comptent.
    - je trierai les sept cartes par ordre croissant.
    - je regarderai s'il y a cinq cartes qui se suivent, en commencant par la première, puis la deuxième, puis la troisième.
    - donc dans le pire des cas, tu n'as que trois fois cinq tests du type if ( Cartes[i] != Cartes[i+1] ) Souci.
    - Attention à l'as qui vaut 1 et As.

    Je ne sais pas comment tu as codé la hauteur des cartes, mais dans ce cas là ce serait bien que ce soit de 1 à 14.
    Pour vérifier que ce n'est pas une quinte flush, tu n'as qu'a vérifier que les cinqs cartes qui forment la suite sont de la même couleur.

    Bonne continuation...
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 103
    Points : 135
    Points
    135
    Par défaut
    Citation Envoyé par ToTo13 Voir le message
    Pour vérifier que ce n'est pas une quinte flush, tu n'as qu'a vérifier que les cinqs cartes qui forment la suite sont de la même couleur.
    Sauf que ça va bien marcher dans le cas où tu peux faire une seule suite avec les 7 cartes ! A mon avis le plus simple pour la quinte flush, c'est de tester si tu as une suite, si tu as une couleur (conditions nécessaires à la quinte flush) si tu cumules les 2 alors tu essaies de voir si avec les cartes de la couleur tu arrives à faire une suite.

    Exemple : 2,3,4,5,6 de carreau et 6,7 de pique

    1) tu testes si tu peux faire une quinte => OUI, la plus forte étant 3,4,5,6,7 (à ce stade, on ne prend pas en compte la couleur des cartes)
    2) tu testes si tu peux faire une couleur => OUI, 2,3,4,5,6 de carreau
    3) tu testes si les cartes de la couleur permet de faire une quinte (tu ré-appliques l'algo 1) en imposant la contrainte que les cartes doivent être du carreau)

    Avec 1), 2) et 3) tu arrives à détecter les couleurs, les quintes & les quintes flush !

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Ok merci vous m'avez bien aidé, je vais essayer d'avancer

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci pour vos réponses, j'ai totalement reussi pour tout ce qui est suite / paire / quinte / quinte flush /brelan.

    Par contre je n'arrive absolument pas a faire les doubles paires et foul (tout ce qui necessite 2 paires differentes en fait.
    Ca serait sympa de m'éclairer.

    Encore merci

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 103
    Points : 135
    Points
    135
    Par défaut
    Pour tout pour ce qui est paire, brelan, full, carré, une méthode assez simple consiste :

    1) Trier les cartes par valeurs descendantes (de As à 2, facilite la recherche de la paire/ du brelan dominant)
    2) Regrouper par paquets (et calculer leur taille) de cartes de hauteur égale (plus facile qd les cartes sont triées, si besoin d'aide pour cette étape demande)
    3) Tu récupères le 1er paquet avec le plus de cartes
    - si il fait 4 cartes => carré, recherche finie
    - sinon si il fait 3 cartes => brelan ou full, on passe à 4)
    - sinon si il fait 2 cartes => paire ou double paire, on passe à 4)
    - sinon tu gardes la carte du 1er paquet (la carte la plus forte)

    4) Tu récupères le 1er paquet avec le plus de cartes autre que le précédent
    - si il fait 2 ou 3 cartes* => full ou double paire (déterminé par 3))
    - sinon => brelan ou paire (déterminé par 3))

    5) Avec les résultats des 2 étapes précédentes, tu conclus

    * en effet avec 7 cartes, tu peux avoir 2 fois 3 cartes identiques !


    Exemple :
    imaginons que la main soit la suivante (en oubliant les couleurs) :

    roi,as,valet,4,valet,roi,valet

    Après 1) => As, roi, roi, valet, valet, valet, 4
    Après 2) => 1 As, 2 rois, 3 valets, 1 carte valant 4
    Après 3) => 2ème cas : donc brelan ou full de valets
    Après 4) => 1er cas : donc double paire ou full par les rois
    Après 5) => full de valets par les rois !

  7. #7
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    en fait cela consiste à faire un histogramme des cartes présentent. Tu comptes le nombre de cartes de chaque hauteur.
    Et ensuite comme il vient d'être marqué :
    - 1 case de l'histogramme avec une valeur 2 => paire
    - 2 cases de l'histogramme avec une valeur 2 => double paire
    - 1 case de l'histogramme avec une valeur 3 => brelan
    - 1 case à 2 et 1 case à 3 => full
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  8. #8
    Candidat au Club
    Inscrit en
    Mars 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 4
    Points : 4
    Points
    4
    Par défaut besoin d'aide pour "Regrouper par paquets"
    Bonsoir,

    En fait j'ai le meme probleme que ce jeune homme, mais je ne vois pas comment faire pour Regrouper par paquets (et calculer leur taille) de cartes de hauteur égale, j'arrive cependant à trier les cartes... Donc j'ai un tableau TRIé mais je ne sai pas comment faire.

    Merci d'avance

  9. #9
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Et si tu faisais un histogramme comme je l'ai marqué ?
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  10. #10
    Candidat au Club
    Inscrit en
    Mars 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    En fait j'arrive desormais a l'etape 2; j'identifie mes "blocks" de cartes identiques, j'ai donc un tableau a 2 dimensions la premiere colonne me donne le nombre de cartes identiques, la 2em colone me donne la carte consernée
    voila ci joint ce que j'obtient, mais je ne voit vraiment pas comment faire un histogramme... Pourrais tu me mettre sur une la voie s'il te plait...? Merci
    Images attachées Images attachées  

  11. #11
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    ben en fait tu as fait ton histogramme : tu comptes le nombre d'occurrences de chaque niveau de carte.

    Ensuite, il ne te reste plus qu'à lister les cas pour voir ce que tu as comme combinaisons possibles.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Un jeu de poker en caml
    Par funtix dans le forum Caml
    Réponses: 35
    Dernier message: 01/12/2007, 17h00
  2. Déroulement d'un tour de jeu au poker texas hold'em
    Par piotrr dans le forum Langage
    Réponses: 26
    Dernier message: 27/11/2007, 16h06
  3. Développement d'un jeu de poker en java.
    Par SmileAndFly dans le forum Développement 2D, 3D et Jeux
    Réponses: 15
    Dernier message: 02/04/2007, 20h02
  4. Langage & API pour un jeu de poker
    Par b Oo dans le forum Développement 2D, 3D et Jeux
    Réponses: 3
    Dernier message: 02/02/2007, 09h47
  5. algorithme d'évolution du "jeu de la vie" en caml
    Par nono88 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 13/12/2006, 00h56

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