Partage
  • Partager sur Facebook
  • Partager sur Twitter

utiliser un nom parlant pour les if (Pygame)

Sujet résolu
    24 mars 2019 à 20:15:20

    voila je cherche a rendre mon code plus lisible

    j'ai des condition avec des intitulé super long

    et je ne sais pas comment en empaqueter dans un nom clair

    j'ai tester def, class, nom = truc and truc2

    rien ne semble fonctionner parfaitement, je passe à coté de quelque chose simple sans doute

    voila un exemple

    import pygame, sys
    from pygame.locals import *
    
    red = (196, 19, 19)
    
    pygame.init()
    root = pygame.display.set_mode((200, 200), 1, 16)
    bt1 = pygame.draw.rect(root, red, (50, 50, 30, 30))
    pygame.display.flip()
    
    condi1 = 1
    condi2 = 2
    condi3 = 1
    condi4 = 2
    
    # condition_bt1 = ???
    
    while True:
        for event in pygame.event.get():
            if event.type == QUIT:
                pygame.quit()
                sys.exit()
    
            if bt1.collidepoint(pygame.mouse.get_pos()) and (pygame.mouse.get_pressed()[0] != 0) \
                    and condi1 == 1 and condi2 == 2 and condi3 == 1 and condi4 == 2:
                msg = pygame.font.SysFont(None, 20)
                msg1 = msg.render("super", 1, red)
                root.blit(msg1, (100, 60))
                pygame.display.flip()
                condi1 += condi1


    voila pour l'exemple, mais j'ai des if avec 10 variable à vérifier, le code fait des millier de ligne c'est pas facile de s'y retrouver malgres des commentaire abondant

    merci à vous pour vos idée ;)

    -
    Edité par obsolete 24 mars 2019 à 20:16:34

    • Partager sur Facebook
    • Partager sur Twitter
      24 mars 2019 à 22:13:40

      Salut

      Tu pourrais les regrouper sous forme de variables booléennes définies dans des lignes avant la condition et ensuite tu les assembles

      Par exemple :

      cond1 = bt1.collidepoint(pygame.mouse.get_pos()) and (pygame.mouse.get_pressed()[0] != 0)
      cond2 = condi1 == 1 and condi2 == 2 and condi3 == 1 and condi4 == 2
      if cond1 and cond2 :



      • Partager sur Facebook
      • Partager sur Twitter
        25 mars 2019 à 16:41:21

        Codz_01 a écrit:

        Salut

        Tu pourrais les regrouper sous forme de variables booléennes définies dans des lignes avant la condition et ensuite tu les assembles

        Par exemple :

        cond1 = bt1.collidepoint(pygame.mouse.get_pos()) and (pygame.mouse.get_pressed()[0] != 0)
        cond2 = condi1 == 1 and condi2 == 2 and condi3 == 1 and condi4 == 2
        if cond1 and cond2 :



        Merci pour ta réponce ;)

        enfaîte c'est ça mon problème, c'est que ça ne marche pas ce que tu me dis, et que j'ai déja essayé. 

        import pygame, sys
        from pygame.locals import *
        
        red = (196, 19, 19)
        
        pygame.init()
        root = pygame.display.set_mode((200, 200), 1, 16)
        bt1 = pygame.draw.rect(root, red, (50, 50, 30, 30))
        pygame.display.flip()
        
        
        cond1 = bt1.collidepoint(pygame.mouse.get_pos()) and (pygame.mouse.get_pressed()[0] != 0)
        
        while True:
            for event in pygame.event.get():
                if event.type == QUIT:
                    pygame.quit()
                    sys.exit()
        
                if cond1:
                    msg = pygame.font.SysFont(None, 20)
                    msg1 = msg.render("super", 1, red)
                    root.blit(msg1, (100, 60))
                    pygame.display.flip()

        le probleme est que la sourie ne réagi plus la (ou dans pas comme il faut dans mon programme)

        les variable (condi1 ext) mis a part.

        je voulais tout inclure moi dans un seul intitulé.

        je note l'idée pour les variable ce qui est déja bien dans un 1er temps.

        v1= varia1 and varia2 and varia3


        -
        Edité par obsolete 25 mars 2019 à 16:42:03

        • Partager sur Facebook
        • Partager sur Twitter
          25 mars 2019 à 16:58:07

          Dans le code que tu viens de reposter il faut initialiser condi1 (de la ligne 12) juste avant le if de la ligne 20

          Car dans ton code actuel condi1 est initialisée une première fois au début du prgm puis n'est plus jamais réassignée

          • Partager sur Facebook
          • Partager sur Twitter
            25 mars 2019 à 19:13:12

            Codz_01 a écrit:

            Dans le code que tu viens de reposter il faut initialiser condi1 (de la ligne 12) juste avant le if de la ligne 20

            Car dans ton code actuel condi1 est initialisée une première fois au début du prgm puis n'est plus jamais réassignée


            yes merci

            alors pour comprendre, la boucle ne prend pas en compte ce qu'il y a avant ?

            mais si je supprime la ligne 12 et que j'initialise juste condi1 (une variable ?)

            ça marche.. (j'ai testé)

            j'essai de comprend la logique mais c'est floue, je vais chercher un peu d'info sur le sujet :)

            en tous cas je vais tester quelque modif dans mon "vrai" programme pour voir si tout se passe nickel ;)

            • Partager sur Facebook
            • Partager sur Twitter
              26 mars 2019 à 1:16:49

              obsolete a écrit:

              alors pour comprendre, la boucle ne prend pas en compte ce qu'il y a avant ?

              Si, mais il faut que la ligne de code soit exécutée à chaque évènement pour que la valeur de la variable soit mise à jour, sinon tu as toujours la même valeur.

              C'est pour ça que tu as une boucle, pour que ton bout de code se réexécute à chaque évènement (clic ou mouvement de souris, appui sur des touches...).

              • Partager sur Facebook
              • Partager sur Twitter

              Blond, bouclé, toujours le sourire aux lèvres...

              utiliser un nom parlant pour les if (Pygame)

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown