Bonjour,

je suis actuellement en train de faire un blackjack sur java's cool avec le lycée mais j'ai 3 problèmes :

- lorsque le joueur ou le croupier a blackjack (quand il a 21 avec les 2 premières cartes), le "Blackjack s'affiche plusieurs fois...

- je n'arrive pas à faire les mises, c'est a dire ou le joueur mise et a un pactole

- troisième moins important : il faudrait que l'as prenne la valeur 11 ou 1, or dans le programme elle prend que la valeur 11.

Voici le programme que j'ai commenté :


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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
int sabot[] = new int[312];
 
// Nombre de cartes dans le sabot (6 jeux de 52 cartes).
 int[]mainJoueur = new int[10];
 
// Cartes du joueur.
 int[]mainCroupier = new int[10];
 
// Cartes du croupier.
 void remplirSabot() {
   for (int i = 0; i < 312; i = i + 1) {
      sabot[i] = i;
   }
}
 
void init() {
   //Mise des valeurs de toutes les cartes a -1 car la valeur 0 represente l'as.
    for (int k = 0; k <= 9; k ++) {
      mainJoueur[k] = - 1;
      mainCroupier[k] = - 1;
   }
}
 
void tirage1Croup() {
   // Le croupier tire une 1ere Carte
    mainCroupier[0] = tirerCarte();
   println("Carte du croupier : " + nomCarte(mainCroupier[0]));
   //println("	Points : " + valeurCarte(mainCroupier[0]));
 }
 
int tirerCarte() {
   // Cette fonction est la fonction qui nous sert à tirer une carte 
    int carteTiree = random(0, 312);
   if (sabot[carteTiree] == - 1) {
      tirerCarte();
   }
   sabot[carteTiree] = - 1;
   //println(carteTiree);
    return  carteTiree;
}
 
String nomCarte(int numero) {
   int numero1 = numero % 52;
   int numeroCarte = numero1 % 13;
   int couleurCarte = numero1 / 13;
   String hauteur = Integer.toString(numeroCarte + 1);
   // Initialisation de chaque numero à sa hauteur
    String couleur = "";
   // Initialisation de chaque numero à sa couleur
    if (numeroCarte == 0) {
      hauteur = "As";
   }
   if (numeroCarte == 10) {
      hauteur = "V";
   }
   if (numeroCarte == 11) {
      hauteur = "Q";
   }
   if (numeroCarte == 12) {
      hauteur = "R";
   }
   if (couleurCarte == 0) {
      couleur = "T";
   }
   if (couleurCarte == 1) {
      couleur = "K";
   }
   if (couleurCarte == 2) {
      couleur = "C";
   }
   if (couleurCarte == 3) {
      couleur = "P";
   }
   return (hauteur + couleur);
}
 
int valeurCarte(int numero) {
   // Attribution des valeurs de chaque cartes
    int numero1 = numero % 52;
   int valeurCarte = numero1 % 13;
   int valeur = 0;
   if (valeurCarte <= 9) {
      // Cartes du 2 au 10
       valeur = valeurCarte + 1;
   }
   if (valeurCarte == 0) {
      // Carte de type As
       valeur = 11;
   }
   if (valeurCarte >= 10) {
      // Cartes de types Valet, Dame, Roi
       valeur = 10;
   }
   return (valeur);
}
 
int totalPoints(int[]totalMain) {
   // Définition de la variable "totalPoints" correspondant à la somme de points de toutes les cartes tirées
    int valeurTotaleMain = 0;
   for (int i =0; i <10; i ++) {
      valeurTotaleMain = valeurTotaleMain + valeurCarte(totalMain[i]);
      if (valeurTotaleMain == 21 && i ==1) {
         //  Si la somme des points des 2 premières est égale à 21, le joueur a "BlackJack"
          println("BlackJack !");
      }
   }
   return (valeurTotaleMain);
}
 
void compare() {
   // Cette fonction nous sert à comparer le total de points du Joueur et du Croupier pour savoir qui a gagné
    if (totalPoints(mainJoueur) > totalPoints(mainCroupier) && totalPoints(mainJoueur) <= 21) {
      victoire();
   } else {
      if (totalPoints(mainJoueur) < totalPoints(mainCroupier) && totalPoints(mainCroupier) <= 21) {
         defaite();
      }
      if (totalPoints(mainJoueur) == totalPoints(mainCroupier) && totalPoints(mainCroupier) <= 21 && totalPoints(mainJoueur) <= 21) {
         egalite();
      }
   }
}
 
void defaite() {
   println("Vous avez perdu.");
}
 
void victoire() {
   // Ces 3 fonctions servent à afficher si l'on a gagné, perdu ou fait égalité
    println("Vous avez gagné.");
}
 
void egalite() {
   println("Il y a égalité.");
}
 
void jeuJoueur() {
   // Dans cette fontion le joueur tire autant de cartes qui le souhaitent en plus des deux premieres
    mainJoueur[0] = tirerCarte();
   // Le joueur tire la 1ere Carte
    println("Carte du joueur : " + nomCarte(mainJoueur[0]));
   //println("	Points : " + valeurCarte(mainJoueur[0]));
    mainJoueur[1] = tirerCarte();
   // Le joueur tire lla 2eme Carte
    println("Carte du joueur : " + nomCarte(mainJoueur[1]));
   //println("	Points : " + valeurCarte(mainJoueur[1]));
    println("Vous avez " + totalPoints(mainJoueur));
   // Premier palier qui lui affiche son nombre de points après le tirage des 2 premieres cartes
    String reponse = "oui";
   // On propose alors au joueur de tirer autant de cartes qu'il le souhaite
    reponse = readString("Voulez vous une autre carte ? (oui/non)");
   int n = 2;
   while (reponse.equals("oui")) {
      mainJoueur[n] = tirerCarte();
      println("Carte du joueur : " + nomCarte(mainJoueur[n]));
      //println("	Points : " + valeurCarte(mainJoueur[n]));
       n ++;
      reponse = readString("Voulez vous une autre carte ? (oui/non)");
      println("Vous avez " + totalPoints(mainJoueur));
   }
   if (totalPoints(mainJoueur) > 21) {
      defaite();
      println("NE PAS TENIR COMPTE DES LIGNES SUIVANTES");
      // Problème : le programmme continue son execution et tire les cartes du croupier si le joueur a perdu
    }
}
 
void jeuCroupier() {
   // Le croupier tire une deuxieme Carte et autant de Cartes qui lui faut pour arriver à 17, nombre de points à partir duquel il doit s'arrêter
    int n = 1;
   while (totalPoints(mainCroupier) <= 16) {
      mainCroupier[n] = tirerCarte();
      println("Carte du croupier : " + nomCarte(mainCroupier[n]));
      //println("  Points : " + valeurCarte(mainCroupier[n]));
       n ++;
      println("Le Croupier a  : " + totalPoints(mainCroupier));
   }
   if (totalPoints(mainCroupier) > 21) {
      victoire();
   }
}
 
void main() {
   // Execution du programme
    remplirSabot();
   init();
   tirage1Croup();
   jeuJoueur();
   jeuCroupier();
   compare();
}
Si vous pouvez me filer un coup de main svp ça serait sympa !!

Merci d'avance