Programme du jeu de la roulette

Résolu
DarkSniper -  
FiceA Messages postés 38 Statut Membre -
Bonjour à tous les zéros,
voilà mon soucis, avec un ami, nous aimerons programmer le jeu de la roulette(celui que l'on retrouve dans les casinos) en langage python. Le problème est que: on a du mal a structurer notre programme car on a rajouter une difficulté qu'y est le choix du nombre de joueur à la partie.
Je vous explique le programme qu'on veut créer:

Déroulement d'une partie: "Introduction":

-On choisit le nombre de joueur

-On assigne un nom à chaque joueur (ex: le 1er sera joueur1, le 2eme sera joueur2,...)

-On indique ensuite leur montant de leur portefeuille (ex: 1000€ chacun)

-Puis la mise minimale ainsi que de la mise maximale

Le jeux (à faire en boucle):

-On demande au joueur, chacun à leur tour, de choisir un numéro entre 0 et 36, puis le montant de leur mise

-Lorsque les mises sont faites, le programme génère un nombre aléatoire entre 0 et 36

-Puis on affiche ce numéro gagnant, et pour chaque joueur, on affiche leurs gains ou leurs pertes.

-On affiche, ensuite, le montant de leur portefeuille (actualiser)

-Si il y a une Banqueroute (c'est à dire, si l'un des joueurs n'a plus d'argent dans son portefeuille), la partie s'arrête

-Pour finir, on demande si ils veulent faire une autre manche ou quitter

Voila le programme que nous aimerons concevoir.

Nous nous sommes tournés sur l'utilisation des listes/tableaux avec l'utilisation de la boucle For, qui je pense être la manière la plus simple de faire ce programme. Mais ayant quelques lacunes sur l'utilisation de ces listes/tableaux, nous avons décidé de vous demander un peu d'aide.

Toutes les idées sont les bienvenues, merci par avance pour l'aide que vous aurez apporté à ce sujet.

3 réponses

Résumé de la discussion

Plusieurs participants envisagent un jeu de roulette en Python avec un nombre de joueurs dynamique, la gestion desportefeuilles et des mises. Les échanges portent sur l'utilisation de listes pour suivre joueurs, argent et choix, ainsi que sur l'adoption d'une approche orientée objet afin de structurer le code. Des exemples de code et des corrections apparaissent, notamment une solution utilisant une classe Joueur et des boucles for pour alimenter les joueurs, leurs numéros et leurs mises, puis calcul des gains. En complément, certains apportent des conseils sur Python 2 versus Python 3 et sur la vérification rigoureuse des données (argent disponible, mises valides) pour éviter les erreurs d'indexation et d'exécution.

Bobot (l'IA à votre service)
  1. DarkSniper
     
    Voici le programme avec chaque partie, mais j'ai un petit soucis avec la partie des gains et pertes car:
    1- lorsque je donne le bon numéro, il affiche rien

    2- et ensuite j'ai ce message d'erreur:
    File "C:\Users\victor\Desktop\Test roulette.py", line 44, in <module>
    if sargent[x] <= 0:
    TypeError: 'int' object is unsubscriptable

    Je pense que j'ai oublié plusieurs trucs mais je sais pas où... ça doit être un truc tout "con"...

    from random import randrange
    
    class Joueur:
    
        def __init__(self, nom, argent):
            self.nom = str(nom)
            self.argent = int(argent)
            self.numero = 0
            self.mise = 0
    
    
    nbJoueurs = int(input("Nombre de joueurs : "))
    joueurs = []
    
    sargent = input("Argent de départ  : ")
    
    continuer_partie = True
    
    while continuer_partie:
        
        for x in range(0, nbJoueurs):
            joueurs.append(Joueur(input(("Numero choisit du joueur "+str(x+1)+" : ")), sargent))
    
        for x in range(0, nbJoueurs):
            joueurs[x].mise = int(input("Mise du joueur "+str(x+1)+" : "))
    
    
        #Affichage du numero gagnant (aléatoirement)
        numero_gagnant = randrange(1)
        print "La roulette tourne,...... tourne, ...... tourne, ...... tourne, et s'arrete sur le numero", numero_gagnant
    
        for x in range(0, nbJoueurs):
            if joueurs[x] == numero_gagnant:
                print "Felicitation, votre numero est le bon, vous obtenez ",  joueurs[x].mise*35, "euros!"
                sargent[x] = sargent[x] + joueurs[x].mise*35
           
            else:
                print "Desoler l'ami, c'est pas pour cette fois. Vous perdez votre mise qui est de", joueurs[x].mise, "euros"
                sargent[x] =sargent[x] - joueurs[x].mise
    
    
        # On interrompt la partie si le joueur est ruine
        for x in range(0, nbJoueurs):
            if sargent[x] <= 0:
                print("Vous etes ruine! C'est la fin de la partie.")
                continuer_partie = False           
            else:
                # On affiche l'argent du joueur
                print("Le joueur"+str(x+1)+"a desormais", sargent[x], "euros")
                quitter = input("Souhaitez-vous quitter le casino (o/n) ? ")
                if quitter == "o" or quitter == "O":
                    print("Vous quittez le casino avec vos gains.")
                    continuer_partie = False


    Merci de votre aide et de votre patience!
    3
    1. Zephirr Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   100
       
      Tu utilise python 2 ou 3?
      0
    2. Zephirr Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   100
       
      Tu n'as apparemment pas compris
      sargent
      :
      c'est l'argent de départ pour tous les joueurs (s pour start) qui est un int.

      Pour accéder à l'argent d'un des joueur, il ne faut pas faire
      sargent[x]
      mais
      joueurs[x].argent


      Enfin, dans un souci d'optimisation, au lieu de
      for x in range(0, nbJoueurs):
           joueurs.append(Joueur(input(("Numero choisit du joueur "+str(x+1)+" : ")), sargent))
      
      for x in range(0, nbJoueurs):
           joueurs[x].mise = int(input("Mise du joueur "+str(x+1)+" : "))

      met plutôt:
      for x in range(0, nbJoueurs):
           joueurs.append(Joueur(input(("Numero choisit du joueur "+str(x+1)+" : ")), sargent))
           joueurs[x].mise = int(input("Mise du joueur "+str(x+1)+" : "))
      0