Partage
  • Partager sur Facebook
  • Partager sur Twitter

Alternative fenetre bind

Bind

Sujet résolu
    8 janvier 2015 à 17:35:25

    Bonjour à tous

    J'aimerai savoir comment faut-il faire pour alterner les clics de la souris, je m'explique: je travail actuellement sur le projet ISOLA en python et dans ce jeu là il y a 2 joueurs.

    Par exemple quand le premier joueur joue il appui sur le clic gauche de la souris pour déplacer son pion ensuite il appui sur la molette de la souris. Ensuite viens le tour du joueur 2 qui appui sur le clic droit pour déplacer son pion puis utilise la molette pour bloquer une case et puis on reprend avec le premier joueur.

    Mon probleme est que je n'arrive pas à alterner les 2

    Fenetre.bind("<Button-1>", I) #on lit le clic gauche pour le pion joueur1
    Fenetre.bind("<Button-2>", RI)#on lit la molette a la case que bloqué par le joueur1
    
    Fenetre.bind("<Button-3>", II) #on lit le clic droit pour le pion joueur2
    Fenetre.bind("<Button-2>", RII)#on lit la molette à la case que bloqué par le joueur2
    

    Sachant que I II et RI RII désigne les différentes fonctions pour les 2 pions.

    J'ai essayé de faire plusieurs if ou des while mais cela n'affecte jamais mon code. Lorsque j'ajoute un if la fonction reste coincée dans la boucle if ou même while

    Merci de votre réponse

    -
    Edité par crymynal01 9 janvier 2015 à 12:08:35

    • Partager sur Facebook
    • Partager sur Twitter
      8 janvier 2015 à 18:04:51

      Salut

      J'ai pas trop compris ce que tu voulais faire, tu veux bind le click droit différemment à chaque fois selon si c'est le joueur 1 ou le joueur 2 ? Le fait de réaffecté une fonction à un bind déjà existant l'écrase donc ça devrait marcher, tu es sûr que tu as mis les binds où il faut ?

      • Partager sur Facebook
      • Partager sur Twitter
        8 janvier 2015 à 22:51:23

        En fait voilà ce que j'ai mis 

        joueur=1
        if joueur==1:
        	Fenetre.bind("<Button-1>", I) #on lit le clic gauche pour le pion joueur1
        	Fenetre.bind("<Button-2>", RI)#on lit la molette a la case que blocqué par le joueur1
        	joueur=2
        	print(joueur)
        else:
        	Fenetre.bind("<Button-3>", II) #on lit le clic droit pour le pion joueur2
        	Fenetre.bind("<Button-2>", RII)#on lit la molette à la case que bloqué par le joueur2
        	print(joueur)
        	
        Fenetre.pack()
        Fenetre.mainloop()

        En fait je ne vois pas pourquoi je n'arrive jamais à passer au else c'est-à-dire contrôler le second joueur 

        Merci de votre réponse

        -
        Edité par crymynal01 9 janvier 2015 à 12:09:20

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          9 janvier 2015 à 10:40:10

          Il faut séparer le travail avec des fonctions bien déterminées.

          from tkinter import *
          
          joueur = [1]
          
          def myBind(f):
              print(f())
          
          
          
          def func1():
              if joueur[0] == 1:
                  joueur[0] = 2
                  return "execution fonction 1"
              
          def func2():
              if joueur[0] == 2:
                  joueur[0] = 1
                  return "execution fonction 2"
          
          root = Tk()
          
          root.bind("<Button-1>", lambda e:myBind(func1))
          root.bind("<Button-3>", lambda e:myBind(func2))
          
          root.mainloop()

          Si je met la variable joueur de type liste, c'est pour éviter le mot clé global... qui n'est pas une bonne idée. On pourrait mettre cela dans un dictionnaire, mais tu ne dois pas connaître je suppose.

          • Partager sur Facebook
          • Partager sur Twitter
            9 janvier 2015 à 12:33:01

            ok merci beaucoup oldProgrammer 

            Je l'ai rajouté dans mon code et j'ai mis mes propres fonctions 

            Merci 

            Bonne fin de journée :)

            • Partager sur Facebook
            • Partager sur Twitter

            Alternative fenetre bind

            × 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