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 :

Demande d'avis - Mon premier projet python


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Autodidacte débutant
    Inscrit en
    Novembre 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Autodidacte débutant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2021
    Messages : 10
    Points : 10
    Points
    10
    Par défaut Demande d'avis - Mon premier projet python
    Bonjour à tous !

    Je poste sur ce forum depuis un long moment pour vous faire part de mon tout premier projet python. Je suis autodidacte et je me forme sur mon temps libre en dehors de mon travail actuel (qui n'a rien à voir avec la programmation). Je sais que c'est un long chemin mais je veux vraiment m'améliorer et devenir développeur.

    Du coup, j'aimerais partager avec vous mon premier projet python (un mini-jeu où le but est de trouver un montant généré aléatoirement, que j'ai refait en MVC avec l'interface graphique Tkinter).

    N'hésitez pas à me donner vos avis, sur la qualité de mon code, la lisibilité, manque-t-il des notes ? peut-on simplifier/optimiser le code ? Enfaite je n'ai jamais eu d'avis de la part de programmeur confirmés, du coup j'aimerais voir où je fais des erreurs pour ne plus les reproduire. Le code et le jeu fonctionne mais je sais qu'on peut toujours optimiser.

    Merci pour vos avis ! Voici le lien du projet Github : https://github.com/Maksy37/Find-The-Number

    Bonne journée !

    PS : n'hésitez pas à me dire les choses même si c'est dur ahah il faut que je vois les choses en face mdr

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    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 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Salut

    Il est pas mal fait ton jeu. Des graphiques sympas, de jolies couleurs. Déjà ça donne envie (même si le jeu en lui-même est assez basique). Si ça t'intéresse tu trouveras ici un programme qui fait l'inverse: tu choisis un nombre et c'est le programme qui le cherche.

    Maintenant les critiques pour le jeu
    • ce serait bien d'avoir les limites min/max histoire d'avoir un départ honnête et équitable
    • tu n'aimes pas le français ou tu penses qu'écrire en anglais ça fait genre? Accessoirement il faudra penser plus tard à l'internationalisation (mettre les textes dans des fichiers de langue et ainsi pouvoir choisir sa langue). Je ne sais pas si tk sait faire ça mais Qt le fait super bien (sauf qu'il faut alors passer à Qt)


    Les critiques Python
    • un programme Python commence toujours par ces deux lignes
      Code python : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      #!/usr/bin/env python3
      # coding: utf-8
      La première indique à l'OS quel programme permettra de traiter ce fichier si on l'exécute directement (double clic, appel direct) et la seconde, qui n'est plus nécessaire depuis Python3 mais que je conseille tout de même d'indiquer quand-même, indique l'encoding de ton source.
    • chez-moi (je suis sous Linux) le fichier "assets/icologo.ico" n'est pas pris en compte (souci de téléchargement? souci d'OS?). Mais en mettant la variable self.icon=None ça passe.
      Ce qui amène à ces attributs d'instance self.icon, self.bgcolor et autres. Un attribut interne à une classe (qui est fait pour aider la classe à travailler mais qui n'a pas à être connu du dehors) se met en attribut privé. Suffit de lui mettre deux underscores devant son nom self.__bgcolor=....
      Mais si l'attribut n'a pas vocation à être associé à l'instance, si par exemple tous les Screen éventuels que tu pourrais avoir dans ton programme, ont le même bgcolor, alors autant mettre ces attributs en attributs statiques de classe (en les gardant en privé)
      Code python : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      class Screen: # Classe qui gère la vue de l'écran #
      	__titlename = 'Find The Number !'
      	__icon = 'assets/icologo.ico'
       
      	def runmenu(self, parameters, gamescreen, controller): # Affichage de l'écran de menu principal #
      		menuwindow = Tk()
      		menuwindow.title(Screen.__titlename)
      		menuwindow.iconbitmap(Screen.__icon)
    • tu peux éviter tous ces paramètres interminables en les regroupant dans un dico. Ensuite tu passes juste le dico aux différents éléments du jeu. Un exemple ici
    • si une liste n'a pas vocation à être modifiée, alors elle n'est pas nécessaire => un tuple suffit checkbutton.configure(command = lambda: (gamewindow.destroy(), gamescreen.runmenu(parameters, gamescreen, controller)))

    Voilà, bon courage, tes débuts sont prometteurs.
    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]

  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 Maksy Voir le message
    Du coup, j'aimerais partager avec vous mon premier projet python (un mini-jeu où le but est de trouver un montant généré aléatoirement, que j'ai refait en MVC avec l'interface graphique Tkinter).
    Le MVC n'est pas une réalisation explicite de classes View, Model, Controller que l'on plaque sur n'importe quel GUI... mais la réalisation des rôles et responsabilités correspondants avec ce qui est proposé par le GUI. Ce qui suppose maîtriser un minimum la bibliothèque utilisée.

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

  4. #4
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    Bonjour,

    Certaines choses sont répétitives, comme par ex.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    command=lambda: [
        parameters.difficultyset(3),
        parameters.numbertofind(),
        menuwindow.destroy(),
        self.rungame(parameters, gamescreen, controller)
    ]
    pourrait être une fonction...
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  5. #5
    Membre à l'essai
    Homme Profil pro
    Autodidacte débutant
    Inscrit en
    Novembre 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Autodidacte débutant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2021
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Merci à tous pour vos réponses !

    - Pour répondre à Sve@r :

    Merci pour les conseils sur le jeu en lui-même, je vais faire la modification pour le minimum et le maximum. Concernant l'anglais, j'avais commencé à faire le jeu en français mais je suis passé en anglais au cas où des programmeurs étrangers voyait mon code pour me donner des conseils.

    Merci encore pour ta réponse et ces précieux conseils. Je vais essayer d'améliorer mon code et ensuite j'essaierai d'autres projets pour pratiquer à fond.

    - Pour répondre à Wiztricks :

    Merci pour ces précisions sur le MVC, je pensais qu'il fallait effectivement contenir ça dans ces trois classes là ^^ J'ai eu un peu de mal.. Tu aurais des choses sur la MVC ?

    - Pour répondre à Fred1599 :

    Je vais essayer de modifier ça, j'ai vu aussi tes commentaires sur Github, merci beaucoup !

    Bonne soirée à tous !

  6. #6
    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
    Citation Envoyé par Maksy Voir le message
    Merci pour ces précisions sur le MVC, je pensais qu'il fallait effectivement contenir ça dans ces trois classes là ^^ J'ai eu un peu de mal.. Tu aurais des choses sur la MVC ?
    Rien qui ne soit déjà accessible sur Internet.

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

  7. #7
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    Citation Envoyé par Maksy Voir le message
    - Pour répondre à Fred1599 :

    Je vais essayer de modifier ça, j'ai vu aussi tes commentaires sur Github, merci beaucoup !
    Si déjà tu merge les changements proposés sur mon pull request, ça permettra d'y voir plus clair pour chacun des participants.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Accessoirement il faudra penser plus tard à l'internationalisation (mettre les textes dans des fichiers de langue et ainsi pouvoir choisir sa langue). Je ne sais pas si tk sait faire ça mais Qt le fait super bien (sauf qu'il faut alors passer à Qt)[/list]
    Càd ?
    A ma connaissance tkinter ne gère pas les langues mais ce n'est pas bien compliqué de coder ça widget_1.configure(text=langues[langue_choisie]['Hello']) par exemple.

  9. #9
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    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 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par LeNarvalo Voir le message
    mais ce n'est pas bien compliqué de coder ça widget_1.configure(text=langues[langue_choisie]['Hello']) par exemple.
    Oui, ça c'est pour les chaines de bébé. Mais va t'en faire la même chose pour widget_1.configure(text="Bonjour %s, choisissez un nombre compris entre %d et %d, il vous reste %d essai%s" % (joueur, nbMin, nbMax, chances, "s" if chances > 1 else ""))...
    Ben il se trouve que Qt possède un outil qui permet de faire cela.
    Il est juste nécessaire que toutes tes strings de ton appli soient intégées dans un QCoreApplication.translate(). Ensuite il existe 2 outils
    • le premier lupdate, extrait toutes les strings de translate() et les met dans un fichier particulier. Ensuite on ouvre ce fichier via QLinguist qui offre un IHM de traduction qui montre à gauche la chaine d'origine et à droite la traduction, que tu dois évidemment taper, mais qui gère les paramètres tel que %s etc. Ca gère même le contexte singulier/pluriel (mon "s" if sources > 1 else "". On enregistre chaque traduction dans un fichier dédié (en, es, de, cn, ...)
    • puis on appelle le second lrelease, qui convertit chaque traduction en un fichier de ton choix (.en, .de, .cn, ...). Ensuite il suffit d'appeler le bon fichier via QTranslator par ton appli Qt. Tu appelles le ".de" et tu as tout en allemand. Tu appelles le ".cn" et tu as tout en chinois. Tu peux utiliser QLocale.system().name() qui contient la langue de ton OS donc ça devient automatique.
      Tu as exemple ici d'appel de QTransator. Si tu remplaces "qt_%s" % QLocale.system().name() par "qt_en" ou "qt_de" ou même "qt_ar" ou "qt_ja" pour taper dans l'exotisme et tu verras le résultat lors de l'appui sur le bouton "Quitter" (j'ai essayé "qt_cn" mais malheureusement le chinois n'a pas été intégré)
    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]

  10. #10
    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
    Citation Envoyé par Sve@r Voir le message
    Ben il se trouve que Qt possède un outil qui permet de faire cela.
    Qt a des solutions déjà dans les bibliothèques standards.

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

  11. #11
    Invité
    Invité(e)
    Par défaut
    J'ai pas bien compris, tu dois faire la traduction toi même au préalable ?

    Sinon pour tkinter on pourrait imaginer un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    def translate(lg,i,*args):
        dico = {"en":{1:"Hello, * the game start in * seconds"},\
                "fr":{1:"Bonjour, * le jeu commence dans * secondes"}}
     
        phrase = dico[lg][i].split('*')
     
        for index, arg in enumerate(args):
            phrase[index]+=str(arg)
     
        return ''.join(phrase)
     
    >>> translate("en",1,"Toto l'asticoti",30)
    "Hello, Toto l'asticoti the game start in 30 seconds"
    Pas trop compliqué à coder non plus. Oups mauvaise idée finalement... Voilà qui est mieux.
    Dernière modification par Invité ; 20/11/2022 à 11h25.

  12. #12
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    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 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par LeNarvalo Voir le message
    J'ai pas bien compris, tu dois faire la traduction toi même au préalable ?
    Ca il faut la faire, ça reste incontournable. Simplement les outils Qt permettent d'extraire les strings à traduire et les présenter bien proprement dans un fichier spécial utilisable par le tracucteur (qui peut donc être un non informaticien).
    D'ailleurs quand tu appelles QCoreApplication.translate() tu lui passes 3 paramètres
    • un nom (ainsi plus tard le traducteur peut regrouper les chaines par noms identiques). Moi j'y mets le nom de mon fichier Python
    • la chaine à traduire
    • un contexte explicatif permettant au traducteur de comprendre à quoi sert la chaine

    Un exemple
    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
    self.setWindowTitle(
    	QCoreApplication.translate(
    		"VerifQt5",
    		"Vérification Qt (Python {0})",
    		"Note: titre de la fenêtre".encode("utf-8"),
    	).format(
    		".".join(
    			"%d" % sys.version_info.__getattribute__(x) for x in (
    				"major",
    				"minor",
    				"micro",
    			)
    		)
    	)
    )
    Le traducteur, lui, ne verra que le texte "Vérification Qt (Python {0})" et la notice explicative "Note: titre de la fenêtre" indiquant que ce texte est un titre de fenêtre. Tout ce qui est dans le format() n'étant pas à trduire je l'ai laissé en string Python et non string Qt.
    Mais comme les translate() sont associatifs, on peut alors associer et la traduction Qt, et la factorisation par itération Python. Ce qui a donné (pour une autre string)
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    QMessageBox.aboutQt(
    	self,
    	title=QCoreApplication.translate(
    		"VerifQt5",
    		"à propos de {0}...",
    		"Note: titre de la fenêtre".encode("utf-8"),
    	).format(
    		", ".join(
    			(
    				QCoreApplication.translate(
    					"VerifQt5",
    					"Qt ({0})",
    					"Note: titre de la fenêtre".encode("utf-8"),
    				).format(QT_VERSION_STR),
    				QCoreApplication.translate(
    					"VerifQt5",
    					"SIP ({0})",
    					"Note: titre de la fenêtre".encode("utf-8"),
    				).format(SIP_VERSION_STR),
    				QCoreApplication.translate(
    					"VerifQt5",
    					"PyQt ({0})",
    					"Note: titre de la fenêtre".encode("utf-8"),
    				).format(PYQT_VERSION_STR),
    			),
    		)
    	)
    )
    Au résultat les 3 valeurs version Qt,version sip et version PyQt s'affichent à suivre ce qui donne un titre comme "à propos de Qt (version xxx), SIP (version yyy), PyQt (version zzz)". Mais si je veux rajouter une autre valeur ou en supprimer , je la rajoute ou la supprime dans le join() ce qui simplifie les évolutions.
    Et du côté traduction, le traducteur, lui, verra
    • à propos de {0}...
    • Qt ({0})
    • SIP ({0})
    • PyQt ({0})

    Qu'il traduira (si c'est en anglais) par
    • about {0}...
    • Qt ({0})
    • SIP ({0})
    • PyQt ({0})

    (ok pour l'anglais, il n'y a pas grand chose à traduire sur les sigles mais peut-être qu'en russe...)

    Citation Envoyé par LeNarvalo Voir le message
    Pas trop compliqué à coder non plus.
    Le souci n'est pas le codage mais la traduction. Il faut
    • récupérer et regrouper toutes les chaines à traduire
    • les traduire

    Un travail qui prend du temps et que Qt a aidé à simplifier.
    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]

  13. #13
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

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

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 103
    Points : 4 449
    Points
    4 449
    Par défaut
    bonjour
    Citation Envoyé par LeNarvalo Voir le message
    tu dois faire la traduction toi même au préalable ?
    Pas trop compliqué à coder non plus.
    Pour un programme multi langues, sous linux j'utilise gettext (si code non Qt). Pour windows, jamais testé, mais il semble qu'il existe un outil pour l'utiliser ?
    $moi= ( !== ) ? : ;

  14. #14
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

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

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 103
    Points : 4 449
    Points
    4 449
    Par défaut
    bonjour
    Citation Envoyé par Maksy Voir le message
    je veux vraiment m'améliorer et devenir développeur
    "devenir développeur", ok je vais donc n'adresser à un développeur
    tkinter peut être bon pour un début, mais si tu désires devenir développeur "pro", il faut passer rapidement à un framework pro


    peut-on simplifier/optimiser le code ?
    2 choses bien différentes.
    - pour l'optimisation, cela n'est à faire que si ton application souffre (d'une chose). Sinon c'est une perte de temps (et pour un pro, le temps, c'est de l'argent)
    - pour la simplification voir partie suivante

    j'ai refait en MVC
    Résultat, (pour moi !) : le code devient extrêmement complexe alors que le but de mvc est justement l'inverse.

    ici, c'est plus la faute à tkinter qui ne se prête pas à cette architecture. Le résultat ici, avec ta sauce mvc me laisse très perplexe.


    Si parameters était dans la classe Controller, le code ne serait pas plus simple ?


    Autre, tu crée parameters et controller dans main.py que tu passes en variable dans une fonction "de ta vue"
    - passer un contrôleur dans une vue
    - les méthodes de l'objet controller reçoivent un objet contrôleur en paramètre ? et le repasse encore à la vue... mais pourquoi ne pas passer self ?


    Fichier parameters...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class Parameters: # Classe qui gère les paramètres du jeu #
    Merci pour m'avoir perdu
    En fait cette classe gère un paramètre MAIS surtout l'état du jeu : elle contient le compteur
    Dans Controller parameters.difficulty_attempts -= 1 fan du nom et dans un esprit mvc, je préfère une fonction

    Parameters.difficultyset() : Il serait bien de gérer les dépassements (si difficulté est 5)
    ici difficulty_choice = {1: 20, 2: 10, 3: 5}, comme beaucoup ailleurs, on trouve des constantes disséminées partout dans le code.
    perso, je déteste, autant les extraire du code et voir les regrouper. Même dans Screen.runmenu(), il serait possible de faire une boucle sur les X niveaux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    levels = (
     {count:"20", image:"hard.jpg", ..} ,
     {count:"10", image:"normal.jpg", ..} ,
    )
    for level in levels(levels) ...
    Avec ce mini exemple, on peut envisager beaucoup plus de souplesse dans le jeu. une class Config et pourquoi pas un fichier config

    ------------

    Autre chose, pourquoi ne pas utilise pep8 (minimum)? oui, je sais que tkinter ne connais pas mais tout codeur python est censé l'utiliser : Dans un contexte "pro", on partage notre code avec une équipe, il nous faut donc une norme d'écriture pour se relire et se comprendre entre nous.

    -------------

    So on fait du MVC, alors la partie modèle est normalement autonome ! Donc il est facile de faire des tests dessus (Dans un contexte pro: les tests sont obligatoires)
    $moi= ( !== ) ? : ;

Discussions similaires

  1. Besoin d'aide pour guider mon premier projet
    Par FabaCoeur dans le forum Débuter avec Java
    Réponses: 16
    Dernier message: 03/12/2007, 09h09
  2. Mon premier projet GWT
    Par gufra dans le forum GWT et Vaadin
    Réponses: 1
    Dernier message: 07/11/2007, 13h20
  3. [ affichage contacts ] Mon premier projet GWT
    Par hocinema dans le forum GWT et Vaadin
    Réponses: 5
    Dernier message: 26/08/2007, 21h15

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