Simulation d’une roulette de casino en python

Projets

Nous n’avons peut être pas l’âge de se rendre dans un casino, mais se n’est pas pour autant que nous ne pouvons pas nous amuser à notre échelle. C’est donc grâce à ce mini-jeu qu’on découvre assez rapidement le but d’une roulette de casino. Il ne vous reste qu’à mesuré votre chance à la roulette.

Présentation du projet

Notre projet a pour but de vous faire découvrir de façon simple le monde du casino, plus précisément grace l’un des jeux d’argent les plus connues qui est la roulette de casino.

Règles du jeu:

  • Le but du jeu est de deviner la case sur laquelle la bille lancée dans le cylindre qui contient 37 numéros va s’arrêter. 
  • Le jeu est encadré par un croupier qui annonce en début de partie « Faites vos jeux », ce qui nous laisse le droit de poser nos jetons sur les cases désirées. Vous pouvez les déplacer jusqu’à ce qu’il dise « rien ne va plus »
  •  La bille tourne encore dans le cylindre et quand elle s’arrête, le numéro gagnant est dévoilé.

Supports nécessaire pour le bon fonctionnement du projet

  • Un ordinateur avec un logiciel tel que Thonny pouvant effectuer des manipulations en langage python.

Difficultés rencontrées

Nous avons rencontrés quelque difficulté tout au long de notre programme :

Nous avons eu une grosse difficulté qui nous a fait réfléchir pendant plusieurs heures.

Cette difficulté venait de la définition aléatoire de notre programme qui nous sert pour tirer aléatoirement un nombre entre 0 et 36.

def aléatoire():# permet de tirer un nombre aléatoirement dans la roulette
    global N
    n = randint(0,36)
    N = n
    #print (n)

Notre problème était d’utiliser la variable « n » dans une autre définition du programme et donc on a dû utiliser le mot-clé « global » qui rend accessible la variable « n » dans tout le programme. 

De plus nous nous sommes servis de la fonction « print(n) » pour nous confirmer que le jeu étais bel est bien juste et qu’il relançait bien le numéro de la roulette a chaque tout. C’est donc après cette vérification qu’on a mis le « # » devant la fonction pour plus qu’elle soit prise en compte lorsque le programme est lancé mais aussi pour montrer que l’on a bien vérifier le programme.

Explication du programme

Avant de commencer l’analyse nous vous précisons que le langage python est très exigeant dans l’écriture et dans son indentation.

from random import *

Tout d’abord nous avons commencé par la fonction « From random import » qu’il ne faut surtout pas négliger car c’est cette fonction qui va permettre que la définition aléatoire génère des nombres entre 0 et 36.

Nous avons continué notre programme avec la première définition qui nous sert d’affichage de bienvenue lorsque le jeu est démarré.

def bienvenue():# phrase de bienvenue et présentation du jeu
    print("\n")
    print ("-----[JEU DE LA ROULETTE]-----")
    print ("    Bienvenue au casino !     ")
    print ("    Cree par Paul et Alexis   ")
    print ("           Jouons !           ")
    print ("------------------------------")

Ainsi grâce à la fonction d’affichage « print » nous avons pu reproduire comme une pancarte de bienvenue.

Nous arrivons maintenant à l’une des parties qui caractérisent au mieux notre jeu en question, c’est la définition qui gère le programme aléatoire. C’est ici même que notre toute première fonction « from random import » prend tout son sens.

def aléatoire():# permet de tirer un nombre aléatoirement dans la roulette
    global N
    n = randint(0,36)
    N = n
    #print (n)

Un peut plus haut dans les difficultés rencontrées nous nous somme intéressé à cette partie du programme notamment sur le « global N ». Nous avons utilisé la fonction randint qui génère un nombre aléatoirement entre les valeurs à l’intérieur des parenthèses: (0,36). De plus nous avons dû créer une autre valeur N qui possède la même valeur que n pour pouvoir l’utiliser dans la définition suivante.

Nous avons décidé de regrouper nos deux premières définitions(bienvenue et aléatoire) à l’intérieur de la troisième qui est la définition game. Elle regroupe l’ensemble du jeu que ce soit l’argent de départ mais aussi la mise ainsi que la gestion de la victoire et de la défaite. Ce système facilite le lancement des définitions car il y en a qu’une seule a lancer, ce qui provoque toujours les mêmes actions dans l’ordre voulu.

def game():# permet la composition du jeu avec la mise, l'argent de départ, sa victoire ou sa défaite, et combien lui reste t'il dans son portefeuille
    bienvenue()
    argent_de_depart = 200
    print("Votre porte-monnaie contient une valeur de 200€, bon jeux\n")
    

