/* BJ_JEU.H * * Contient les fonctions de gestion de jeu * */ #ifndef _JEU_H #define _JEU_H #define NB_JOUEURS_MAX 1 /* Nombre de joueursmax, en plus de la banque */ #define NB_CARTES_DEFAUT 52 /* Nombre de cartes dans le jeu */ #define NB_CARTES_MAIN 20 /* Nombre max de cartes en main */ #define TAILLE_NOM 256 /* Taille limite pour le nom d'un joueur */ /* les defines suivant permettent de reperer les cartes * dans le tableau de carte par leur position * les cartes sont supposes rangees par couleur * dans l'odre croissant: AS, 2, 3, ..., Dame, Roi */ #define AS_PIQUE 0 #define ROI_PIQUE 12 #define AS_COEUR 13 #define ROI_COEUR 25 #define AS_CARREAU 26 #define ROI_CARREAU 38 #define AS_TREFLE 39 #define ROI_TREFLE 51 /* structure de joueur */ struct s_joueur{ char nom[TAILLE_NOM]; /* nom du joueur */ int jeu_en_main[NB_CARTES_MAIN]; /* cartes en main du joueur */ int nb_cartes; /* nombre de cartes en main */ int points; /* nombre de points du joueur */ int affiche_score; /* 1 ou 0 pour afficher ou non le score en meme tems que la main */ }; /* structure pour la table de jeu */ struct s_table{ struct s_joueur banque; /* la banque est toujours presente */ struct s_joueur *joueurs; /* tableau pour gerer les joueurs */ int *cartes; /* jeu de carte utilise pour jouer */ int nb_cartes_max; /* nombre de carte maximum dans le talon */ int nb_cartes_dispo; /* nombre actuel de carte dans le talon */ int nb_joueurs; /* nombre de participants en plus de la banque */ }; /* Fonction: init_jeu * Entrees: - pointeur sur la table de jeu * - nombre de joueurs de la partie * - nombre de cartes intial dans le talon * - tableau de chaine de caractere avec les noms des joueurs * - tableau d'entier (de 0 ou 1) qui indique pour chaque joueur si on doit * afficher le score ou non. * Sortie: - 0 si l'initialisation s'est bien deroulee * - -1 sinon * * Initialise la partie avec le nombre de joueurs necessaire * Met tous les scores et les tableaux a 0 * Distribue 2 cartes a tout le monde * Calcule le score correspondant */ int init_jeu(struct s_table *table, int nb_joueurs, int nb_cartes, char **noms_des_joueurs, const int *affiche_score); /* Fonction: tire_carte * Entrees: - pointeur sur la table de jeu * Sorties: - entier representant l'indice de la carte tiree * dans le tableau de carte * * Tire une carte au hasard dans le talon */ int tire_carte(struct s_table *table); /* Fonction: donne_une_carte * Entrees: - pointeur sur la table de jeu * - indice du joueur a qui donner une carte * Sorties: aucune * * Tire une carte au hasard dans le talon et la donne au joueur * Le score du joueur est mis a jour. */ void donne_une_carte(struct s_table *tables, int id_joueur); /* Fonction: calcule_score * Entrees: - un pointeur vers une main * - le nombre de cartes en main * Sorties: - un entier correspondant au score de la main * * Calcule le score d'une main donnee. Compte l'as comme 1 ou 11 * suivant le meilleur cas possible. */ int calcule_score(const int *main, int nb_cartes); #endif