TP : tous au ZCasino
Nous allons nous atteler au développement d'un petit jeu de casino. Vous trouverez le détail de l'énoncé plus bas, ainsi que quelques conseils pour la réalisation de ce mini projet.
Si, durant ce travail, vous sentez que certaines connaissances vous manquent, revenez en arrière ; prenez tout votre temps, on n'est pas pressé !
Notre sujet
Vous devez écrire un petit programme que nous appellerons ZCasino. Il s'agira d'un petit jeu de roulette très simplifié dans lequel vous pourrez miser une certaine somme et gagner ou perdre de l'argent (telle est la fortune, au casino !). Quand vous n'avez plus d'argent, vous avez perdu.
Notre règle du jeu
Bon, la roulette, c'est très sympathique comme jeu, mais un peu trop compliqué pour un premier projet. Alors, on va simplifier les règles et je vous présente tout de suite ce que l'on obtient :
- Le joueur mise sur un numéro compris entre 0 et 49 (50 numéros en tout). En choisissant son numéro, il y dépose la somme qu'il souhaite miser.
- La roulette est constituée de 50 cases allant naturellement de 0 à 49. Les numéros pairs sont de couleur noire, les numéros impairs sont de couleur rouge. Le croupier lance la roulette, lâche la bille et quand la roulette s'arrête, relève le numéro de la case dans laquelle la bille s'est arrêtée. Dans notre programme, nous ne reprendrons pas tous ces détails « matériels » mais ces explications sont aussi à l'intention de ceux qui ont eu la chance d'éviter les salles de casino jusqu'ici. Le numéro sur lequel s'est arrêtée la bille est, naturellement, le numéro gagnant.
- Si le numéro gagnant est celui sur lequel le joueur a misé (probabilité de 1/50, plutôt faible), le croupier lui remet 3 fois la somme misée.
- Sinon, deux situations possibles :
- le croupier regarde si le numéro misé par le joueur est de la même couleur que le numéro gagnant (s'ils sont tous les deux pairs ou tous les deux impairs). Si c'est le cas, le croupier lui remet 50 % de la somme misée (et il reprend sa mise).
- Si ce n'est pas le cas, le joueur ne gagne rien et perd sa mise.
Dans les deux scénarios gagnants vus ci-dessus (le numéro misé et le numéro gagnant sont identiques ou ont la même couleur), le croupier remet au joueur la somme initialement misée avant d'y ajouter ses gains. Cela veut dire que, dans ces deux scénarios, le joueur récupère de l'argent. Il n'y a que dans le troisième cas qu'il perd la somme misée. On utilisera pour devise le dollar $ à la place de l'euro pour des raisons d'encodage sous la console Windows.
Organisons notre projet
Pour ce projet, nous allons avoir besoin d'un module : le module random
Un peu d'aide pour commencer...Le module random
Dans ce module, nous allons nous intéresser particulièrement à la fonction randrange
qui peut s'utiliser de deux manières :
- en ne précisant qu'un paramètre (
randrange(6)
renvoie un nombre aléatoire compris entre 0 et 5) ; - en précisant deux paramètres (
randrange(1, 7)
: renvoie un nombre aléatoire compris entre 1 et 6, ce qui est utile, par exemple, pour reproduire une expérience avec un dé à six faces).
Pour tirer un nombre aléatoire compris entre 0 et 49 et simuler ainsi l'expérience du jeu de la roulette, nous allons donc utiliser l'instruction randrange(50)
.
Il existe d'autres façons d'utiliser randrange
mais nous n'en aurons pas besoin ici.
N'hésitez pas à faire des tests (ouvrez pour cela le code dans la console) et essayez plusieurs syntaxes de la fonction randrange
.
Elle se trouve dans le module random
, il faudra l'importer avec l'instruction import
comme montré ci-dessous (que vous placerez en tout début de votre code) :
La mise : un nombre entier
Vous l'avez peut-être bien noté, dans l'explication des règles je spécifiais que si le joueur misait sur la bonne couleur, il obtenait 50% de sa mise. Oui mais… c'est quand même mieux de travailler avec des entiers. Si le joueur mise 3$, par exemple, on lui donne 1,5$. il remet en jeu 1.5$ et gagne à nouveau 50%, il va gagner 0.75$, et si cela se poursuit, on risque d'arriver à des nombres flottants avec beaucoup de chiffres après la virgule.
Pour éviter cela, on va instaurer la règle suivante : le joueur doit toujours miser un nombre entier.
À vous de jouer
Concrètement que devez vous faire ?
- Initialiser le jeu :
- le joueur dispose d'une somme de départ, qu'on va nommer le solde. Vous initialiserez ce solde. Il faudra aussi initialiser une variable mise à une valeur non nulle, elle sera utile pour lancer la boucle ci-dessous. - Commencer à jouer
- on entre dans une boucle while (tant que). Tant que le jeu n'est pas terminé.
Nous dirons que le jeu se termine si le joueur n'a plus d'argent (le solde est nul) ou s'il mise 0. tant que ces deux conditions ne sont pas réunis, le jeu continue.
A chaque partie :
- le joueur choisit une case et mise une somme (vous utiliserez input() pour que le code connaisse ces deux valeurs).
- on lance la roulette (tirage aléatoire avec random)
- on détermine le gain et on met à jour le solde du joueur. - Fin de la partie
Afficher le solde du joueur
Pour déterminer le gain :
Si la case misée est égale au résultat du tirage, le gain est trois fois la mise
Sinon, si le tirage et la case misée ont la même parité, le gain est 1.5 fois la mise
Comment savoir si 2 nombre ont la même parité ? Testez le code ci-dessous, vos pouvez l'ouvrir en console pour faire varier les valeurs de a et b...
Sinon le gain est -1 fois la mise
À vous de jouer !
Bonus :
Bonus1 : Votre code peut vérifier que la somme misée par le joueur est un entier :
exemple, si je veux vérifier qu'une valeur entrée est un entier :
Bonus2 : Votre code peut vérifier que la somme misée est inférieure ou égale au solde. Inspirez vous du bonus 1 pour réaliser cette vérification.