Partage
  • Partager sur Facebook
  • Partager sur Twitter

aide pour un programme python (casino)

25 février 2021 à 17:50:31

bonjour,

je dois créer un programme puis le présenter, j'ai choisis de créer un casino avec 2 jeux: roulette et machine a sous.

pouvez-vous m'aidez s'il vous plaît ? pour le moment le principale problème est que je n'arrive pas a utiliser l'argent que l'utilisateur peut gagner dans les jeux dans les fonctions, lorsque je change de fonction l'argent disparaît par exemple je n'arrive pas à passer de l'accueil a un jeux et inversement sans perdre l'argent.

import random

def entre(mot_de_passe):
    for i in range(3):
     mdp=input("veuillez entrer votre mdp:")
     if mdp==mot_de_passe:
         print("welcome to the python casino !")
         return casino()
     else:
         print("mauvaise réponse")

    print("avez-vous oubliez votre mdp?")
    réponse=input()
    if réponse=="oui":
        mot_de_passe=input("veuillez crée un mdp:")
        return entre(mot_de_passe)
    else:
        return entre(mot_de_passe)

def machine(budget):
    jeu=True
    oui=True
    compteur=100
    groslot=0
    while jeu==True:
        compteur=compteur+10
        jeu=input("voulez-vous lancer la machine ? ")
        if jeu=='oui':
            jeu = True
        if jeu==True:
         if budget>=25:
          budget=budget-25
          print("Vous commencez avec",budget, "$")
          groslot=groslot+25
          chance=random.randint(0, compteur)
          print(chance)

          if chance==0:
           print("vous gagnez un endettement a vie  je rigole...regarde ton compte quand meme au cas ou")
           return machine(budget)

          elif chance==1:
           print("vous gagnez 1$")
           budget=budget+1
           return machine(budget)

          elif chance==5:
           print("vous gagnez 5$")
           budget=budget+5
           return machine(budget)

          elif chance==10:
           print("vous gagnez 10$")
           budget=budget+10
           return machine(budget)

          elif chance==25:
           print("vous gagnez 25$")
           budget=budget+25
           return machine(budget)

          elif chance==50:
           print("vous gagnez 50$")
           budget=budget+50
           return machine(budget)

          elif chance==100:
           print("vous gagnez 100$")
           budget=budget+100
           return machine(budget)

          elif chance==1000:
           print("vous gagnez le gros lot!")
           budget=budget+100000
           return machine(budget)

          elif chance==999:
           print("vous gagnez le VRAIS gros lot!")
           budget=budget+groslot
           print("fin de partie")
           return casino(portemonnaie)

          else:
           print("vous ne gagnez rien")

         else:
           jeu=False
           print("veuillez investir le montant nécessaire")
           return casino(portemonnaie)

def roulette():
    jeu=input("voulez-vous lancer la roulette de la mort ? ")
    if jeu=='oui':
      chance=random.randint(0, 100)
      print(chance)



      if chance<11:
       print("vous gagnez une voiture ! et plus précisément une twingo")
       return casino(portemonnaie)

      elif chance==0:
       print("C'EST PARTI POUR LA ROULETTE RUSSE, *bruit de revolver* ah  bah zut ta perdu... ")
       return casino(portemonnaie)

      elif chance<16:
       print("vous gagnez un séjour en amazonie ")
       return casino(portemonnaie)

      elif chance>31:
       print("vous gagnez une moto miniature !")
       return casino(portemonnaie)

      elif chance>50:
       print("vous gagnez une villa en australie")
       return casino(portemonnaie)

      elif chance>100:
       print("vous gagnez le trophé de la perte de temps")
       return casino(portemonnaie)

      elif chance==100:
       print("vous gagnez 1 000 000 000 $... dans vos rêves. ")
       return casino(portemonnaie)

      else:
       print("vous gagnez un séjour au goulag :D")

    else:
     return casino(portemonnaie)

def argent(quantite):
    choix=input("voulez-vous mettre de l'argent?")
    if choix=="oui":
        budget=int(input("mettez de l'argent:"))
        quantite=quantite+budget
        print("voici votre solde actuelle:", budget)
        return quantite
    else:
        return quantite

