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 du pendu


Sujet :

Python

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien
    Inscrit en
    Février 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Février 2010
    Messages : 59
    Points : 113
    Points
    113
    Par défaut jeu du pendu
    Bonjour,

    J'ai fait un jeu du pendu (c'est dans un tuto). Comme j'ai un niveau basique, j'aimerai bien que quelqu'un corrige les erreurs de codage (le jeu fonctionne) et me dise ce qu'il faudrait modifier pour avoir un code plus efficace. Par exemple, je crois que j'utilise mal la gestion des erreurs, mais il y en a d'autres.

    Merci.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Points : 2 328
    Points
    2 328
    Par défaut
    Tu as beaucoup trop de variables globales. Tes fonctions ont des effets de bords partout ...

    Par exemple dans la fonction sauvegarder_score(score, joueur) quand tu écris dico[joueur] le dico il vient d'ou ? De quelque part d'extérieur à la fonction... et ta fonction modifie le dico.

    Imagine qu'avec de tels effets de bords je pourrais avoir un comportement comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    a=7
    une_fonction()
    print(a)    ###  --> affiche 5
    Toutes les variables que tu manipules dans une fonctions tu dois les donner en paramètres. Si tu les modifie, à ce moment tu dois les passer aussi en sortie. Tout ceci devient finalement assez lourd lorsque le nombre de variables que tu manipules dans une fonction grandit. C'est là qu'est tout l'intérêt des classes que tu devrais utiliser ici ! C'est la première des choses à faire à mon avis avant toutes autres améliorations.

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par lg_53 Voir le message
    Par exemple dans la fonction sauvegarder_score(score, joueur) quand tu écris dico[joueur] le dico il vient d'ou ? De quelque part d'extérieur à la fonction... et ta fonction modifie le dico.
    Il suffit de lire le code pour trouver d'où vient dico:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    def sauvegarder_score(score, joueur):
        """enregistre le score du joueur dans donnees.py"""
        data = lire_fichier('donnees.py')
        dico = data["a"]
        #si le joueur existe déjà son score est ajouté au score
        #preceden)t
        try:
            dico[joueur] = int(dico[joueur])+ score
        #sinon le joueur et son score sont enregistré
        except KeyError:
            dico[joueur] = int(score)
        data["a"] = dico
        enregistrer_fichier('donnees.py', data)
    et côté variables globales, désolé mais il n'y en a pas.

    Mais quand je regarde le code, ce qui me choque c'est le découpage entre "pendu.py" et "fonctions.py". Il n'y a pas grand chose dans le script "pendu.py" qui va tout récupérer dans "fonctions.py".
    Pas de découpage ou un découpage permettant d'avoir dans "pendu.py", tout ce qui concerne la logique du jeu et dans "fonctions.py", les fonctions d'affichage (print...) et de lecture/écriture des données rendrait cela beaucoup plus lisible.
    Pour le reste, mettre les joueurs avec leurs scores dans le même fichier que le dictionnaires des mots à trouver. A priori, ce dernier est un fichier qu'on lira seulement alors que les informations "joueurs" sont mises à jour à chaque partie. Il serait plus sage de séparer les deux: un fichier texte pour les mots à trouver - ce qui permet de les ajouter "à la main"- , un fichier JSON pour joueurs et scores - ce qui permet de voir ce qu'il y a dedans assez simplement - (une table dans une base de données sqlite serait sans doute encore meilleur).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Code en bourne shell du jeu Le "PENDU"
    Par piment dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 20/07/2007, 14h17
  2. Jeu Bonhomme pendu
    Par yinyann86 dans le forum Delphi
    Réponses: 11
    Dernier message: 14/11/2006, 17h03
  3. Le jeu du pendu.
    Par giggs dans le forum C
    Réponses: 5
    Dernier message: 31/10/2006, 13h40
  4. jeu du pendu
    Par krachik dans le forum Langage
    Réponses: 5
    Dernier message: 24/10/2006, 12h48
  5. Réponses: 4
    Dernier message: 24/03/2006, 13h54

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