Une fonction à l'intérieur d'une fonction.
Recherchedesavoir
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
Recherchedesavoir Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
Recherchedesavoir Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je travail toujours sur le programme de mon jeu, et j'ai réussis à faire en sorte que mon interface de base puisse accéder à la partie "jeu" de mon programme, qui n'est qu'un déplacement d'un carré grâce au flèches directionnels. Cependant, lorsque j'appuie sur le bouton "jouer" de mon interface, j'arrive bien sur la partie du programme qui me permet de déplacer mon petit carré mais je n'ai pas la possibilité de le déplacer.
Lorsque j'appuie sur une des flèche directionnel, je reçoit ce message la sur ma boite de dialogue :
"Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Justine\AppData\Local\Programs\Python\Python35\lib\tkinter\__init__.py", line 1549, in __call__
return self.func(*args)
File "C:\Users\Justine\Desktop\Jeu\Jeu.py", line 20, in clavier
coords = (coords[0] + 18, coords[1])
NameError: name 'coords' is not defined"
J'aimerais donc savoir pourquoi je n'arrive pas à faire déplacer le carré...
En vous remerciant de vos réponses,
Cordialement.
Ci-joint une photo ayant le programme et le jeu :

Je travail toujours sur le programme de mon jeu, et j'ai réussis à faire en sorte que mon interface de base puisse accéder à la partie "jeu" de mon programme, qui n'est qu'un déplacement d'un carré grâce au flèches directionnels. Cependant, lorsque j'appuie sur le bouton "jouer" de mon interface, j'arrive bien sur la partie du programme qui me permet de déplacer mon petit carré mais je n'ai pas la possibilité de le déplacer.
Lorsque j'appuie sur une des flèche directionnel, je reçoit ce message la sur ma boite de dialogue :
"Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Justine\AppData\Local\Programs\Python\Python35\lib\tkinter\__init__.py", line 1549, in __call__
return self.func(*args)
File "C:\Users\Justine\Desktop\Jeu\Jeu.py", line 20, in clavier
coords = (coords[0] + 18, coords[1])
NameError: name 'coords' is not defined"
J'aimerais donc savoir pourquoi je n'arrive pas à faire déplacer le carré...
En vous remerciant de vos réponses,
Cordialement.
Ci-joint une photo ayant le programme et le jeu :

A voir également:
- Une fonction à l'intérieur d'une fonction.
- Fonction si et - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer sur word - Guide
- Fonction filtre excel n'existe pas - Forum Excel
2 réponses
Salut
coords semble inconnu à cet endroit du programme. Quel est le but de "global coords" selon toi ?
coords semble inconnu à cet endroit du programme. Quel est le but de "global coords" selon toi ?
Bonjour, Bonsoir,
"Global coords" sert à définir la fonction de déplacement dans un espace?
J'avoue comprendre tout le reste de cette partie mais pas "global coords".
En cherchant sur internet j'ai trouver quelque chose qui dit que global permet de trouver une variable x en dehors de la section. Cela veut donc dire qu'il faut que je programme coords a part de la fonction "jouer" et qu'avec global, je la récupère?
"Global coords" sert à définir la fonction de déplacement dans un espace?
J'avoue comprendre tout le reste de cette partie mais pas "global coords".
En cherchant sur internet j'ai trouver quelque chose qui dit que global permet de trouver une variable x en dehors de la section. Cela veut donc dire qu'il faut que je programme coords a part de la fonction "jouer" et qu'avec global, je la récupère?
Comme ceci?
from tkinter import*
from tkinter.messagebox import*
from math import*
from random import*
from tkinter.filedialog import*
#------------------------------------------------------------------------------#
def Jouer():
can.grid_forget()
boutonQ.grid_forget()
boutonJ.grid_forget()
def clavier(event):
global coords
touche=event.keysym
if touche == "Up":
coords = (coords[0], coords[1] - 9)
elif touche == "Down":
coords = (coords[0], coords[1] + 9)
elif touche == "Right":
coords = (coords[0] + 9, coords[1])
elif touche == "Left":
coords = (coords[0] - 9, coords[1])
canvas.coords(rectangle, coords[0], coords[1], coords[0]+9, coords[1]+9)
canvas = Canvas(fenetre, width=800, height=600, bg="white")
coords = (0,0)
rectangle = canvas.create_rectangle(0,0,12,12,fill="green")
canvas.focus_set()
canvas.bind("<Key>", clavier)
canvas.grid()
#------------------------------------------------------------------------------#
fenetre = Tk()
fenetre.title("My Game")
photo1=PhotoImage(file="Monstro.png")
can = Canvas(fenetre,bg='white',width=300, height=150)
img=can.create_image(0,0,anchor='nw',image=photo1)
can.grid(row=0,column=0,columnspan=2,sticky=N+S+E+W,padx=4,pady=4)
boutonJ=Button(fenetre, text=" JOUER ",font=('arial',15), command=Jouer)
boutonJ.grid(row=1,column=0,sticky=W,padx=2,pady=2)
boutonQ=Button(fenetre, text="QUITTER",font=('arial',15), command=fenetre.quit)
boutonQ.grid(row=1,column=1,sticky=E,padx=2,pady=2)
fenetre.mainloop()
Pourquoi tu ne fait pas une class?
je dois malheureusement rajouter une fonction "J()", je ne sais pas bien si elle est nécessaire ou pas...
désole de l'attente
je dois malheureusement rajouter une fonction "J()", je ne sais pas bien si elle est nécessaire ou pas...
# ------------------------------------------------------- class Jouer(): def __init__(self): global can self.can = can self.can.grid_forget() boutonQ.grid_forget() boutonJ.grid_forget() self.canvas = Canvas(fenetre, width=800, height=600, bg="white") self.coords = (0,0) self.rectangle = self.canvas.create_rectangle(0,0,12,12,fill="green") self.canvas.focus_set() self.canvas.bind("<Key>", self.clavier) self.canvas.grid() def clavier(self, event): touche=event.keysym if touche == "Up": self.coords = (self.coords[0], self.coords[1] - 9) elif touche == "Down": self.coords = (self.coords[0], self.coords[1] + 9) elif touche == "Right": self.coords = (self.coords[0] + 9, self.coords[1]) elif touche == "Left": self. coords = (self.coords[0] - 9, self.coords[1]) self.canvas.coords(self.rectangle, self.coords[0], self.coords[1], self.coords[0]+9, self.coords[1]+9) def J(): s = Jouer() # ---------------------------------------------------- fenetre = Tk() fenetre.title("My Game") photo1=PhotoImage(file="Monstro.png") can = Canvas(fenetre,bg='white',width=300, height=150) img=can.create_image(0,0,anchor='nw',image=photo1) can.grid(row=0,column=0,columnspan=2,sticky=N+S+E+W,padx=4,pady=4) boutonJ=Button(fenetre, text=" JOUER ",font=('arial',15), command=J) boutonJ.grid(row=1,column=0,sticky=W,padx=2,pady=2) boutonQ=Button(fenetre, text="QUITTER",font=('arial',15), command=fenetre.quit) boutonQ.grid(row=1,column=1,sticky=E,padx=2,pady=2) fenetre.mainloop()
désole de l'attente