IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Jeu de roulette simplifié


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Jeu de roulette simplifié
    Bonjour à tous,

    je suis nouvelle sur le forum et débutante avec python.

    J'essaye de faire un programme depuis hier mais je ne comprends pas pourquoi il ne marche pas.
    C'est un jeu de roulette simplifié, si vous pouvez m'aider un trouver où se trouve le problème, je vous le mets ici.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    from random import randrange
     
    cagnotte= input("Quelle est votre cagnotte de depart?")
    mise= input("combien voulez-vous miser?")
    num= input("Choisir un nombre entre 0 et 49")
    x=randrange(49)
     
    while cagnotte>=1:
     
    	if num==x:
                          cagnotte=cagnotte-mise+(mise/2)
                          print("Felicitation vous avez trouve le bon nombre, vous avez gagne",mise*3,"$")
     
           elif (num%2==0 and x%0==0) or (num%2!=0 and x%0!=0):
                          cagnotte=cagnotte-mise+(mise/2)
                          print("Felicitation vous avez gagne",mise/2,"$")
     
            else:
                          cagnotte=cagnotte-mise
                          print("Vous avez perdu toute votre mise")
     
    print("Vous avez ete elimine du tournoi")


    Merci d'avance!

  2. #2
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 287
    Points : 12 744
    Points
    12 744
    Par défaut
    Bonjour et bienvenue,

    On aura du mal à t'aider si tu n'y mets pas du tiens...

    As-tu remarqué que le script que tu présentes n'est pas du tout indenté ?

    Pour garder la forme d'un code, il faut utiliser la balise [code] (le bouton [#] que tu as lorsque tu saisis un message).

    Ensuite, à part nous dire: "ça ne marche pas" , il serait de bon ton de nous dire ce qu'il ne fonctionne pas exactement, qu'elles sont les erreurs, quels résultats cela donne au lieu des résultats attendus...

    Enfin bref, du détail explicatif (ce qui pourrait d'ailleurs te mettre déjà sur la piste de l'erreur).
    Cordialement.

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Bonjour

    En dehors du problème spécifique à Python, moi je remarque qu'à ton jeu on perd tout le temps.
    En effet, premier cas on trouve le bon nombre alors cagnotte=cagnotte - mise + mise/2 soit (si on simplifie la fraction) cagnotte=cagnotte - mise/2 (oui, tu aurais dû mieux écouter quand on t'apprenait les fractions en 5° car tu vois que ça sert aussi en dehors de l'école !!!).
    Second cas, si la parité du résultat correspond à la même parité du nombre choisi, ben la cagnotte a exactement le même calcul (dans ce cas là, moi je préfère tenter cette possibilité qui a une chance sur deux de gagner contre l'autre qui en a une sur 49). Mais dans les deux cas j'ai gagné et tout de même perdu la moitié de ma mise. Accessoirement j'ai un gros doute sur l'opération x%0 qui représente le reste d'une division par 0 (oui, tu aurais dû mieux écouter quand on t'apprenait la division au CM2 car tu vois que ça sert aussi en dehors de l'école !!!)
    Et troisième cas: je ne trouve rien donc là je perds toute ma mise. Ok, c'est plutôt normal. Mais bon, un jeu où j'ai le choix entre "perdre la motié" et "tout perdre" c'est un jeu auquel je ne jouerai certainement pas. Surtout en plus un jeu où on a le droit de choisir le nombre "49" alors que ce nombre ne sortira jamais (à moins que tu aies voulu simuler par là la "part du casino" !!!)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Tu compares un entier avec une string: if num==x: ....

  5. #5
    Membre habitué Avatar de racine carrée
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 156
    Points : 137
    Points
    137
    Par défaut
    cagnotte= input("Quelle est votre cagnotte de depart?")
    mise= input("combien voulez-vous miser?")
    num= input("Choisir un nombre entre 0 et 49")
    Il faut écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cagnotte=int(input("Quelle est votre cagnotte de depart?"))
    mise= int(input("combien voulez-vous miser?"))
    num= int(input("Choisir un nombre entre 0 et 49"))
    afin de convertir les valeurs entrées par l'utilisateur (qui ne sont que des chaines de caractères) en nombres entiers sur lesquels on puisse faire des calculs.
    rq: si on veut avoir des nombres à virgule, il faut remplacer 'int' par 'float'.
    Bon courage.

  6. #6
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci à tous pour vos remarques utiles.

    En effet dans le jeu on est toujours perdant, j'étais concentrée sur le code et pas assez sur le jeu en lui même.

    Étant donné que c'était mon premier message, je ne savais pas comment insérer mon code au bon format, maintenant c'est fait.

    L'erreur est sans doute liée au fait que je ne compare pas deux valeurs comparables effectivement. Je vais corriger ça.

  7. #7
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Points : 446
    Points
    446
    Par défaut
    Bonjour,

    je vois un autre pb à ton jeu: tu fais qu'un pari (une seule mise sur une seul numéro) et plusieurs tirages tant que la cagnotte n'est pas vide.
    Pour initialiser le jeu, il te faut demander le montant de la cagnotte au début.
    Ensuite, il te faut demander la mise et le numéro choisi à chaque tour de jeu et tirer un nouveau numéro au hazard.

    Bonne continuation
    Il est agréable d'avoir le choix. La difficulté est alors de faire le bon (ou le moins pire).

  8. #8
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Fifan31 Voir le message
    ...et plusieurs tirages tant que la cagnotte n'est pas vide.
    Non t'as mal vu. Il n'y a qu'un seul tirage. Qui est alors utilisé de façon invariante dans la boucle qui, elle réitère jusqu'à ce que la cagnotte soit vide (le random est placé avant le while).
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #9
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut


    débutant en Python 3.7

    J'ai testé et corrigé le code sans lire vos messages.

    J'ai découvert une foule d'erreurs et j'ai fini par arriver à une solution qui fonctionne correctement.

    Je vois qu'elle tient compte de vos remarques plus la mise * 3 en cas de gain et la correction du modulo par zéro. J'ai supposé qu'il s'agissait d'un gain de mise/2 en cas de pair ou impair (odd or even).

    Y a-t-il moyen de faire mieux ou plus simple ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    from random import randrange
     
    cagnotte = int(input("Quelle est votre cagnotte de depart ? "))
    mise = int(input("combien voulez-vous miser ? "))
     
    while cagnotte >= 1:
        print('Cagnotte = {}'.format(cagnotte))
        x = randrange(49)
        num = int(input("Choisir un nombre entre 0 et 49 "))
     
        if num == x:
            cagnotte = cagnotte - mise + (mise * 3)
            print("Félicitation vous avez trouve le bon nombre, vous avez gagne", mise*3, "$")
     
        # odd or even
        elif (num % 2 == 0 and x % 2 == 0) or (num % 3 == 0 and x % 3 == 0):
            cagnotte = cagnotte - mise + (mise/2)
            print("Félicitation vous avez gagne", mise/2, "$")
     
        else:
            cagnotte = cagnotte - mise
            print("Vous avez perdu toute votre mise")
     
    print("Vous avez été élimine du tournoi")

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  10. #10
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par danielhagnoul Voir le message
    J'ai testé et corrigé le code sans lire vos messages.
    C'est dommage. Si on écrit des messages, c'est plutôt pour qu'ils soient lus. Ca t'éviterait par exemple de reproduire des erreurs déjà citées obligeant alors les intervenants à répêter des choses déjà dites. Bref question de politesse quoi.

    Citation Envoyé par danielhagnoul Voir le message
    Je vois qu'elle tient compte de vos remarques plus la mise * 3 en cas de gain et la correction du modulo par zéro. J'ai supposé qu'il s'agissait d'un gain de mise/2 en cas de pair ou impair (odd or even).
    Ben déjà ta façon de tester les impairs en calculant le reste de la division par 3 me semble un peu douteuse (par exemple 6 n'est pas impair mais il répond à ta condition). Et dans le cas d'un gain sur cette éventualité le joueur perd quand-même au lieu de gagner (même remarque pour toi que pour inesmansou concernant ton assiduité lors de l'apprentissage des fractions à l'école et l'opportunité de te resservir ici de ce qui y était enseigné à ce propos)

    Citation Envoyé par danielhagnoul Voir le message
    Y a-t-il moyen de faire mieux ou plus simple ?
    Peut-être que le joueur aimerait pouvoir changer sa mise entre chaque coup (et accessoirement éviter qu'il ne puisse miser plus que ce qu'il a).
    Et franchement vu que tu connais la méthode "format", tu ne sens pas que justement son usage serait plus qu'intéressant dans cette instruction print("Félicitation vous avez gagne", mise/2, "$") ???
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  11. #11
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    1. Je voulais dire que j'ai essayé de me débrouiller seul avant de lire les conseils.
    2. J'ai bêtement repris un code que je testais justement en JS pour sélectionner pair et impair, mais pas les nombres premiers supérieurs à 3.
    3. En posant ma question, je pensais à des instructions python que j'ignore et qui simplifierait le programme (il y a une telle quantité de modules disponibles que je ne connais pas encore. Pour l'instant je m'y perds)

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

Discussions similaires

  1. Code pour un Jeu style Roulette?
    Par LightShooter dans le forum Android
    Réponses: 2
    Dernier message: 18/06/2013, 16h51
  2. Conception d'un jeu de dames simplifié
    Par Olgatrim dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 03/01/2009, 17h44
  3. Jeu de dames simplifié (un seul jeton)
    Par Olgatrim dans le forum Algorithmes et structures de données
    Réponses: 0
    Dernier message: 03/01/2009, 16h42
  4. Quel style de DirectX pour un jeu 2D ?
    Par delire8 dans le forum DirectX
    Réponses: 34
    Dernier message: 31/07/2003, 00h47
  5. Une déclaration pour la survie du jeu vidéo en France
    Par Freakazoid dans le forum DirectX
    Réponses: 1
    Dernier message: 30/10/2002, 14h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo