IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Collision mur - joueur labyrinthe PYTHON Tkinter


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2019
    Messages : 6
    Par défaut Collision mur - joueur labyrinthe PYTHON Tkinter
    Bonsoir ,

    Pour mon projet de fin d'année en ISN je fais un labyrinthe, jusqu'ici rien de très compliqué. Le probleme qui se pose maintenant est que j''ai le labyrinthe , les personnages mais impossible de leur dire de ne pas rentrer dans le mur. Donc j'aimerai savoir comment faire pour gérer la collision joueur-mur.

    Voici un extrait du code. Je sais que je dois récupérer les coordonnées du joueur et lui dire :" si tu rencontres un mur alors tu l'évites". Je n'ai essayé que sur l'axe des x donc déplacement à droite , sans succès.
    J'espere que vous pourrez m'aider . Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    joueur_2 = monCanvas.create_rectangle(30,30,60,60, fill="yellow")
     
    global dx , dy #deplacement en x et y 
    def droite_2 (event) :
        monCanvas.move(joueur_2, 30, 0)
        i_2 = monCanvas.coords(joueur_2)[0] // 30
        j_2 = monCanvas.coords(joueur_2)[1] // 30
        print(i_2)
        print(j_2)
        if j_2 == 1 : 
            dx = dx-1
     
    def gauche_2 (event) :
        monCanvas.move(joueur_2, -30, 0)
        i_2 = monCanvas.coords(joueur_2)[0] // 30
        j_2 = monCanvas.coords(joueur_2)[1] // 30
        print(i_2)
        print(j_2)
    def haut_2 (event) :
        monCanvas.move(joueur_2, 0, -30)
        i_2 = monCanvas.coords(joueur_2)[0] // 30
        j_2 = monCanvas.coords(joueur_2)[1] // 30
        print(i_2)
        print(j_2)
    def bas_2 (event) :
        monCanvas.move(joueur_2, 0, 30)
        i_2 = monCanvas.coords(joueur_2)[0] // 30
        j_2 = monCanvas.coords(joueur_2)[1] // 30
        print(i_2)
        print(j_2)
     
    monCanvas.bind_all('<d>' , droite_2) #fleche droite
    monCanvas.bind_all('<q>' , gauche_2)  #fleche gauche
    monCanvas.bind_all('<z>' , haut_2)      #fleche du haut
    monCanvas.bind_all('<s>' , bas_2)     #fleche du bas
     
    # ----------------------------------------------------------------
     
    # Création de la matrice (15 par 15)
     
    # ----------------------------------------------------------------
     
    matrice = [ [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
                [1,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
                [1,0,1,1,1,1,1,0,1,1,1,1,0,1,1],
                [1,0,1,0,0,0,1,0,0,1,0,0,0,1,1],
                [1,0,1,0,1,0,1,1,0,1,0,1,0,0,1],
                [1,0,0,0,1,0,0,1,0,1,0,1,1,0,1],
                [1,0,0,1,1,1,0,1,0,0,0,0,0,0,1],
                [1,1,1,1,0,0,0,1,1,1,1,0,1,0,1],
                [1,0,0,0,0,1,0,0,0,0,1,0,1,0,1],
                [1,0,1,1,1,1,1,1,1,0,1,0,0,0,1],
                [1,0,0,0,0,0,0,3,1,0,1,1,1,0,1],
                [1,0,1,0,1,0,1,1,1,0,0,0,1,0,1],
                [1,0,0,0,1,0,0,0,0,0,1,0,0,0,1],
                [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]]
     
     
    for i in range(15):
        for j in range(15):
            if matrice[i][j] == 1:
                monCanvas.create_rectangle(j*30,i*30,j*30+30,i*30+30,fill = "orange")
     
            elif matrice[i][j] == 2 :
                monCanvas.create_rectangle(j*30,i*30,j*30+30,i*30+30,fill = "blue")
     
            elif matrice[i][j] == 3 :
                monCanvas.create_rectangle(j*30,i*30,j*30+30,i*30+30,fill = "red")

  2. #2
    Membre très actif

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Billets dans le blog
    1
    Par défaut
    Salut.

    La position du joueur devrait être définie comme une coordonnée x, y sur ta matrice, pas besoin ici du'tiliser une coordonée en pixel sur le canvas.
    Admettons que cette position soit au départ pos_joueur = 1, 1, avant de déplacer le joueur sur le canvas, il suffit de vérifier quelle valeur a la case adjacente de la direction désirée dans ta matrice.
    Ex. vers le haut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    x, y = pos_joueur
    y -= 1
    if matrice[x][y] == 0:
        pos_joueur = x, y
        # déplacer le joueur sur le canvas de -hauteur_case pixels vers le haut
    Utiliser ta matrice pour déterminer les déplacements possibles sera beaucoup plus simple pour travailler.

Discussions similaires

  1. Python Tkinter graphe
    Par Nifaste dans le forum Tkinter
    Réponses: 17
    Dernier message: 22/12/2009, 11h19
  2. La POO avec python Tkinter
    Par alberth dans le forum Tkinter
    Réponses: 2
    Dernier message: 06/05/2009, 14h53
  3. collision inter-joueurs jeu reseau
    Par duplo dans le forum Réseau et multijoueurs
    Réponses: 3
    Dernier message: 11/04/2009, 15h03
  4. python, tkinter et les sockets (et les threads)
    Par bomberwaterman dans le forum Réseau/Web
    Réponses: 6
    Dernier message: 02/01/2009, 19h53
  5. Conteneurs en Python Tkinter ?
    Par tuxout dans le forum Tkinter
    Réponses: 2
    Dernier message: 09/04/2007, 18h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo