Gestionnaire d'evenement planté?

Toumai -  
Toumai Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -
bonjour
j'ai un leger probleme avec un script python
le gestionnaire d'evenement ne semble pas marcher : les fonctions qui sont sencé etre appelé par les touches fléchées ne sont jammais appelées.
auriez vous une réponse a ce probleme

je precise que si mon code n'est pas forcement dans les régles de l'art (je débute) il ne contient je croit aucune erreur (je l'ai testé et retesté)

merci
A voir également:

3 réponses

arth Messages postés 10414 Date d'inscription   Statut Contributeur Dernière intervention   1 293
 
Bonsoir,

il faudrait je pense poster ton code ici pour que les spécialistes python puissent t'aider ;)

Sinon on ne va pas pouvoir t'aider ou t'orienter pour résoudre ton souci.

Loup.
0
Toumai
 
oui désolé voila le code
je cherché a fer un petit jeu de labirinthe (je n'en suis qu'au début mais déja sa bloque)
je met en gras la partie du code que j'ai édité entre le moment ou sa a marché et celui ou sa a plus voulu
auparavent jouvrait simplement le mem fichier sans donner le choix

# -*- coding: cp1252 -*-
from Tkinter import*
from os import chdir
import tkFileDialog
chdir("C:/Documents and Settings/Session 1/Bureau")
global x,y,X,Y,largeur_case, hauteur_case
x,y,X,Y=0,0,0,0
#taille des cases
largeur_case, hauteur_case=50, 50

#fenetre principale du jeu
Root=Tk()

#map
map=[]
temp=[]
try :
#chargement du fichier de map
file = tkFileDialog.askopenfile(parent=Root,filetypes=[('carte Labyrint','*.map')], mode='rb',title='Choisissez une map')
if file != None:
fichier=file.readlines()
file.close()

#extraction de la map du fichier
for lignes in fichier:
if lignes[-1:]=="\n":
lignes=lignes[:-1]
if lignes[-1:]=="\r":
lignes=lignes[:-1]
temp=[]
for car in lignes:
temp.append(car)
map.append(temp)

except :
Label(Root, text="Fichier inexistant", fg="red").pack()
else :
#verification de l'égalité de la longueur de toutes les lignes
error=0
long_ligne=len(map[0])
for ligne in map:
if len(ligne)!=long_ligne:
error=1
type_error=map.index(ligne)
break
#verification de la presence d'une entrée et d'une sortie
entree=0
sortie=0
coord_entree=[]
for ligne in map:
for colonne in ligne:
if colonne=='2':
entree+=1
if entree==1:
coord_entree.append(ligne.index(colonne))
coord_entree.append(map.index(ligne))
if colonne=='3':
sortie+=1
#verification de la validité de la map
if error!=0:
Label(Root, text="Impossible de charger la map : non conformité de la longueur des lignes a la ligne :" + str(type_error), fg="red").pack()
elif entree==0:
Label(Root,text="Impossible de charger la map : elle ne contient pas d'entree", fg="red").pack()
elif sortie==0:
Label(Root,text="Impossible de charger la map : elle ne contient pas de sortie(s) ", fg="red").pack()
else:
#dessin de la map
can=Canvas(Root, width=largeur_case*(len(map[0])), height=hauteur_case*len(map), bg="white")
can.pack()
for ligne in map:
x=0
for colonne in ligne:
if colonne=='0':
couleur="white"
elif colonne=='1':
couleur="black"
elif colonne=='2':
couleur="green"
elif colonne=='3':
couleur="red"
else:
couleur="yellow"
can.create_rectangle(largeur_case*x,hauteur_case*y,largeur_case*(x+1),hauteur_case*(y+1), width=0,fill=couleur)
x+=1
y+=1
#dessin du personnage en position initiale
X=coord_entree[0]
Y=coord_entree[1]
perso=can.create_oval(coord_entree[0]*largeur_case+1,coord_entree[1]*hauteur_case+1,(coord_entree[0]+1)*largeur_case-1,(coord_entree[1]+1)*hauteur_case-1,fill="blue")

def Trace(abs, ord):
#trace le personnage
can.coords(perso,largeur_case*abs+1,hauteur_case*ord+1, largeur_case*(abs+1)-1, hauteur_case*(ord+1)-1)

#fonctions pour faire bouger le personnage
def Droite(event):
global X,Y
try :
test=map[Y][X+1]
#print test
except:
#print "error except"
pass
else :
print "else"
if (test=='0') or (test=='2'):
X=X+1
Trace(X,Y)
elif (test=='3'):
Gagne()
else :
pass

def Gauche(event):
global X,Y
try :
test=map[Y][X-1]
#print test
except:
#print "error except"
pass
else :
if X-1>=0:
if (test=='0') or (test=='2'):
X=X-1
Trace(X,Y)
elif test=='3':
Gagne()
else :
pass

def Bas(event):
global X,Y
try :
test=map[Y+1][X]
#print test
except:
pass
else :
if (test=='0') or (test=='2'):
Y=Y+1
Trace(X,Y)
elif test=='3':
Gagne()
else :
pass

def Haut(event):
global X,Y
try :
test=map[Y-1][X]
#print test
except:
pass
else :
if Y-1>=0:
if (test=='0') or (test=='2'):
Y=Y-1
Trace(X,Y)
elif test=='3':
Gagne()
else :
pass

#fonctions diverses
def Quitter():
Root.destroy()

def quitter(event):
Root.destroy()

def Gagne():
Root.bind("<Right>", quitter)
Root.bind("<Left>", quitter)
Root.bind("<Up>", quitter)
Root.bind("<Down>", quitter)
#affichage du message de victoire
can.destroy()
Label(Root, text="Gagné", fg="red").pack()
Button(Root,text="Try again?", command=TryAgain).pack()

def TryAgain():
Quitter()

#definition des commandes pour jouer
Button(Root, text="Quitter", command=Quitter).pack()
Root.bind("<Right>", Droite)
Root.bind("<Left>", Gauche)
Root.bind("<Up>", Haut)
Root.bind("<Down>", Bas)
0
Toumai Messages postés 1 Date d'inscription   Statut Membre Dernière intervention  
 
je narrive pas a editer mon message car je me suis apercu trop tard de mon erreur en copiant j'ai oublié la derniere ligne:
Root.mainloop()
de plus l'indentation n'a pas été gardée mais bon..
0