Problème avec python pour les collisions avec un mur

Résolu/Fermé
tkinter5555 - Modifié le 31 janv. 2020 à 16:25
 trifou - 31 janv. 2020 à 17:31
Bonjour, je suis nouveaux sur ce site j'ai un projet a rendre avant samedi soir je sais ces un peu tard mais je suis dans une impasse merci beaucoup de votre aide. Le projet consiste en un labyrinthe avec un personne qui ne peut ce déplacer que sur les cases herbe et pas eau mon problème ces que j'ai réussie a placer le personnage aléatoirement sur une cases et a le déplacer sauf qu'il va sur l'eau et je n'arrive pas a lui interdire pourriez vous m'aider s'il-vous-plaît merci beaucoup.

voici mon code

from tkinter import *
from random import *

fenetre = Tk()
fenetre.title("Jeux")

plateau_jeux = [[0,0,1,0,0,0,1,0,1,0],
[0,0,1,0,0,0,1,0,1,0],
[1,1,1,1,1,0,1,0,1,1],
[0,1,0,0,1,1,1,0,1,0],
[0,1,1,1,1,0,1,0,1,0],
[0,1,0,0,1,0,1,1,1,0],
[1,1,1,0,1,1,1,0,1,1],
[0,0,1,0,0,0,1,0,1,0]]

coor_plateau=[[(40,40),(120,40),(200,40),(280,40),(360,40),(440,40),(520,40),(600,40),(680,40),(760,40)],
[(40,120),(120,120),(200,120),(280,120),(360,120),(440,120),(520,120),(600,120),(680,120),(760,120)],
[(40,200),(120,200),(200,200),(280,200),(360,200),(440,200),(520,200),(600,200),(680,200),(760,200)],
[(40,280),(120,280),(200,280),(280,280),(360,280),(440,280),(520,280),(600,280),(680,280),(760,280)],
[(40,360),(120,360),(200,360),(280,360),(360,360),(440,360),(520,360),(600,360),(680,360),(760,360)],
[(40,440),(120,440),(200,440),(280,440),(360,440),(440,440),(520,440),(600,440),(680,440),(760,440)],
[(40,520),(120,520),(200,520),(280,520),(360,520),(440,520),(520,520),(600,520),(680,520),(760,520)],
[(40,600),(120,600),(200,600),(280,600),(360,600),(440,600),(520,600),(600,600),(680,600),(760,600)]]



cor_herbe=[[200,40],[520,40],[680,40],[200,120],[520,120],[680,120],[40,200],[120,200],[200,200],[280,200],[360,200],[520,200],[680,200],[760,200],
[120,280],[360,280],[440,280],[520,280],[680,280],[120,360],[200,360],[280,360],[360,360],[520,360],[680,360],[120,440],[360,440],[520,440],
[600,440],[680,440],[40,520],[120,520],[200,520],[360,520],[440,520],[520,520],[680,520],[760,520],[200,600],[520,600],[680,600]]


EAU = 0
HERBE = 1

def afficher labyrinthe(plateau_jeux):
for L in range len(plateau_jeux[0]):
for H in range len(plateau_jeux)

L_plateau_jeux = len(plateau_jeux[0])
H_plateau_jeux = len(plateau_jeux)

im_eau = PhotoImage(file="Tuile_Eau.png")
im_herbe = PhotoImage(file="Tuile_Herbe.png")
im_perso = PhotoImage(file="Perso_Horn_Girl.png")

cor_he=choice(cor_herbe)


zone_g = Canvas(fenetre,width=800,height=640,bg="snow")


zone_g.create_image(40, 40, image=im_eau)
zone_g.create_image(120, 40, image=im_eau)
zone_g.create_image(200, 40, image=im_herbe)
zone_g.create_image(280, 40, image=im_eau)
zone_g.create_image(360, 40, image=im_eau)
zone_g.create_image(440, 40, image=im_eau)
zone_g.create_image(520, 40, image=im_herbe)
zone_g.create_image(600, 40, image=im_eau)
zone_g.create_image(680, 40, image=im_herbe)
zone_g.create_image(760, 40, image=im_eau)

zone_g.create_image(40, 120, image=im_eau)
zone_g.create_image(120, 120, image=im_eau)
zone_g.create_image(200, 120, image=im_herbe)
zone_g.create_image(280, 120, image=im_eau)
zone_g.create_image(360, 120, image=im_eau)
zone_g.create_image(440, 120, image=im_eau)
zone_g.create_image(520, 120, image=im_herbe)
zone_g.create_image(600, 120, image=im_eau)
zone_g.create_image(680, 120, image=im_herbe)
zone_g.create_image(760, 120, image=im_eau)

zone_g.create_image(40, 200, image=im_herbe)
zone_g.create_image(120, 200, image=im_herbe)
zone_g.create_image(200, 200, image=im_herbe)
zone_g.create_image(280, 200, image=im_herbe)
zone_g.create_image(360, 200, image=im_herbe)
zone_g.create_image(440, 200, image=im_eau)
zone_g.create_image(520, 200, image=im_herbe)
zone_g.create_image(600, 200, image=im_eau)
zone_g.create_image(680, 200, image=im_herbe)
zone_g.create_image(760, 200, image=im_herbe)

zone_g.create_image(40, 280, image=im_eau)
zone_g.create_image(120, 280, image=im_herbe)
zone_g.create_image(200, 280, image=im_eau)
zone_g.create_image(280, 280, image=im_eau)
zone_g.create_image(360, 280, image=im_herbe)
zone_g.create_image(440, 280, image=im_herbe)
zone_g.create_image(520, 280, image=im_herbe)
zone_g.create_image(600, 280, image=im_eau)
zone_g.create_image(680, 280, image=im_herbe)
zone_g.create_image(760, 280, image=im_eau)

zone_g.create_image(40, 360, image=im_eau)
zone_g.create_image(120, 360, image=im_herbe)
zone_g.create_image(200, 360, image=im_herbe)
zone_g.create_image(280, 360, image=im_herbe)
zone_g.create_image(360, 360, image=im_herbe)
zone_g.create_image(440, 360, image=im_eau)
zone_g.create_image(520, 360, image=im_herbe)
zone_g.create_image(600, 360, image=im_eau)
zone_g.create_image(680, 360, image=im_herbe)
zone_g.create_image(760, 360, image=im_eau)

zone_g.create_image(40, 440, image=im_eau)
zone_g.create_image(120, 440, image=im_herbe)
zone_g.create_image(200, 440, image=im_eau)
zone_g.create_image(280, 440, image=im_eau)
zone_g.create_image(360, 440, image=im_herbe)
zone_g.create_image(440, 440, image=im_eau)
zone_g.create_image(520, 440, image=im_herbe)
zone_g.create_image(600, 440, image=im_herbe)
zone_g.create_image(680, 440, image=im_herbe)
zone_g.create_image(760, 440, image=im_eau)

zone_g.create_image(40, 520, image=im_herbe)
zone_g.create_image(120, 520, image=im_herbe)
zone_g.create_image(200, 520, image=im_herbe)
zone_g.create_image(280, 520, image=im_eau)
zone_g.create_image(360, 520, image=im_herbe)
zone_g.create_image(440, 520, image=im_herbe)
zone_g.create_image(520, 520, image=im_herbe)
zone_g.create_image(600, 520, image=im_eau)
zone_g.create_image(680, 520, image=im_herbe)
zone_g.create_image(760, 520, image=im_herbe)

zone_g.create_image(40, 600, image=im_eau)
zone_g.create_image(120, 600, image=im_eau)
zone_g.create_image(200, 600, image=im_herbe)
zone_g.create_image(280, 600, image=im_eau)
zone_g.create_image(360, 600, image=im_eau)
zone_g.create_image(440, 600, image=im_eau)
zone_g.create_image(520, 600, image=im_herbe)
zone_g.create_image(600, 600, image=im_eau)
zone_g.create_image(680, 600, image=im_herbe)
zone_g.create_image(760, 600, image=im_eau)

perso=zone_g.create_image(cor_he, image=im_perso)


def deplace(evenement):
touche = evenement.char.upper()
if evenement.keysym == "Up":
if ???????:
cor_herbs = 0
cor_herb= -80
else:
cor_herb = 0
cor_herbs =0
elif evenement.keysym =="Down":
#if deplace == cor_herbe:
cor_herbs = 0
cor_herb= 80
#else:
# dx , dy = 0, 0
elif evenement.keysym =="Left":
# if deplace == cor_herbe:
cor_herbs= -80
cor_herb = 0
# else:
# dx , dy = 0, 0
elif evenement.keysym =="Right":
# if deplace == cor_herbe:
cor_herbs = 80
cor_herb = 0
# else:
# dx , dy = 0, 0
else:
cor_herb = 0
cor_herbs =0

zone_g.move(perso, cor_herbs, cor_herb)

fenetre.bind_all("<KeyPress>", deplace)
zone_g.pack()
fenetre.mainloop()



Configuration: Windows / Firefox 72.0

1 réponse

Bonjour,

Il faut voir à te servir de boucles pour générer les tuiles de ton plateau.

En ce qui concerne ton problème, réduis le au plus simple.

Le plateau

PLATEAU = (
    (0,0,1,0,0,0,1,0,1,0),
    (0,0,1,0,0,0,1,0,1,0),
    (1,1,1,1,1,0,1,0,1,1),
    (0,1,0,0,1,1,1,0,1,0),
    (0,1,1,1,1,0,1,0,1,0),
    (0,1,0,0,1,0,1,1,1,0),
    (1,1,1,0,1,1,1,0,1,1),
    (0,0,1,0,0,0,1,0,1,0),
)


La position du personnage sur le plateau.

perso_position = [6, 9]


Comment déterminer si le personnage peut se déplacer en haut ? En bas ? A droite ? A gauche ?
C'est quelque chose de simple à résoudre.
0