Gestionnaire d'evenement planté?
Toumai
-
Toumai Messages postés 1 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Gestionnaire d'evenement planté?
- Plante - Guide
- Gestionnaire de périphérique - Guide
- Gestionnaire de fichiers - Télécharger - Gestion de fichiers
- Gestionnaire des taches - Guide
- Gestionnaire des taches windows 11 - Guide
3 réponses
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.
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.
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)
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)