10
13
* Calcule le score d'une main donnee. Compte l'as comme 1 ou 11
11
14
* suivant le meilleur cas possible.
13
int calcule_score(const int *main, int nb_cartes)
17
for(i=0;i<nb_cartes;i++){
16
int calcule_score(const int *main, int nb_cartes) {
19
for (i = 0; i < nb_cartes; i++) {
20
if (main[i] % 12 == 0) {
21
if (score + 11 > 21) {
28
score = score + main[i];
38
40
* Tire une carte au hasard dans le talon et la donne au joueur
39
41
* Le score du joueur est mis a jour.
41
void donne_une_carte(struct s_table *tables, int id_joueur)
43
struct s_joueur joueur;
44
/* tirer une carte au hasard et la sortir du talon */
45
int ind=tire_carte (tables);
46
int carte=tables->cartes[ind];
47
tables->cartes[ind]=tables->cartes[tables->nb_cartes_dispo-1];
48
tables->nb_cartes_dispo--;
49
/*donner la carte au joueur */
50
joueur=tables->joueurs[id_joueur];
51
joueur.jeu_en_main[joueur.nb_cartes+1]=carte;
53
/* calcul du score du joeur */
54
joueur.points=calcule_score (joueur.jeu_en_main, joueur.nb_cartes);
43
void donne_une_carte(struct s_table *tables, int id_joueur) {
44
/* tirer une carte au hasard et la sortir du talon */
45
int ind = tire_carte(tables);
46
int carte = tables->cartes[ind];
47
tables->cartes[ind] = tables->cartes[tables->nb_cartes_dispo - 1];
48
tables->nb_cartes_dispo--;
49
/*donner la carte au joueur */
51
tables->joueurs[id_joueur].jeu_en_main[tables->joueurs[id_joueur].nb_cartes] = carte;
53
* printf("nb_cartes ==> %d\n", tables->joueurs[id_joueur].nb_cartes);
54
* printf("==> %d\n", carte);
56
tables->joueurs[id_joueur].nb_cartes++;
57
/* calcul du score du joeur */
58
tables->joueurs[id_joueur].points = calcule_score(tables->joueurs[id_joueur].jeu_en_main, tables->joueurs[id_joueur].nb_cartes);
58
62
/* Fonction: tire_carte
63
67
* Tire une carte au hasard dans le talon
65
int tire_carte(struct s_table *table)
67
/* Faire un random pour tirer une carte dans le talon*/
68
int ind=rand()%table->nb_cartes_dispo;
69
int tire_carte(struct s_table *table) {
70
/* Faire un random pour tirer une carte dans le talon*/
71
int ind = rand() % table->nb_cartes_dispo;
84
87
* Distribue 2 cartes a tout le monde
85
88
* Calcule le score correspondant
87
int init_jeu(struct s_table *table, int nb_joueurs, int nb_cartes, char **noms_des_joueurs, const int *affiche_score)
89
struct s_joueur joueur;
92
/* Initialisation du nombre de joueurs */
93
table->nb_joueurs=nb_joueurs;
94
/* Initialiser les valeurs des tableaux à zero */
95
for (i=0;i>nb_joueurs;i++){
96
/* copie de noms_des_joueurs[i] dans joueur.nom, mais erreur à la compilation*/
97
char *strcpy(joueur.nom ,noms_des_joueurs[i]);
98
for (j=0;j<NB_CARTES_MAIN;j++){
99
joueur.jeu_en_main[j]=0;
103
joueur.affiche_score=affiche_score[0];
104
/*attribue à table.joueurs[i] les entrées de joueur,mais erreur (request for member ‘joueurs’ in something not a structure or union)*/
105
table.joueurs[i]=joueur;
107
/* initialisation du random*/
90
int init_jeu(struct s_table *table, int nb_joueurs, int nb_cartes, char **noms_des_joueurs, const int *affiche_score) {
91
struct s_joueur *joueur;
94
/* Initialisation du nombre de joueurs */
95
table->joueurs = malloc(nb_joueurs * sizeof(struct s_joueur));
96
table->nb_joueurs = nb_joueurs;
97
table->nb_cartes_dispo = nb_cartes;
98
table->nb_cartes_max=nb_cartes;
99
table->nb_joueurs=nb_joueurs;
100
/* Initialiser les valeurs des tableaux à zero */
101
for (i = 0; i < nb_joueurs; i++) {
102
joueur = malloc(sizeof(struct s_joueur));
103
table->joueurs[i] = *joueur;
104
/* copie de noms_des_joueurs[i] dans joueur.nom, mais erreur à la compilation*/
105
strcpy(joueur->nom, noms_des_joueurs[i]);
106
for (j = 0; j < NB_CARTES_MAIN; j++) {
107
joueur->jeu_en_main[j] = 0;
109
joueur->nb_cartes = 0;
111
joueur->affiche_score = *affiche_score;
114
/* initialisation du random*/
117
/* donne 2 cartes et calcul le score*/
118
for (i = 0; i < nb_joueurs; i++) {
119
donne_une_carte(table, i);
120
donne_une_carte(table, i);
121
table->joueurs[i].points = calcule_score(table->joueurs[i].jeu_en_main, 2);