Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //########################################################
- // TP poker du 19/10/2016 #
- //########################################################
- // directives préprocesseur
- #include <stdio.h>
- #include <time.h>
- #include <stdlib.h>
- #define VALET 11
- #define DAME 12
- #define ROI 13
- #define AS 14
- // déclaration des types *********************************
- typedef enum Couleur
- { PIQUE, COEUR, CARREAU, TREFLE }
- Couleur ;
- typedef struct Carte
- {
- int valeur ;
- Couleur couleur ;
- } Carte;
- typedef struct Main
- {
- Carte cartes[5] ;
- } Main ;
- enum Type_combi {RIEN, PAIRE, DOUBLE_PAIRE, BRELAN, SUITE, COULEUR, FULL, CARRE, QUINTE_FLUSH, NB_TYPES_COMBI} ;
- typedef enum Type_combi Type_combi ;
- typedef struct Combinaison
- {
- Type_combi type ; // type de la combinaison (PAIRE, BRELAN ...)
- int valeur1 ; // full aux AS (valeur1) par les rois
- int valeur2 ; // full aux as par les ROIS (valeur2)
- int valeur_kicker ; // et un 7 ...
- } Combinaison;
- //etc.
- // déclaration des fonctions ****************************
- Carte generer_carte_aleatoire(void);
- void afficher_main(Main m);
- Combinaison combinaison_associee(Main );
- void afficher_combi(Combinaison combi);
- // MAIN *************************************************
- int main(void)
- {
- //initialisation du hasard
- srand(time(NULL));
- //génération main aléatoire
- Main m;
- int i;
- for(i=0;i<5;i++)
- {
- m.cartes[i] = generer_carte_aleatoire () ;
- }
- //affichage de la main
- afficher_main(m);
- afficher_combi( combinaison_associee(m) );
- return 0;
- }
- // définition des fonctions ******************************
- Carte generer_carte_aleatoire(void)
- {
- //renvoie une Carte aléatoire
- Carte c ;
- c.valeur = rand()%13 + 2;
- c.couleur = rand()%4 ;
- return c;
- }
- void afficher_main(Main m)
- {
- //affiche carte par carte la main m (en paramètre)
- //ne renvoie rien
- char* noms_couleurs[4] = {"Coeur", "Carreau", "Trèfle", "Pique"} ;
- char* noms_valeurs[15] = {"","","2","3","4","5","6","7","8","9","10","Valet","Dame","Roi","As"} ;
- int i;
- for(i=0 ; i<5 ; i++)
- {
- printf(" - %s de %s\n", noms_valeurs[m.cartes[i].valeur], noms_couleurs[m.cartes[i].couleur]) ;
- }
- }
- Combinaison combinaison_associee(Main m)
- {
- //renvoie une structure Combinaison correspondant à la main
- //passée en paramètre
- Combinaison combi ; //le resultat final
- combi.valeur1 = 0;
- combi.valeur2 = 0;
- //calcul du nb de cartes par valeur
- //tableau contenant à l'indice i le nb de cartes de valeur i
- int nb_cartes_par_valeur[15] = {0} ; //initialise à 0 partout
- int i;
- for(i=0; i<5 ;i++)
- {
- (nb_cartes_par_valeur[ m.cartes[i].valeur ] )++ ;
- }
- //on cherche la valeur des paires, brelans, carres, d'apres le tableau précédent
- //ces variables valent 0 si la figure n'existe pas,
- // et on stocke la valeur si elle existe
- int val_paire = 0 ;
- int val_seconde_paire = 0;
- int val_brelan = 0 ;
- int val_carre = 0 ;
- for(i=2 ; i<15; i++)
- {
- switch(nb_cartes_par_valeur[i])
- {
- case 2:
- if(val_paire==0)
- val_paire =i;
- else
- val_seconde_paire = i;
- break;
- case 3:
- val_brelan = i;
- break;
- case 4:
- val_carre = i;
- break;
- }
- }
- if (val_carre != 0)
- {
- combi.type = CARRE ;
- combi.valeur1 = val_carre ;
- }
- else if (val_brelan != 0)
- if (val_paire != 0)
- {
- combi.type = FULL;
- combi.valeur1 = val_brelan ;
- combi.valeur2 = val_paire ;
- }
- else
- {
- combi.type = BRELAN;
- combi.valeur1 = val_brelan ;
- }
- else if (val_seconde_paire != 0 )
- {
- combi.type = DOUBLE_PAIRE;
- combi.valeur1 = val_paire ;
- combi.valeur2 = val_seconde_paire ; //il faudrait échanger si plus grand
- }
- else if (val_paire != 0)
- {
- combi.type = PAIRE;
- combi.valeur1 = val_paire ;
- }
- else
- combi.type = RIEN;
- return combi ;
- }
- void afficher_combi(Combinaison combi)
- {
- //affiche une combinaison...
- char* nom_combi[9] = {"RIEN", "PAIRE", "DOUBLE_PAIRE", "BRELAN", "SUITE", "COULEUR", "FULL", "CARRE", "QUINTE_FLUSH"} ;
- char* noms_couleurs[4] = {"Coeur", "Carreau", "Trèfle", "Pique"} ;
- char* noms_valeurs[15] = {"rien","","2","3","4","5","6","7","8","9","10","Valet","Dame","Roi","As"} ;
- printf("type : %s\n", nom_combi[combi.type] ) ;
- printf(" valeur1 : %s\n", noms_valeurs[combi.valeur1]) ;
- printf(" valeur2 : %s\n", noms_valeurs[combi.valeur2]) ;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement