P1 TP final

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 :
    1. 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).
    2. 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) :

Exemple

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...

Exemple

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 :

Exemple

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.

Auteur : Vincent Le Goff