Partage
  • Partager sur Facebook
  • Partager sur Twitter

Gérer les contrôles d'un jeu Pygame

    30 juin 2020 à 23:07:33

    Bonsoir à tous, 

    Je cherche à faire en sorte que les contrôles d'un jeu Pygame puissent se personnaliser, par exemple que tu puisse choisir sur quelle touche il faut appuyer pour aller à droite. Je me demander si c'était possible de faire ça, et de garder stockées les touches des contrôles dans un fichier .txt pour les retrouver quand on rouvre le jeu. Je n'ai pas trouvé de solution sur Internet, donc si quelqu'un peut m'aider, ce serait vraiment sympa.

    Merci beaucoup !

    • Partager sur Facebook
    • Partager sur Twitter
      30 juin 2020 à 23:52:10

      À quel niveau se trouve la difficulté ? L'interface des options de contrôle ? La sauvegarde ?
      • Partager sur Facebook
      • Partager sur Twitter

      Python c'est bon, mangez-en. 

        1 juillet 2020 à 13:18:47

        Un peu des deux, ils faudrait une interface à la Minecraft, où tu cliques sur le contrôle que tu veux modifier, puis sur la touche qui va y être associée. Pour la sauvegarde en elle même je n'ai aucune idée de comment faire.
        • Partager sur Facebook
        • Partager sur Twitter
          1 juillet 2020 à 18:50:29

          Est ce que tu sais afficher une image de l'interface (sans interaction pour le moment), et est ce que tu sais utiliser la class Rect ?
          • Partager sur Facebook
          • Partager sur Twitter

          Python c'est bon, mangez-en. 

            13 juillet 2020 à 16:59:21

            Désolé pour la réponse un peu tardive, oui, je sais utiliser pygame, mais je ne crois pas pouvoir faire ce que je veux faire (gérer les contrôles grâce à un .txt) juste avec ce module...
            • Partager sur Facebook
            • Partager sur Twitter
              13 juillet 2020 à 18:43:34

              à quoi ressemblerait le .txt ?
              • Partager sur Facebook
              • Partager sur Twitter

              Python c'est bon, mangez-en. 

                13 juillet 2020 à 19:00:03

                Un truc du genre 
                Gauche : flèche gauche
                Droite : flèche droite
                Tourner : w
                .
                .
                .

                 Et encore, même pas besoin de mettre la fonction de la touche, juste de mettre chaque touche qui correspondrait à un evènement dans l'ordre

                • Partager sur Facebook
                • Partager sur Twitter
                  13 juillet 2020 à 19:23:18

                  ok. Faut qu'il y ait un lien entre le texte et la touche physique. Tu peux créer un dico par exemple:

                  en clé tu as le nom que tu donnes à une touche et en valeur, la valeur physique de la touche.

                  from pygame import *
                  
                  keys ={ "a":K_a,
                          "b":K_b,
                          "c":K_c,
                          "d":K_d,
                          "e":K_e,
                          "f":K_f,
                          "g":K_g,
                          "h":K_h,
                          "i":K_i,
                          "j":K_j,
                          "k":K_k,
                          "l":K_l,
                          "m":K_m,
                          "n":K_n,
                          "o":K_o,
                          "p":K_p,
                          "q":K_q,
                          "r":K_r,
                          "s":K_s,
                          "t":K_t,
                          "u":K_u,
                          "v":K_v,
                          "w":K_w,
                          "x":K_x,
                          "y":K_y,
                          "z":K_z,
                         "up":K_UP,
                       "down":K_DOWN,
                      "right":K_RIGHT,
                       "left":K_LEFT,
                     "escape":K_ESCAPE,
                      "space":K_SPACE}
                          
                  ctrl = '''e,x,q,f,space''' # <== fichier .txt
                  
                  monter,descendre,gauche,droite,quitter = map(keys.get,ctrl.split(','))
                  
                  display.set_mode((200,200))
                  
                  while True:
                      
                      ev = event.wait()
                      if ev.type == KEYDOWN:
                          if ev.key == quitter: break
                          elif ev.key == monter: print('monter')
                          elif ev.key == descendre: print('descendre')
                          elif ev.key == droite: print('droite')
                          elif ev.key == gauche: print('gauche')
                  
                  



                  -
                  Edité par josmiley 13 juillet 2020 à 19:26:17

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Python c'est bon, mangez-en. 

                    13 juillet 2020 à 19:28:41

                    Merci beaucoup pour la réponse, mais je viens tout juste de trouver une solution : on peut remplacer chaque pygame.K_ par un nombre, que l'on peut connaitre grâce à une nouvelle fonction de pygame2.0.0 : pygame.key.key_name()

                    Voilà la source pour ceux qui se heurteront au même problème que moi, et merci beaucoup Josmiley pour l'aide ;-)

                    https://www.pygame.org/docs/ref/key.html

                    • Partager sur Facebook
                    • Partager sur Twitter
                      13 juillet 2020 à 19:39:48

                      oui je connais, mais pas tlm tourne avec pygame 2.0.0.
                      • Partager sur Facebook
                      • Partager sur Twitter

                      Python c'est bon, mangez-en. 

                        13 juillet 2020 à 21:45:09

                        J'ai fait la mise à jour exprès, ça m'évite de faire un dictionnaire, mais ton astuce est vraiment très bien trouvée ! Sinon, petite question indiscrète, depuis quand codes tu en python ? Je te vois partout sur le forum et tes compétences ont l'air infinies dans le sujet x)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          13 juillet 2020 à 22:07:00

                          Depuis quand je ne sais plus, pour le reste c'est exagéré ^^
                          • Partager sur Facebook
                          • Partager sur Twitter

                          Python c'est bon, mangez-en. 

                            13 juillet 2020 à 22:22:52

                            Enfin bon, merci beaucoup, je retourne coder, bonne continuation à toi !
                            • Partager sur Facebook
                            • Partager sur Twitter

                            Gérer les contrôles d'un jeu 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