Projet de C Simulation d`une machine à sous de jeu de poker
Transcription
Projet de C Simulation d`une machine à sous de jeu de poker
Projet de C Simulation d'une machine à sous de jeu de poker fermé Licence Informatique 2ème année Université de Nice-Sophia Antipolis 1 Organisation et Planning Le projet doit être réalisé individuellement. Vous devez implémenté en C le projet tel que décrit ci-dessus et vous devez rendre avant le 17 Mai 2010 à 8h00 : 1. l'ensemble du code source du projet (chier source, makele + notice expliquant comment créer l'exécutable et précisant sur quel OS votre projet fonctionne). 2. 2 pages (maximum) expliquant comment vous avez réalisé ce projet (descriptif des fonctions, organisation du programme ...) La note tiendra particulièrement compte de l'absence de bug et la cohérence de l'ensemble. 2 Le Jeu de Poker Fermé Les règles du jeu sont les suivantes : • Un joueur joue contre l'ordinateur. • Le joueur mise une somme comprise entre 1 et 20 • Le joueur reçoit 5 cartes provenant d'un jeu de cartes classique de 52 cartes • Il peut décider de conserver ou pas chacune des cartes individuellement • Chaque carte non conservée est remplacée par une carte provenant du jeu de 52 cartes • Le joueur reçoit une récompense s'il a obtenu une combinaison de cartes gagnante, il perd sa mise dans le cas contraire. La récompense reçue est calculée à partir de la mise initiale et la combinaison obtenue. Pour plus d'informations je vous recommande la page wikipédia sur "poker fermé". Les combinaisons gagnantes et les gains associés sont dénis à l'avance. On pourra par exemple utiliser le tableau suivant (gain pour une mise de 1 crédit, pour une mise de k crédits, le gain est multiplié par k) pour un jeu de 52 cartes : combinaison gain 1 paire valet ou mieux (2 cartes semblables) 1 2 paires (2 fois 2 cartes semblables) 2 1 brelan (3 cartes semblables) 3 1 quinte (suite de cartes consécutives) 4 1 couleur (toutes les cartes de la même couleur) 5 1 full (1 paire et 1 brelan séparés) 8 1 carré (4 cartes semblables) 25 1 quinte ush (suite de cartes consécutives de même couleur) 50 1 quinte ush royale (suite de cartes consécutives de même couleur) 250 1 Au début d'une partie le joueur démarre avec 100 crédits. Le but est d'augmenter le plus possible ce nombre de crédits. La partie se termine lorsque le joueur n'a plus de crédit. 3 Le projet Vous devez implémenter un jeu de poker fermé tel que décrit dans la section précédente. A chaque tour, vous devez demander au joueur combien il mise de crédit, puis lui donner 5 cartes. Ensuite, le joueur doit sélectionner les cartes qu'il conserve et vous lui remplacez les autres. Enn, vous calculez s'il a une combinaison gagnante et incrémenter son crédit en conséquence. Les dix meilleurs scores atteints doivent être mémorisés avec les initiales des joueurs. On peut acher le tableau des 10 meilleurs résultats. On doit pouvoir sauvegarder et charger une partie en cours, au début de chaque tour. Vous devez proposer un choix entre "nouvelle partie", "nouveau tour", "sauvegarder la partie" et "charger une partie en cours". Pour vous aider vous pouvez utiliser les codes ascii des cartes représentant coeur, carreau trèe et pique. Essayez le code suivant: printf("\%c \%c \%c \%c\n",3,4,5,6); Pour trier un jeu de cartes on peut procéder de la façon suivante : On considère que le jeu de cartes est représenté par un tableau T de 52 éléments. Chaque élément représentant une carte distincte. Pour trier de façon uniforme le tableau une bonne méthode consiste à répéter un grand nombre de fois (500 par exemple) l'échange de 2 cases. Autrement dit on tire aléatoirement deux nombres i etj entre 0 et 51 et on échange les valeurs de T [i] et de T [j]. On pourra utiliser la fonction rand() de la librairie C standard (inclure stdlib.h). Elle renvoit une suite de nombres "pseudo-aléatoires" entre 0 et RAND_MAX. Pour éviter d'obtenir toujours la même suite pseudo-aléatoire on peut changer "l'amorce" de la suite (seed en anglais), en initialisant à partir de l'heure courante par exemple (time est déni dans time.h): srand( time( NULL ) ); 2