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 PHP Discussion :

Poker : trouver une suite de cartes


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 10
    Par défaut Poker : trouver une suite de cartes
    Bonjour,

    Je développe un petit jeu de poker (texas hold'em) en php.

    Les données :

    1 jeu de 52 cartes
    2 cartes distribuées à chaque joueur (10 joueurs)
    5 cartes communes à tous les joueurs

    Mon but :

    1) Définir la meilleure main de chaque joueurs
    2) Les comparer pour trouver le ou les gagnants

    Mon travail :

    J'ai donné une valeur hexa aux cartes pour les classer par force :
    2 = 2 , 3 = 3 , ... , 10 = A , Valet = B , Dame = C , Roi = D , As = E

    Il y a 4 couleurs, mais elles n'ont pas de force donc j'ai utilisé :
    P = Pique , H = Coeur , C = Carreau , T = Trefle

    Ce qui nous donne par exemple "3C" pour un 3 de Carreau.

    Quelles regexp me conseillez-vous ?

    D'avance merci.

    Donald

  2. #2
    Membre Expert Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Par défaut
    Citation Envoyé par dpmix Voir le message
    Quelles regexp me conseillez-vous ?
    pour faire quoi ?
    montre une exemple de chaine de caractères que tu veux analyser et le résultat que tu veux obtenir

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 10
    Par défaut
    $chaine = "A1-B1-C1-D1-E1-F1-G1";

    Première regex : Me dire si il y a une suite de 5 cartes (en prenant en compte que les LETTRES)

    Deuxième regex : Compter les chiffres identiques, dans cet exemple il y en a 7 (7 x 1)

    Merci pour ton aide

  4. #4
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Ne prendre en compte que les lettres n'est pas efficace pour voir une suite.
    En effet, ceci est une suite : 8H 9P 10T AP BH CC DC
    Avant d'aller plus loin, peux-tu nous expliquer pourquoi ton choix s'oriente sur les regex ?

    A suivre, j'aime bien le hold'em et le sujet est marrant...

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 10
    Par défaut
    J'avance petit à petit !!!

    Et je dois dire que je n'utilise pas les regexp.

    Mais vu que je ne suis pas un grand programmeur,
    je voulais savoir si les fameuses regexp pouvaient me venir en aide.

    Je post ici dès que mon code fonctionne...

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 10
    Par défaut
    J'ai trouvé une solution pour déterminer si mes cartes se suivent.

    Mes 7 cartes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $cartes = Array("8C","9P","AC","2P","6P","7H","2C");
    Je tri le tableau pour que mes cartes soient classés par ordre décroissant :

    Ce qui me donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $cartes = Array("AC","9P","8C","7H","6P","2P","2C");
    Et ensuite je vérifie si 5 cartes collées se suivent, si c'est le cas,
    ma fonction me retourne ma suite de cartes, sinon, elle retourne 0 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    function Suite($CARTES) {
     
    	$VERIF = array();
    	for($i=0;$i<7;$i++) $VERIF[$i] = hexdec($CARTES[$i]{0});
     
    	$verif = 0;
     
    	for($i=0;$i<3;$i++) {
     
    		$verif = 0;
     
    		for($j=$i;$j<($i+4);$j++) if (($VERIF[$j]-$VERIF[$j+1])==1) $verif++;
     
    		if ($verif == 4) {
    			for($k=0;$k<7;$k++) $VERIF[$k] = strtoupper(dechex($VERIF[$k]));
    			if ($i == 1) unset($VERIF[0],$VERIF[6]);
    			else if ($i == 2) unset($VERIF[0],$VERIF[1]);
    			else unset($VERIF[5],$VERIF[6]);
    			return($VERIF);
    		}
     
    	}
     
    	return(0);
     
    }
    J'affiche le résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var_dump(Suite($cartes));
    Dans cet exemple, ma fonction me retourne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    array(5) {
      [0]=>
      int(A)
      [1]=>
      int(9)
      [2]=>
      int(8)
      [3]=>
      int(7)
      [4]=>
      int(6)
    }
    C'est pas parfait (il me manque la couleur des cartes) mais le plus dur est fait je pense.

    Si vous avez des idées pour alléger ce code je suis preneur..

    Merci !!!!!

Discussions similaires

  1. Trouver le nombres d'arrangement des intercalaires dans une suite
    Par bizulk dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 20/02/2012, 11h40
  2. Trouver et remplacer une suite de bytes
    Par Woxoa dans le forum C++
    Réponses: 1
    Dernier message: 22/11/2011, 14h15
  3. Réponses: 10
    Dernier message: 21/03/2010, 22h41
  4. Requete pour trouver des trous dans une suite
    Par Ben_Le_Cool dans le forum Langage SQL
    Réponses: 11
    Dernier message: 28/08/2009, 18h17
  5. Trouver une suite de caractères
    Par ArHacKnIdE dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/09/2006, 15h36

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