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

Documents pareils