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
Configuration: Windows XP
Firefox 2.0.0.6

3 réponses

  1. arth Messages postés 84 Date d'inscription   Statut Contributeur Dernière intervention   1 296
     
    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
  2. 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
  3. 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