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 :

TP du Zcasino


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2011
    Messages : 65
    Par défaut TP du Zcasino
    Bonsoir à tous,

    alors je continue à bosser! ( Quelle énorme satisfaction pour moi ) et je me suis attaqué ce soir au Tp du Zcasino, suite au lien fournis par Stalacta ( je te remercie encore d'ailleurs ). Je suis arrivé au bout de ce premier TP sans réelles embuches, la partie m'ayant posée le plus de soucis fut la boucle me permettant de continuer ou pas la partie. Je suis donc très satisfait et voilà qui ne fera que consolider un peu plus ma détermination afin d'approfondir davantage mon apprentissage de la programmation.

    Trève de bavardage, je voulais partager avec vous ce TP d'abord parce que je suis content d'être arrivé au bout puis surtout parce que je souhaitais avoir vos avis sur ce qui pourrait être perfectible à travers ces quelques lignes de codes :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    ## TP-1 Zcasino ##
    ### Le joueur mise un numéro entre 0 et 49 ###
    #### Il dépose la mise souhaitée ####
    ##### Les numéros pairs sont noirs, les impairs rouges #####
    ###### Le croupier fait tourner la roulette et la bille s'arrête sur ######
    ###### le numéro gagnant. ######
    ####### Si le numéro est le même que celui du joueur alors : #######
    # Le joueur remporte sa mise + 3 fois sa mise #
    ## Si la couleur est la même alors : ##
    ### Le joueur remporte sa mise + 50% de sa mise. ###
    #### Si le numéro et la couleur diffèrent alors : ####
    ##### Le joueur perd sa mise. #####
    import random
     
    cash = 100
    print ("Votre montant de départ est de", cash, '$')
     
    continuer_partie = True
    while continuer_partie:
    # Le joueur choisi le numéro sur lequel il effectuera une mise #
     
        numero = input('Choisissez un numéro situé entre 0 et 49:')
        while int(numero) <= 0 or int(numero) >= 50:
            numero = input('Choisissez un numéro situé entre 0 et 49:')
        if int(numero) % 2 == 0:
            print ('Vous misez sur le', numero, 'noir')
        else:
            print ('Vous misez sur le', numero, 'rouge')
     
     
    # Le joueur détermine maintenant sa mise #
     
        mise_joueur = input ('Quelle sommes souhaitez-vous miser ?')
        while int(mise_joueur) > int(cash):
            print('Fond non disponible')
            mise_joueur = input('Quelle sommes souhaitez-vous miser ?')
        else :
            print('mise de', mise_joueur, '$')
     
    # Les jeux sont faits, rien ne va plus #
     
        print('Les jeux sont faits, rien ne va plus!')
     
    # Le croupier fait tourner la roulette et le résultat est annoncé #
     
        num_gagnant = random.randint(1,49)
        if num_gagnant % 2 == 0:
            print('Le numéro gagnant est', num_gagnant, 'noir')
        else:
            print('Le numéro gagnant est', num_gagnant, 'rouge')
     
    # Le croupier compare maintenant le numéro gagnant avec celui du joueur #
     
    # Les numéros sont identiques #
     
        if int(numero) == int(num_gagnant):
            cash = cash + (3 * int(mise_joueur))
            print('Bravo! Vous remportez 3 fois votre mise')
            print ('Votre capital est maintenant de', cash, '$')
     
    # Les numéros sont de couleurs noirs #
     
        elif int(numero) % 2 == 0 and int(num_gagnant) % 2 == 0:
            cash = int(cash) + (0.5 * int(mise_joueur))
            print('Pas mal! Vous remportez 50% de votre mise')
            print('Votre capital est maintenant de', cash, '$')
     
    # Les numéros sont de couleurs rouges #
     
        elif int(numero) % 2 != 0 and int(num_gagnant) % 2 != 0:
            cash = int(cash) + (0.5 * int(mise_joueur))
            print('Pas mal! Vous remportez 50% de votre mise')
            print('Votre capital est maintenant de', cash, '$')
     
    # Les numéros sont tout à fait différents #
     
        else:
            cash = int(cash) - int(mise_joueur)
            print('Vous venez de perdre votre mise')
            print('Votre capital est maintenant de', cash, '$')
     
    # Le joueur n'a plus d'argent #
     
        if cash <= 0:
            print( 'Vous voilà sans un sous, prière de quitter la table SVP')
            continuer_partie = False
     
    # Le joueur désire-t-il continuer la partie #
     
        quitter = input('Souhaitez-vous quitter la table de jeu? (O/N)')
        if quitter == 'O' or quitter == 'o':
            print('À bientot!')
            continuer = False
            break
    Merci encore pour votre aide!

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur en formation
    Inscrit en
    Juillet 2013
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en formation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 300
    Par défaut
    De rien pour le tuto .C'est très bien, juste un tout petit truc sans importance sur le coup du arrêter de jouer : on peut s'affranchir de la variable continuer_partie grâce au mot clef break. On met une boucle infinie ("while True") et sur la fin avec le "if quitter == 'O' or quitter == 'o':", on met simplement break. C'est un tout petit détail de rien du tout.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2011
    Messages : 65
    Par défaut
    J'en prends bonne note! Merci encore stalacta. Pour la suite j'attaque le second TP, il s'agit cette fois-ci d'un pendu. Pour avoir commencé à réfléchir sur le sujet celui la me semble tout de même plus complexe que le précédent mais on va y arriver!

    À la moindre question je viendrais cogner par ici

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2011
    Messages : 65
    Par défaut
    Bonsoir à tous,

    comme je le pensais, un nouveau TP me donne pas mal de fil à retordre :

    Un point en particulier me fait défaut dans les consignes de jeu :
    Si la lettre figure dans le mot, l'ordinateur affiche le mot avec les lettres déjà trouvées.
    Avec un peu de recule je me dis que j'ai peut être pris la mauvaise direction avec mon code et j'aurais besoin de certains éclaircissement le concernant. Pour le moment voilà ou j'en suis :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    import random
     
    # Fonctions Hide #
     
    def hide_word(mot):
        for i in range(len(mot)):
            print('*'),
     
     
    # Variables #
     
    tentatives = 0
     
     
    # Définition de la liste des mots #
     
    liste_mot = ['insecte', 'phare', 'jambon', 'hiboux', 'drapeaux', 'vapeur', 'zoo', 'clavier', 'ecole', 'souris', 'code']
     
    # Définition de listes dans lesquelles sera stocké le nom du joueur et son score #
     
    joueurs = []
    score = []
     
    # L'ordinateur invite le joueur à entrer son nom #
     
    nom_joueur = input('Entrez votre nom:')
    print('Bienvenue', nom_joueur)
    print ('---------------------')
    nom_joueur.append(joueurs)
     
     
    continuer_partie = True
    while continuer_partie:
     
    # L'ordinateur sélectionne un mot au hasard dans la liste #
     
        mot_mystere = random.choice(liste_mot)
        print ('Le mot à découvrir:')
        print ('---------------------')
     
    # Appel de la fonction hide_word #
     
        mot_mystere = hide_word(mot_mystere)
        print('----------------------')
     
    # L'ordinateur invite maintenant le joueur à tenter sa chance en proposant une lettre #
        while tentatives <= 8:
            prop_joueur = input('Quelle lettre devrais-je tester ?:')
            tentatives = tentatives + 1
            if prop_joueur > 1:
                print('Une lettre à la fois S.V.P')
                prop_joueur = input('Quelle lettre devrais-je tester ?:')
     
     
    # Si la proposition du joueur se trouve dans le mot #
     
     
     
     
     
     
     
     
     
     
    # Le joueur désire-t-il quitter la partie ? #
     
        quitter = input('Souhaitez-vous quitter la partie ?(O/N)')
        if quitter == 'O' or quitter == 'o':
            print ('A bientot')
            continuer = False
            break
    ps : Actuellement j'ai l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Traceback (most recent call last):
      File "/Users/patricemaillot/Desktop/python/pendu.py", line 52, in <module>
        if prop_joueur > 1:
    TypeError: unorderable types: str() > int()
    le fait est que je comprends l'erreur mais ne voit tout simplement pas comment y remédier :S mettre tout ceci de côté pour ce soir ne me fera sans doute pas de mal.

    Merci encore pour votre aide!

    edit 1: J'ai compris mon erreur du coup en remplaçant :

    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if len(prop_joueur) > 1
    les choses semblent fonctionner à ce niveau. Il suffisait d'aller prendre un peu l'air histoire de se recentrer un peu Bon cette fois-ci, pas de farce, je vais me coucher!

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    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 835
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Ca tombe bien, j'ai justement aidé récemment qqun à programmer un pendu et j'ai retrouvé le code dans ma corbeille.

    Citation Envoyé par suppadrakn Voir le message
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def hide_word(mot):
        for i in range(len(mot)):
            print('*'),
    Pas super tiptop. C'est bien de penser aux fonctions (surtout que c'est la seule) mais n'oublie pas que le jeu doit afficher les lettres déjà découvertes. Donc déjà peut-être que tu devrais penser à mémoriser les essais..

    Citation Envoyé par suppadrakn Voir le message
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    # L'ordinateur invite maintenant le joueur à tenter sa chance en proposant une lettre #
        while tentatives <= 8:
            prop_joueur = input('Quelle lettre devrais-je tester ?:')
            tentatives = tentatives + 1
            if prop_joueur > 1:
                print('Une lettre à la fois S.V.P')
                prop_joueur = input('Quelle lettre devrais-je tester ?:')
    Ok, donc là tu tentes un contrôle de la saisie. Et si le joueur, au second essai, rentre encore une fois plusieurs lettres ???
    Faire un contrôle se traduit généralement par une boucle infinie. Tant que le joueur rentre un truc erroné, on reste dans la boucle et on en sort quand le truc est correct...

    Citation Envoyé par suppadrakn Voir le message
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    # Si la proposition du joueur se trouve dans le mot #
    Tu devrais penser à "if lettre in mot"...

    Mon impression est que tu est parti bille en tête à programmer sans penser suffisemment à ton algo.

    Je te donne les commentaires de mon code en espérant qu'ils t'aideront à trouver ton alog...
    Code python : 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
    def pendu(mot, hard=False):		# Comme tu vois, j'ai posé le jeu dans une fonction. Le paramètre "hard" quand il est à False refuse les lettres déjà proposées. Quand il est à True, il les autorise
    	# Boucle de jeu
    	while ...:
    		# Affichage des lettres déjà trouvées du mot
    		...
     
    		# Si le mot est trouvé
    		...
     
    		# Choix du joueur
    		...
     
    		# La lettre choisie est mémorisée si elle ne l'a pas déjà été
    		...
     
    		# Calcul chances restantes
    		...
    	# while
    # pendu()
    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]

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2011
    Messages : 65
    Par défaut
    Intéressant...Par contre à première vue je ne vois pas comment faire pour 'Mémoriser' une lettre comme tu dis.

    Stocker la lettre dans une liste vide au préalable? Puis vérifier à chaque nouvelle proposition si cette lettre est présente dans la liste?

    Puis juste histoire de pas être trop mélangé, ce que tu fournis la n'est qu'une partie du jeu n'est-ce pas?


    Mon impression est que tu est parti bille en tête à programmer sans penser suffisemment à ton algo.


    Je te donne les commentaires de mon code en espérant qu'ils t'aideront à trouver ton alog...
    Mhhh oui et non à mon sens mais si tu as cette impression c'est que je devrais certainement reprendre cette étape Merci à toi!

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