Partage
  • Partager sur Facebook
  • Partager sur Twitter

Rendre une ligne résistante au colisions ?

    27 février 2016 à 18:03:43

    Bonjour,

    Je tente de faire une labyrinthe sous tkinter, assez simple et d'une taille correcte. J'ai donc creer un canvas dans lequel j'ai placé un cercle qui se déplace avec les touches directionnelles, mais voila j'ai ajouter un mur mais la boule le traverse, existe-t-il une option permettant de rendre le mur résistant au colision et donc interdire la balle de le traverser ?

    Voici mon programme :

    from Tkinter import *
    
    #Fonctions déplacement
    
    def droite(event):
        global a
        global b
        global c
        global d
        global perso
        a=a+5
        c=c+5
        can.coords (perso, a, b, c, d)
    def gauche(event):
        global a
        global b
        global c
        global d
        global perso
        a=a-5
        c=c-5
        can.coords (perso, a, b, c, d)
    def bas(event):
        global a
        global b
        global c
        global d
        global perso
        b=b+5
        d=d+5
        can.coords (perso, a, b, c, d)
    def haut(event):
        global a
        global b
        global c
        global d
        global perso
        b=b-5
        d=d-5
        can.coords (perso, a, b, c, d)
    
    #Fenetre
    
    fen=Tk()
    fen.minsize(1000,500)
    fen.maxsize(1000,500)
    fen.title("Le Labyrinthe")
    
    #Canvas
    
    can=Canvas(fen,width=1000,height=500,bg="goldenrod")
    can.pack()
    a=5
    b=5
    c=20
    d=20
    
    #Murs du labyrinthe
    
    mur1=can.create_line(50,0,50,50,fill="Black",width=5)
    
    #Personnage et deplacements
    
    perso=can.create_oval(a,b,c,d,fill="Black")
    fen.bind("<Right>",droite)
    fen.bind("<KeyPress-Left>",gauche)
    fen.bind("<KeyPress-Down>",bas)
    fen.bind("<KeyPress-Up>",haut)
    
    
    fen.mainloop()
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      27 février 2016 à 19:17:49

      il va falloir que tu crée une fonction collision, appellé avant de bouger ta boule, et qui vérifie si il n'y aura pas de collision avec ton mur.

      Il faudrait que tu stocke dans une map (ou un contenaire de ton choix) ton tableau de jeu, qui contient dans ses case soit un mur soit ta boule soit rien (autrement dit le vide)

      Si dans la case ou tu souhaite te déplacer il y a un mur, tu interdit le déplacement

      Sinon, tu déplace et tu actualise l'affichage

      • Partager sur Facebook
      • Partager sur Twitter
        27 février 2016 à 19:25:26

        merci de votre réponse Benoit,

        Comment pourai-je faire ? 

        Avec grid par exemple ? En divisan le canvas en cases ?

        -
        Edité par interalex 27 février 2016 à 19:26:22

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          27 février 2016 à 19:56:25

          regarde sur le tuto de python, l'activité du labyrinthe est un parfait exemple pour ton probléme (des pistes sont expliqués dans l'énoncé)
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme

          Rendre une ligne résistante au colisions ?

          × 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