Ainsi dès que la définition « game » est lancée celle-ci génère immédiatement la définition « bienvenue() » qui exécute les premières lignes de code de la fonction d’affichage. De plus dans cette partie de la troisième définition on définit la valeur de l’argent de départ qui ne change pas. Ainsi grâce à la fonction d’affichage « print » on affiche la phrase qui nous indique la valeur totale de notre porte-monnaie.

La partie suivante du programme est celle qui gère la quantité d’argent qui nous reste avec le « while ».

while argent_de_depart >=0:

        if argent_de_depart == 0:# lorsque nous n'avons plus d'argent une phrase automatique nous l'indique
            print("Malheureusement vous n'avez plus d'argent et le casino ne fait pas crédit")
        else:# le croupier annonce le début du jeu
            print("Faites vos jeux")

La fonction de condition « if » calcule combien d’argent nous reste-t-il est quand notre porte-monnaie est à 0€ la fonction d’affichage « print » affiche la phrase qui nous informe que notre solde d’argent est de 0€. S’il y a encore de l’argent dans le porte-monnaie alors la fonction « else » intervient pour nous annoncer le droit de continuer misé.

La partie de programme ci-dessous contrôle la mise du joueur mais aussi sa défaite et le lancement de la définition aléatoire.

 mise = int(input("Combien voulez-vous miser? : \n")) # qu'elle est la mise que le joueur veut mettre en jeu
        if mise <= 0 or mise > argent_de_depart: # indique lorsque le joueur met une mise plus basse que 0 et/ou plus élevé que ce qu'il possède
            print("Votre mise doit etre superieur à 0 et votre mise ne doit pas etre plus eleve que votre argent restant\n")
        else:# ici nous devons choisir un nombre entre 0 et 36 et si le nombre choisi ne correspond pas à celui sur lequel la bille s'arrête alors on soustrait son argent de départ par la mise
            argent_de_depart = argent_de_depart - mise
            num = int(input("Choisir un nombre entre 0 et 36 : \n"))
            
        aléatoire()

La mise est composée de deux parties, la première est pour la mise d’argent et la deuxième pour le choix du nombre sur lequel on place la mise. C’est la fonction « int(input()) » qui nous demande la mise que l’on souhaite effectuer et grâce a la fonction « if » elle analyse que notre mise soit supérieure à 0€ mais aussi inférieur a notre somme d’argent totale dans le porte-monnaie. Si l’une de ses conditions n’est pas respectée alors la fonction « print » intervient et une phrase nous rappelle quelles sont les bonnes conditions de mise. Ainsi la structure conditionnelle « else » définit l’argent de départ, autrement dit la structure s’occupe de soustraire ou d’ajouter les valeurs misées à la somme d’argent de départ. Mais cette opération est possible seulement grâce à la valeur « num » qui récupère le nombre choisi par le joueur sur lequel il choisit de miser. C’est donc à ce moment-là qu’on a décidé de faire exécuter la fonction aléatoire qui tire aléatoirement le nombre sur lequel la bille s’arrête.

La fin de notre programme contrôle donc le faite de gagner ou de perdre.

if num == N :
            print("La bille s'arrête sur",N )
            print("Félicitations vous avez trouvé le bon numéro\n")
            argent_de_depart = argent_de_depart + (mise * 2)
            print("Votre porte-monnaie a maintenant une valeur de", argent_de_depart, "€")
        else:# ici on affiche notre défaite et combien nous reste-t-il d'argent sur notre porte monnaie
            print("La bille s'arrête sur", N )
            print("Malheureusement vous n'êtes pas tombé sur le bon numéro, retentez votre chance\n")
            print("Votre porte-monnaie a maintenant une valeur de", argent_de_depart, "€")
            

game()

La fonction conditionnelle « if » contrôle la partie gagnante du jeu en affichant sur quel nombre s’est arrêtée la bille avec le premier « print », avec le second elle lance une phrase qui nous félicite d’avoir gagné et troisième « print » nous annonce à combien est la valeur totale de notre porte-monnaie.

La deuxième partie de la fonction se déroule avec « else » sur le même schéma vue auparavant avec les trois « print » mais pour seule différence le second « print » qui vous annonce que vous n’êtes pas tombé sur le bon numéro.

Conclusion

Pour conclure, ce projet qu’on aurait pu croire facile au premier coup d’oeil fut plus complexe que prévu mais avec de la persévérance et de l’aide de nos professeurs nous avons réussi à atteindre notre but final. Ce projet n’est pas non seulement une réussite au niveau technique mais surtout une réussite au niveau personnel avec la création de son propre jeu. J’espère qu’il vous plaira et n’hésiter pas à l’essayer.