def casino(portemonnaie):
    joue = True
    while joue==True:
        print("À quel jeux voulez-vous jouer?")
        print("1.machine à sous")
        print("2.roulette")
        print("3.mettre de l'argent sur son compte",portemonnaie, "$")
        reponse=int(input("quel est votre choix ?"))
        if reponse==1:
            return machine(portemonnaie)
        elif reponse==2:
            return roulette()
        elif reponse==3:
            portemonnaie = argent(portemonnaie)
        else:
            reponse=input("voulez-vous arreter ?")
            if reponse=="oui":
                print('Au revoir')
                return


def programme():
 mot_de_passe=input("veuillez crée un mdp:")
 entre(mot_de_passe)


programme()



-
Edité par 0CA 25 février 2021 à 18:02:32

  • Partager sur Facebook
  • Partager sur Twitter
25 février 2021 à 21:47:45

quand tu entre dans le jeu tu devrais avoir une erreur normalement puisque a la ligne 8, lorsque tu appelle ta fonction casino, tu ne lui donne aucun argument alors que ta fonction a besoin de l'argument "portemonnaie". En ce qui concerne ton problème, tu dois definir un porte monnaie global, que tu ne définit pas dans tes fonctions m'est au début du programme. Voici a quoi pourrait ressembler le code avec cela:

import random
argent_global = 100 #exemple
 
def entre(mot_de_passe):
    for i in range(3):
     mdp=input("veuillez entrer votre mdp:")
     if mdp==mot_de_passe:
         print("welcome to the python casino !")
         return casino()
     else:
         print("mauvaise réponse")
 
    print("avez-vous oubliez votre mdp?")
    réponse=input()
    if réponse=="oui":
        mot_de_passe=input("veuillez crée un mdp:")
        return entre(mot_de_passe)
    else:
        return entre(mot_de_passe)
 
def machine():
    global argent_global # pour pouvoir modifier celui ci
    jeu=True
    oui=True
    compteur=100
    groslot=0
    while jeu==True:
        compteur=compteur+10
        jeu=input("voulez-vous lancer la machine ? ")
        if jeu=='oui':
            jeu = True
        if jeu==True:
         if argent_global>=25:
          argent_global-=25 # c'est plus rapide que argent_global = argent_global-25
          print("Vous commencez avec",argent_global, "$")
          groslot=groslot+25
          chance=random.randint(0, compteur)
          print(chance)
 
          if chance==0:
           print("vous gagnez un endettement a vie  je rigole...regarde ton compte quand meme au cas ou")
           return machine(budget)
 
          elif chance==1:
           print("vous gagnez 1$")
           argent_global+=1 # meme chose
           return machine()
 
          elif chance==5:
           print("vous gagnez 5$")
           argent_global+=5
           return machine()
 
          elif chance==10:
           print("vous gagnez 10$")
           argent_global+=10
           return machine()
 
          elif chance==25:
           print("vous gagnez 25$")
           argent_global+=25
           return machine()
 
          elif chance==50:
           print("vous gagnez 50$")
           argent_global+=50
           return machine()
 
          elif chance==100:
           print("vous gagnez 100$")
           argent_global+=100
           return machine()
 
          elif chance==1000:
           print("vous gagnez le gros lot!")
           argent_global+=100000
           return machine(budget)
 
          elif chance==999:
           print("vous gagnez le VRAIS gros lot!")
           argent_global+=groslot
           print("fin de partie")
           return casino()
 
          else:
           print("vous ne gagnez rien")
 
         else:
           jeu=False
           print("veuillez investir le montant nécessaire")
           return casino()
 
def roulette():
    # tu n'as meme pas besoin de global argent_global puisque tu ne l'utilise pas
    jeu=input("voulez-vous lancer la roulette de la mort ? ")
    if jeu=='oui':
      chance=random.randint(0, 100)
      print(chance)
 
 
 
      if chance<11:
       print("vous gagnez une voiture ! et plus précisément une twingo")
       return casino()
 
      elif chance==0:
       print("C'EST PARTI POUR LA ROULETTE RUSSE, *bruit de revolver* ah  bah zut ta perdu... ")
       return casino()
 
      elif chance<16:
       print("vous gagnez un séjour en amazonie ")
       return casino()
 
      elif chance>31:
       print("vous gagnez une moto miniature !")
       return casino()
 
      elif chance>50:
       print("vous gagnez une villa en australie")
       return casino()
 
      elif chance>100:
       print("vous gagnez le trophé de la perte de temps")
       return casino()
 
      elif chance==100:
       print("vous gagnez 1 000 000 000 $... dans vos rêves. ")
       return casino()
 
      else:
       print("vous gagnez un séjour au goulag :D")
 
    else:
     return casino()
 
def argent():
    global argent_global
    choix=input("voulez-vous mettre de l'argent?")
    if choix=="oui":
        budget=int(input("mettez de l'argent:"))
        argent_global+=budget
        print("voici votre solde actuelle:", argent_global)
        
 
def casino():
    joue = True
    while joue==True:
        print("À quel jeux voulez-vous jouer?")
        print("1.machine à sous")
        print("2.roulette")
        print("3.mettre de l'argent sur son compte",portemonnaie, "$")
        reponse=int(input("quel est votre choix ?"))
        if reponse==1:
            return machine()
        elif reponse==2:
            return roulette()
        elif reponse==3:
            argent()
        else:
            reponse=input("voulez-vous arreter ?")
            if reponse=="oui":
                print('Au revoir')
                return
 
 
def programme():
 mot_de_passe=input("veuillez crée un mdp:")
 entre(mot_de_passe)
 
 
programme()

comme tu as un argent_global tu n'as pas besoin de mettre d'argument dans tes fonctions. Si tu ne comprend les quelques modification que j'ai faites n'hésite pas a me demander ;)

PS: plus tard tu pourrais t'intéresser a un système de stockage d'argent dans un fichier txt avec plusieurs personne et t'intéresser au module numpy pour avoir des chance moins élevé avec tes jeux d'avoir le gros lots ;)

je ne l'ai pas trop fait mais tu pourra bien sur optmiser ton code parce qu'il y a beaucoup de fonction répétitive :)

-
Edité par PylouFace 25 février 2021 à 21:50:01

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
26 février 2021 à 10:56:33

Salut,

Dans ton programme les return ne servent à rien, ne pas confondre return (qui renvoie une valeur) et l'appel d'une fonction

-
Edité par Anonyme 26 février 2021 à 15:39:26

  • Partager sur Facebook
  • Partager sur Twitter
26 février 2021 à 15:48:09

d'accord merci L'Apprentidupython etDiablo76 !je vais appliquer se que vous m'avez dis et je reviendrais vers vous si j'ai encore besoin d'aide :D
  • Partager sur Facebook
  • Partager sur Twitter
26 février 2021 à 21:15:58

Diablo76 je ne suis pas d'accord avec toi car le return permet de ne pas faire les autres tests qui sont donc inutiles.

  • Partager sur Facebook
  • Partager sur Twitter
26 février 2021 à 22:20:07

Je crois que ”return fonction()" finira par lever un max recursion ...
  • Partager sur Facebook
  • Partager sur Twitter

Python c'est bon, mangez-en. 

Anonyme
27 février 2021 à 2:40:07

L'Apprentidupython a écrit:

Diablo76 je ne suis pas d'accord avec toi car le return permet de ne pas faire les autres tests qui sont donc inutiles.


Déjà comme dit @ josmiley, il y aura à un moment, un problème de récursivité.

Pas besoin de return fonction() car si une des conditions est True,  les autres ne seront pas testées.....

Edit : Petite remarque... l'indentation, c'est 4 espaces, pas un coup 4 et ensuite 2 puis 1 espace... ;)

-
Edité par Anonyme 27 février 2021 à 5:18:35

  • Partager sur Facebook
  • Partager sur Twitter
6 mars 2021 à 16:40:28

