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")