Programme du jeu de la roulette [Résolu/Fermé]

Signaler
-
Messages postés
34
Date d'inscription
jeudi 28 mai 2015
Statut
Membre
Dernière intervention
24 août 2016
-
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

Un petit up :). Je pense que le programme, en lui même n'est pas trop compliqué mais nous sommes bloqués avec les listes,...

Merci de votre aide
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60902 internautes nous ont dit merci ce mois-ci

Messages postés
316
Date d'inscription
mardi 30 décembre 2014
Statut
Membre
Dernière intervention
6 novembre 2015
78 > DarkSniper
Inutile de créer une liste argent. Dans l'exemple donné plus haut, avec
for x in range(0, nbJoueurs):
    joueurs.append(Joueur(input(("Nom du joueur "+str(x+1)+" : ")), input(("Argent du joueur "+str(x+1)+" : "))))

on demande l'argent de départ du joueur en même temps que son nom. Mais rien n'empêche de faire ceci:

sargent = input(("Argent de départ "+str(x+1)+" : "))

for x in range(0, nbJoueurs):
    joueurs.append(Joueur(input(("Nom du joueur "+str(x+1)+" : ")), sargent))


qui assigne à tout les joueurs un même montant sjoueur.
Messages postés
316
Date d'inscription
mardi 30 décembre 2014
Statut
Membre
Dernière intervention
6 novembre 2015
78
C'est vraiment pas compliqué
Merci de ton exemple.

C'est vrai que c'est beaucoup plus simple...
Il y a plus cas comprendre et faire plusieurs tutos sur les classes pour avoir une base solide!

Merci encore! :)
Messages postés
316
Date d'inscription
mardi 30 décembre 2014
Statut
Membre
Dernière intervention
6 novembre 2015
78
"Plus qu'à" en effet ;)
:o

Oups! ^^' ça doit être l'émotion x)
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!
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60902 internautes nous ont dit merci ce mois-ci

>
Messages postés
316
Date d'inscription
mardi 30 décembre 2014
Statut
Membre
Dernière intervention
6 novembre 2015

Merci, je ne connaissais pas ce genre de programmation, ça ma beaucoup aidé à tel point que je n'avais même pas remarqué que vous avez mis la correction! ^^'

Il me reste encore un petit problème... :/
Celui de fin de partie, lorsque le programme me demande de quitter le casino, quand je suis ruiné la partie ne s'arrête pas automatiquement, et me demande quand même si je veux continuer...
exemple:
Nombre de joueurs : 2
Argent de départ  : 1000
Nom du joueur 1: toto
Nom du joueur 2: tata
toto, quel numero avez vous choisi? : 1
toto, ainsi que votre mise : 1000
tata, quel numero avez vous choisi? : 0
tata, ainsi que votre mise : 1000
La roulette tourne,...... tourne, ...... tourne, ...... tourne, et s'arrete sur le numero 0
Desole toto , c'est pas pour cette fois. Vous perdez votre mise qui est de 1000 euros
Felicitation tata vous avez le bon numero, vous obtenez  35000 euros!
Vous etes ruine, toto! C'est la fin de la partie.
tata a desormais 36000 euros
Souhaitez-vous quitter le casino (o/n) ? n


Je sais vraiment pas comment faire... j'ai essayé de faire ça:
    for x in range(0, nbJoueurs):
        if joueurs[x].argent > 0:
            # On affiche l'argent du joueur
            print joueurs[x].nom+" a desormais", joueurs[x].argent, "euros"

        else:
            print joueurs[x].nom+", vous etes ruine! C'est la fin de la partie."
            continuer_partie = False        


Mais cela ne fonctionne toujours pas...

Merci beaucoup de votre aide et de votre patience!
Messages postés
316
Date d'inscription
mardi 30 décembre 2014
Statut
Membre
Dernière intervention
6 novembre 2015
78
# On interrompt la partie si le joueur est ruine
    for x in range(0, nbJoueurs):
        if joueurs[x].argent <= 0:
            print joueurs[x].nom+", vous etes ruine! C'est la fin de la partie."
            continuer_partie = False           
        else:
            # On affiche l'argent du joueur
            print joueurs[x].nom+" a desormais", joueurs[x].argent, "euros"
            
    if continuer_partie:
      quitter = str(raw_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 beaucoup de votre aide... grâce à vous j'ai pu apprendre des nouvelles fonctionnalité de python, et ainsi réaliser le programme.

Sinon j'aurai une petite question, qui n'est pas, pour une fois, en rapport au programme.
Seriez-vous Zephirr, le youtubeur canadien? https://www.youtube.com/channel/UCxbFOHgBBWOsUjJ49M7g0TA
Messages postés
316
Date d'inscription
mardi 30 décembre 2014
Statut
Membre
Dernière intervention
6 novembre 2015
78
Bon va falloir que je trouve un nouveau pseudo je pense...
Messages postés
316
Date d'inscription
mardi 30 décembre 2014
Statut
Membre
Dernière intervention
6 novembre 2015
78
Pour éviter tout ambiguïté: non, ce n'est pas moi
Messages postés
34
Date d'inscription
jeudi 28 mai 2015
Statut
Membre
Dernière intervention
24 août 2016
2
J'ai réussi a le faire en solo si tu veux :
import os

from random import randrange

from math import ceil


# Déclaration des variables de départ

argent = 1000 # On a 1000 $ au début du jeu

continuer_partie = True # Booléen qui est vrai tant qu'on doit

                        # continuer la partie


print("Vous vous installez à la table de roulette avec", argent, "$.")


while continuer_partie: # Tant qu'on doit continuer la partie

    # on demande à l'utilisateur de saisir le nombre sur

    # lequel il va miser

    nombre_mise = -1

    while nombre_mise < 0 or nombre_mise > 49:

        nombre_mise = input("Tapez le nombre sur lequel vous voulez miser (entre 0 et 49) : ")

        # On convertit le nombre misé

        try:

            nombre_mise = int(nombre_mise)

        except ValueError:

            print("Vous n'avez pas saisi de nombre")

            nombre_mise = -1

            continue

        if nombre_mise < 0:

            print("Ce nombre est négatif")

        if nombre_mise > 49:

            print("Ce nombre est supérieur à 49")


    # À présent, on sélectionne la somme à miser sur le nombre

    mise = 0

    while mise <= 0 or mise > argent:

        mise = input("Tapez le montant de votre mise : ")

        # On convertit la mise

        try:

            mise = int(mise)

        except ValueError:

            print("Vous n'avez pas saisi de nombre")

            mise = -1

            continue

        if mise <= 0:

            print("La mise saisie est négative ou nulle.")

        if mise > argent:

            print("Vous ne pouvez miser autant, vous n'avez que", argent, "$")


    # Le nombre misé et la mise ont été sélectionnés par

    # l'utilisateur, on fait tourner la roulette

    numero_gagnant = randrange(50)

    print("La roulette tourne... ... et s'arrête sur le numéro", numero_gagnant)


    # On établit le gain du joueur

    if numero_gagnant == nombre_mise:

        print("Félicitations ! Vous obtenez", mise * 3, "$ !")

        argent += mise * 3

    elif numero_gagnant % 2 == nombre_mise % 2: # ils sont de la même couleur

        mise = ceil(mise * 0.5)

        print("Vous avez misé sur la bonne couleur. Vous obtenez", mise, "$")

        argent += mise

    else:

        print("Désolé l'ami, c'est pas pour cette fois. Vous perdez votre mise.")

        argent -= mise


    # On interrompt la partie si le joueur est ruiné

    if argent <= 0:

        print("Vous êtes ruiné ! C'est la fin de la partie.")

        continuer_partie = False

    else:

        # On affiche l'argent du joueur

        print("Vous avez à présent", argent, "$")

        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


# On met en pause le système (Windows)

os.system("pause")