argent_debut=0
def argent(argent_debut):
        budget=int(input("mettez de l'argent:"))
        argent_debut=argent_debut+budget
        print("voici votre solde actuelle:", argent_debut)
        return argent_debut
j'ai appliquer vos conseils mais le problème est que lorsque j'utilise l'argent hors de la fonction lorsque je tape argent_debut après avoir tester la fonction la variable reste toujours égal à 0 du coup je ne peux pas appliquer le résultat dans d'autres fonctions.
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
6 mars 2021 à 16:55:05

Pour faire simple, l faut récupérer le return dans une variable:

rgent_debut=0

def argent(argent_debut):
        budget=int(input("mettez de l'argent:"))
        argent_debut=argent_debut+budget
        print("voici votre solde actuelle:", argent_debut)
        return argent_debut

argent_retour = argent(argent_debut)
print(argent_retour)



  • Partager sur Facebook
  • Partager sur Twitter
6 mars 2021 à 16:58:05

Quand tu utilise return, il faut enregistrer le résultat de la fonction, sinon il est perdu :

argent_debut=0
def argent(argent_debut):
    budget = int(input("mettez de l'argent:"))
    argent_debut = argent_debut + budget
    print("voici votre solde actuelle:", argent_debut)
    return argent_debut

argent_debut = argent(argent_debut)



  • Partager sur Facebook
  • Partager sur Twitter

Blond, bouclé, toujours le sourire aux lèvres...

6 mars 2021 à 16:59:16

j'ai finis par régler le problème de l'argent mais j'ai un autre problème:

def machine(argent_debut):
    jeu=True
    oui=True
    compteur=100
    groslot=0
    lot=0
    while jeu==True:
        compteur=compteur+10
        groslot=groslot+lot
        jeu=input("voulez-vous lancer la machine ? ")
        if jeu=='oui':
            if argent_debut>=25:
              argent_debut=argent_debut-25
              print("Vous commencez avec",argent_debut, "$")
              jeu = True
              if jeu==True:

                  groslot=groslot+25
                  chance=random.randint(0, compteur)
                  print(chance)

                  if chance==0:
                   print("vous gagnez un endettement a vie  je rigole...regarde ton compte quand meme au cas ou")

                  elif chance==1:
                   print("vous gagnez 1$")
                   lot=lot+1

                  elif chance==5:
                   print("vous gagnez 5$")
                   lot=lot+5

                  elif chance==10:
                   print("vous gagnez 10$")
                   lot=lot+10

                  elif chance==25:
                   print("vous gagnez 25$")
                   lot=lot+25

                  elif chance==50:
                   print("vous gagnez 50$")
                   lot=lot+50

                  elif chance==100:
                   print("vous gagnez 100$")
                   lot=lot+100

                  elif chance==1000:
                   print("vous gagnez le gros lot!")
                   lot=lot+100000

                  elif chance==999:
                   print("vous gagnez le VRAIS gros lot!")
                   argent_debut=argent_debut+groslot
                   print("fin de partie")
                   return argent_debut

                  else:
                   print("vous ne gagnez rien")
        else:
           print("veuillez investir le montant nécessaire")
           if lot==None:
            lot=0
           argent_debut=argent_debut+lot
           return argent_debut

je ne sais pas pourquoi mais si je ne gagne à aucun moment de l'argent lorsque j'arrête la fonction, il me retourne None au lieu de la valeur de argent_debut+lot ou de la valeur initial de argent_debut.

-
Edité par 0CA 6 mars 2021 à 20:17:20

  • Partager sur Facebook
  • Partager sur Twitter
6 mars 2021 à 20:55:34

Ton return est dans le else, donc si tu ne passe jamais dans le else, ta fonction renvoie None.
  • Partager sur Facebook
  • Partager sur Twitter

Blond, bouclé, toujours le sourire aux lèvres...

6 mars 2021 à 21:03:52

LoupSolitaire a écrit:

Ton return est dans le else, donc si tu ne passe jamais dans le else, ta fonction renvoie None.

Merci.



  • Partager sur Facebook
  • Partager sur Twitter