Partage
  • Partager sur Facebook
  • Partager sur Twitter

TK Inter Programme pour l'ISN

    23 mars 2015 à 23:46:11

    Bonsoir,

    Avec des amis, nous devons faire un programme afin de passer la spécialité ISN au bac, mais nous débutons en python et rencontrons quelques problèmes...

    Alors l'idée de notre programme est de faire un jeu présent sur portable et nommé Stick Hero, mais nous comptons en faire une version plus simple. Le principe du jeu est d'incarner un personnage qui doit se déplacer de plateformes en plateformes... Entre ces plateformes, il y a des trous. Pour traverser ces plateformes, on doit faire grandir un bâton afin que sa taille permette au personnage d'arriver sur la plateforme, sinon il perd.

    Du coup nous avons commencer à programmer le bâton qui monte lorsqu'on appuie sur n'importe quelle touche mais nous rencontrons des problèmes à rajouter la fonction qui fait descendre le bâton lorsqu'on arrête d'appuyer...

    Voici le code que nous avons commencé :

    from tkinter import *
    
    fen =Tk()
    
    canX, canY = 600, 600
    coul="black"
    
    #création du canevas
    can =Canvas(fen, bg ='dark gray', height =canX, width =canY)
    can.pack(padx =10, pady =10)
    
    yb=300
    xa=100
    ya=300
    xb=100
    
    
    #création de bâton
    def grandir(event):
        global xa, xb, ya, yb, baton
        baton=can.create_line(xa,ya,xb,yb,width=10,fill='black')  #on crée une variable représentant le bâton
        yb=yb-10
        fen.after(100, grandir)  #tout les 100ms
    
    
    
    
    #fonction censée faire tourner le bâton lorsqu'on relâche la touche
    def tourner(event):
        global yb, xb, xa, ya, baton
        can.coords(baton,xa,ya,xb,yb,xa,ya,xb+100,ya)
    
    
    
    
    
    baton=can.coords(xa,ya,xb,yb)
    
    #création des actions
    fen.bind('<KeyPress>', grandir)   #fait grandir le bâton lorsqu'on appuie
    fen.bind('<KeyRelease>', tourner) #lorsqu'on relâche, fait descendre le bâton
    
    
    
    
    fen.mainloop()

    Déjà, on rencontre une erreur Traceback de python lorsqu'on fait grandir le bâton :

    Exception in Tkinter callback
    Traceback (most recent call last):
      File "E:\Clément\Ecole\Lycée\Terminal\ISN\EduPython\App\lib\tkinter\__init__.py", line 1456, in __call__
        return self.func(*args)
      File "E:\Clément\Ecole\Lycée\Terminal\ISN\EduPython\App\lib\tkinter\__init__.py", line 520, in callit
        func(*args)
    TypeError: grandir() takes exactly 1 argument (0 given)

    Ensuite, on n'arrive pas à faire pivoter le bâton afin qu'il se retrouve à l'horizontal une fois qu'on arrête d'appuyer sur une touche.

    Merci d'avance de votre aide !

    • Partager sur Facebook
    • Partager sur Twitter
      24 mars 2015 à 0:49:14

      Salut

      Essaie de mettre dans le paramètre de ta fonction grandir, event = None, je pense que ça solutionnera ton problème.

      • Partager sur Facebook
      • Partager sur Twitter
        24 mars 2015 à 9:18:55

        En faisant cela, le trait ne s'arrête pas de grandir :s
        • Partager sur Facebook
        • Partager sur Twitter
          24 mars 2015 à 16:34:11

          Ben oui c'est ce que ton code est censé faire :D

          def grandir(event):
              global xa, xb, ya, yb, baton
              baton=can.create_line(xa,ya,xb,yb,width=10,fill='black')  #on crée une variable représentant le bâton
              yb=yb-10
              fen.after(100, grandir)  #tout les 100ms

          Sauf erreur de ma part dans ta méthode after tu fais un callback vers grandir toutes les 100 ms donc bon..

          • Partager sur Facebook
          • Partager sur Twitter
            24 mars 2015 à 18:44:08

            Mais je voudrais qu'il ne grandisse que lorsqu'on appuie sur une touche du clavier, et que dès qu'on la relâche, ce bâton pivote pour se retrouver à l'horizontal.
            • Partager sur Facebook
            • Partager sur Twitter

            TK Inter Programme pour l'ISN

            × 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