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 :

Organiser son projet, coder propre


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 45
    Points : 38
    Points
    38
    Par défaut Organiser son projet, coder propre
    Bonjour, bonsoir,

    Je vous explique mon projet : je dois coder le jeux 'La bataille Navale'

    J'ai déjà fais la grille (plateau de jeux), le clique sur celle ci renvoi les bonnes coordonnée, j'ai créée quelques classes et plusieurs fonctions utiles ...

    Maintenant je souhaite tout rassembler dans un main, mais je ne sais comment m'y prendre proprement. Donc il faudrait en arrivant, arriver sur une page de connexion puis sur le plateau de jeux.

    Après mettre bien renseigné j'ai lus qu'il était conseiller de mettre son application dans une classe qui hérite de tkinter, est ce réellement conseillé, utilisé et utile dans mon cas ?

    Après j'ai lus le fameux if __name__ == '__main__', cependant je ne comprend pas bien sont réel impact dans le code, je sais seulement que name renvoie le nom du script python en cours et que tout ce qui est dans ce if() s'effectuera si, nous nous trouvons sur le script python 'main' et donc que mettre dedans ?

    A la fin de cette condition j'y ai vu : objet_app.mainloop a quoi sert t'il ? A boucler le code indéfiniment ?

    Tous ça, c'est dans le but de faire un code orienté événementielle, cependant je m'y perd un peu et je ne comprend pas bien la signification de tout ça. Venant de c# qui aide vraiment plus le programmeur dans sa tache, notamment en événementielle je suis un peu perdus.

    Merci à m'aider à y voir plus clair, toute réponses sera grandement appréciée !

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 241
    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 241
    Points : 36 698
    Points
    36 698
    Par défaut
    Salut,

    Vous avez plusieurs sujets:
    1. les différentes fonctionnalités de votre application,
    2. comment arriver à les traduire en code,
    3. comment organiser ce code arriver à rassembler toutes ces fonctionnalités sans que ce soit aussi fragile qu'un château de carte,


    Pour le premier point, la seule limite est votre imagination et sauf à avoir pris le temps de rédiger un peu tout çà pas, nous ne sommes pas dans votre tête.

    Le dernier point n'est pas spécifique à Python ni à la programmation mais relèvent plutôt de l'architecture et sont traités sur DVP dans la rubrique ALM. Si vous imaginez la construction d'une maison, vous admettrez que sans plan, il ne sera pas facile d'arriver à organiser la construction pour arriver à ce qu'on veut.

    Dans un forum de programmation, on pourra vous aider à réaliser les détails de quelques unes des fonctionnalités i.e. les traduire en Python... mais difficile de savoir quelle maison vous voulez construire ni les technologies adaptées à vos savoirs faire et votre budget (temps). Autrement dit, c'est le point 2.

    Ce qui nous laisse au moins cette question:
    Citation Envoyé par Romaiiiiiin Voir le message
    Après mettre bien renseigné j'ai lus qu'il était conseiller de mettre son application dans une classe qui hérite de tkinter, est ce réellement conseillé, utilisé et utile dans mon cas ?
    classes et héritages sont des notions de programmation orientée objet. Avec des langages comme Java, pas facile d'écrire du code qui ne soit pas dans une classe, avec Python, vous avez le choix.
    C'est bien embêtant car, du coup, c'est à vous d'apprécier pourquoi opter pour A ou B...
    En plus, çà ne touche qu'à l'organisation du code. Dit autrement que vous choisissiez A ou B, les fonctionnalités de votre application seront identiques.
    En fait lorsque vous écrivez une application tkinter, ca ressemble à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import tkinter as tk
    # les fonctionnalités de votre code.
    if __name__ == "__main__":
          root = tk.Tk()
          # creation de la fenêtre principale
          # affichage de la fenêtre principale
          tk.mainloop() # et c'est parti
    Techniquement, le if __name__ == "__main__" permet différencier l'utilisation du script comme "programme" (dans ce cas, __name__ est "__main__") ou comme module (importé par un autre script). Si vous ne projetez pas d'utiliser votre script dans les 2 cas, ce n'est pas utile... Mais c'est peut être intéressant pour arriver à différentier rapidement le "main" de votre code.

    Si vous voulez raconter çà avec des classes, çà va ressembler à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import tkinter as tk
     
    # les fonctionnalités de votre code.
     
    class App(tk.Tk):
          def __init__(self):
               super().__init__()
          # creation de la fenêtre principale
          # affichage de la fenêtre principale
     
    if __name__ == "__main__":
          app = App()
          tk.mainloop() # et c'est parti
    Un peu plus de lignes de code pour 0 fonctionnalités en plus

    Tous ça, c'est dans le but de faire un code orienté événementielle, cependant je m'y perd un peu et je ne comprend pas bien la signification de tout ça. Venant de c# qui aide vraiment plus le programmeur dans sa tache, notamment en événementielle je suis un peu perdus.
    La programmation pilotée par les événements n'a rien à voir avec la programmation classique (dite séquentielle). Ca s'apprend et pour çà il y a de bons tutos comme le Swinnen.

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

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 45
    Points : 38
    Points
    38
    Par défaut
    Merci beaucoup, ton commentaire m'a beaucoup aidé, en faite c'est ce système d'application dans une classe qui ma perturbé.

    Je vais poursuivre, je repasserais si j'ai d'autre soucis. Encore merci

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 45
    Points : 38
    Points
    38
    Par défaut
    Je repose ici pour évite de recréer un sujet :

    Je n'arrive pas à faire boucler mon programme, je veux arriver sur une page de connexion, une fois qu'on a cliquer sur le bouton jouer et qu'on a entré un nom on lance le jeux, le problème c'est que je rentre dans la fonction Connexion mais que je n'en sort jamais alors que quand je clique sur je bouton jouer je modifie une variable globale qui détermine si on lance la partie ou non :

    Main :

    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
     
    import tkinter as tk
     
    playerName = None
     
    if __name__ == '__main__':
     
        root = tk.Tk()
        root.title('Bataille Navale')
     
        if(playerName == None):
            Connexion(tk)
     
        else:
            // ON LANCE LA PARTIE
     
        root.mainloop()
    Connexion :

    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
     
     
    def Connexion(tk):
        global playerName
     
        def OnButtonClick():
            if(entryVariable.get() != ''):
                playerName = entryVariable.get()
     
        entryVariable = tk.StringVar()
        entry = tk.Entry(textvariable = entryVariable)
     
        button = tk.Button(text='Jouer !', command=OnButtonClick)
     
        entry.pack()
        button.pack()

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 241
    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 241
    Points : 36 698
    Points
    36 698
    Par défaut
    Salut,

    Pas facile de comprendre ce que vous racontez en français et le code qui pourrait donner des idées n'étant pas fonctionnel...
    Désolé

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

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 45
    Points : 38
    Points
    38
    Par défaut
    Oui dsl pour le code j'avais fais quelques modifications que j'ai oublié d'enlever. J'ai rééditer le code.

    Donc pour résumer :

    1 - Page de connexion avec un tk.Entry + tk.Button. Quand on clique sur le Button :
    2 - Si tk.Entry n'est pas vide alors on affecte à la variable globale playerName, le nom écrit par l'utilisateur dans le Entry
    3 - Donc puisque playerName n'est plus égale à None, je ne souhaite plus avoir cette page de connexion mais le plateau de jeux.

    Le problème c'est que le changement de valeur de la variable globale playerName ne change rien. En claire je souhaite change de fenêtre en cliquant sur le Button, pensant que le mainloop faisait une boucle du code qui se situe entre root = tk.Tk() et root.mainloop je n'avais qu'à mettre une condition entre, mais nan. Je ne comprend toujours pas comment fonctionne python. Merci.

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 241
    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 241
    Points : 36 698
    Points
    36 698
    Par défaut
    Salut,

    Citation Envoyé par Romaiiiiiin Voir le message
    Je ne comprend toujours pas comment fonctionne python.
    Il faudrait surtout que vous compreniez comment peut fonctionner un programme piloté par les événements. C'est tellement bien expliqué dans le tuto. que je vous ai mentionné dans ma première réponse que je ne peux que vous recommander de passer un peu de temps à le lire (faire quelques exercices serait pas mal non plus).

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 10/08/2011, 12h16
  2. Organiser son projet sous Eclipse
    Par milach dans le forum Eclipse C & C++
    Réponses: 0
    Dernier message: 01/12/2009, 16h15
  3. [DJANGO] Organiser son projet
    Par pacificator dans le forum Django
    Réponses: 2
    Dernier message: 17/03/2009, 16h16
  4. Organiser son projet
    Par Kalite dans le forum MFC
    Réponses: 2
    Dernier message: 07/06/2007, 17h56
  5. Organiser son projet
    Par Hybrix dans le forum Développement 2D, 3D et Jeux
    Réponses: 5
    Dernier message: 25/05/2007, 22h32

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