diff --git a/blackjack.c b/blackjack.c index 5c1aa44..31d5579 100644 --- a/blackjack.c +++ b/blackjack.c @@ -1,3 +1,12 @@ +/* -- PROJET DE FIN DE SEMESTRE -- + Université Paris 8 + Mars - Avril 2021 + L1Z - Informatique - Département STN + + Ce projet a été développé dans le cadre de l'UE "Outils informatiques collaboratifs" avec Mme. Françoise Balmas + + Anri Kennel - Felipe Pereira Manfrin - Kévin Martins Da Veiga - William Nizet */ + #include #include @@ -9,15 +18,24 @@ #include // fonction time #endif + +//on utilise une int array pour stocker toutes les cartes du jeu +//au fur et à mesure que les cartes sont distribuées, on enlève ces-là du tableau int cards[53] = {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}; + +//chaque joueur ainsi que le croupier sont représentés par une int array +//chaque nouvelle carte reçue est additionnée à la liste correspondante int player1[10]; int player2[10]; int dealer[10]; + +//les fonctions suivantes servent à vérifier le système d'exploitation de l'utilisateur +//les intéractions sont légèrement différentes à dépendre du système int isWindows() { #ifdef _WIN32 return 0; @@ -44,6 +62,9 @@ int clearUserScreen() { return 0; } + +//pour avoir la valeur réelle d'une carte, on utilise la fonction real_value (toutes cartes valent quelque chose entre 1 et 13) +//dans notre version du jeu, l'As vaut toujours 1 point et les cartes J,Q,K valent toutes 10 points chaque int real_value(int nb) { if (nb == 1 || nb == 14 || nb == 27 || nb == 40) { return 1; @@ -76,6 +97,8 @@ int real_value(int nb) { return 0; } +//cette fonction sort la couleur de la carte +//on utilise des charactères génériques pour chaque couleur -> '*', '#', '&', '$' char real_color(int nb) { if (nb >= 1 && nb <= 13) { return '*'; @@ -88,6 +111,9 @@ char real_color(int nb) { } } +//cette fonction vérifie la somme cumullé de la personne +//si la somme est <= 21, le joueur peut décider de continuer à tourner des cartes ou pas +//si la somme est > 21, le joueur a perdu automatiquement int victory(int sum) { if (sum <= 21) { return 0; @@ -98,6 +124,9 @@ int victory(int sum) { return 0; } +//la fonction suivante dessine la carte +//elle prend la valeur de la carte et sa couleur +//des modifications ont été faites pour l'affichages des As,Js,Qs et Ks. void draw_card(int value, char couleur) { if (value == 1 || value == 14 || value == 27 || value == 40) { printf(" -----------\n"); @@ -107,6 +136,7 @@ void draw_card(int value, char couleur) { printf("| |\n"); printf("| |\n"); printf("| |\n"); + printf("| |\n"); printf("| A %c|\n",couleur); printf(" -----------\n\n"); } else if (value == 11 || value == 24 || value == 37 || value == 50) { @@ -117,6 +147,7 @@ void draw_card(int value, char couleur) { printf("| |\n"); printf("| |\n"); printf("| |\n"); + printf("| |\n"); printf("| J %c|\n",couleur); printf(" -----------\n\n"); } else if (value == 12 || value == 25 || value == 38 || value == 51) { @@ -127,6 +158,7 @@ void draw_card(int value, char couleur) { printf("| |\n"); printf("| |\n"); printf("| |\n"); + printf("| |\n"); printf("| Q %c|\n",couleur); printf(" -----------\n\n"); } else if (value == 13 || value == 26 || value == 39 || value == 52) { @@ -137,6 +169,7 @@ void draw_card(int value, char couleur) { printf("| |\n"); printf("| |\n"); printf("| |\n"); + printf("| |\n"); printf("| K %c|\n",couleur); printf(" -----------\n\n"); } else { @@ -147,17 +180,22 @@ void draw_card(int value, char couleur) { printf("| |\n"); printf("| |\n"); printf("| |\n"); + printf("| |\n"); printf("| %2d %c|\n",real_value(value),couleur); printf(" ------------\n\n"); } } + + int main() { int i = 0, card_acc, acc = 2, init_dsum; int res_p1, sum1 = 0; int res_p2, sum2 = 0; + + //les règles sont précisées ci-dessous printf("Welcome to BLACKJACK !\n"); waitUser(); @@ -174,6 +212,7 @@ int main() { waitUser(); clearUserScreen(); + //le jeu commence ici printf("The game begins in...\n"); printf("3\n"); sleep(1); @@ -183,6 +222,7 @@ int main() { sleep(1); clearUserScreen(); + //les 2 premières cartes du croupier sont ici srand(time(NULL)); dealer[0] = (rand() % 52) + 1; @@ -203,6 +243,7 @@ int main() { waitUser(); clearUserScreen(); + //les 2 premières cartes de chaque joueur sont ici printf("Each player will now receive their two first initial cards :\n\n"); sleep(2); @@ -265,6 +306,7 @@ int main() { waitUser(); clearUserScreen(); + //ici, le joueur 1 peut tirer d'autres cartes ou continuer avec sa main initiale printf("Player 1, you can now choose either to turn more cards up or to keep your current values :\n\n"); sleep(2); @@ -326,12 +368,15 @@ int main() { printf("\n"); printf("You decided to keep your current values. You can no longer have more cards. Your final score is : %d\n", sum1); } + if(isWindows() == 1) getchar(); waitUser(); clearUserScreen(); + //ré-initialisation de quelques variables i = 0; acc = 2; + //ici, le joueur 2 peut tirer d'autres cartes ou continuer avec sa main initiale printf("Player 2, you can now choose either to turn more cards up or to keep your current values :\n\n"); sleep(1); @@ -393,11 +438,15 @@ int main() { printf("\n"); printf("You decided to keep your current values. You can no longer have more cards. Your final score is : %d\n", sum2); } + if(isWindows() == 1) getchar(); waitUser(); clearUserScreen(); acc = 2; + //on a le tour du croupier ici + //si sa main est <= 16, il va tirer d'autres cartes jusqu'au moment où il aura > 16 points + //s'il dépasse 21 points, tout le monde qui n'a pas fait plus de 21 points antérieurement gagne printf("-- THIS IS THE DEALER'S TURN --\n\n"); sleep(2); @@ -496,5 +545,15 @@ int main() { waitUser(); + printf("-- PROJET DE FIN DE SEMESTRE --\n\n"); + printf("Université Paris 8\n"); + printf("Mars - Avril 2021\n"); + printf("L1-Z Informatique -- Département STN\n"); + printf("Anri Kennel - Felipe Pereira Manfrin - Kévin Martins Da Veiga - William Nizet\n\n"); + + printf("Ce projet a été développé dans le cadre de l'UE 'Outils informatiques collaboratifs' avec Mme. Françoise Balmas"); + + waitUser(); + return 0; }