Problème sur Python
ADaniel
-
Phil_1857 Messages postés 1872 Date d'inscription Statut Membre Dernière intervention -
Phil_1857 Messages postés 1872 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'essaie de programmer un jeu de pong sur python (3.5.1) pour un projet en informatique mais j'ai un problème avec une fonction, voici le scrypte:
import tkinter
from tkinter import messagebox
import time
canvasWidth = 750
canvasHeight = 500
fenetre = tkinter.Tk()
canvas = tkinter.Canvas(fenetre, width=canvasWidth, height=canvasHeight, bg="dodgerblue4")
canvas.pack()
raquette = canvas.create_rectangle(0, 0, 40, 10, fill="white")
balle = canvas.create_oval(0, 0, 10, 10, fill="red")
fenetreOuverte = True
score = 0
compteRebonds = 0
def boucle_principale():
while fenetreOuverte == True:
déplacer_raquette()
déplacer_balle()
fenetre.update()
time.sleep(0.02)
if fenetreOuverte == True:
vérifier_game_over()
gaucheAppuyé = 0
droiteAppuyé = 0
def appuie(event):
global gaucheAppuyé, droiteAppuyé
if event.keysym == "Left":
gaucheAppuyé = 1
elif event.keysym == "Right":
droiteAppuyé = 1
def relache(event):
global gaucheRelachée, droiteRelachée
if event.keysym == "Left":
gaucheAppuyé = 0
elif event.keysym == "Right":
droiteAppuyé = 0
vitesseRaquette = 6
def déplacer_raquette():
mouvRaquette = vitesseRaquette*droiteAppuyé - vitesseRaquette*gaucheAppuyé
(gaucheRaquette, hautRaquette, droiteRaquette, basRaquette) = canvas.coords(raquette)
if ((gaucheRaquette > 0 or mouvRaquette >0) and (droiteRaquette < canvasWidth or mouvRaquette < 0)):
canvas.move(raquette, mouvRaquette, 0)
mouvBalleX = 4
mouvBalleY = -4
defHautRaquette = canvasHeight-40
defBasRaquette = canvasHeight-30
def deplacer_balle():
global mouvBalleX, mouvBalleY, score, compteRebonds, vitesseRaquette
(gaucheBalle, hautBalle, droiteBalle, basBalle) = canvas.coords(balle)
if mouvBalleX > 0 and droiteBalle > canvasWidth:
mouvBalleX = -mouvBalleX
if mouvBalleX > 0 and droiteBalle > canvasWidth:
mouvBalleX = -mouvBalleX
if mouvBalleX < 0 and gaucheBalle < 0:
mouvBalleX = -mouvBalleX
if mouvBalleY < 0 and hautBalle < 0:
mouvBalleY = -mouvBalleY
if mouvBalleY > 0 and basBalle > defHautRaquette and basBalle < defBasRaquette:
(gaucheRaquette, hautRaquette, droiteRaquette,basRaquette) = canvas.coords(raquette)
if (mouvBalleX > 0 and (droiteBalle+mouvBalleX > gaucheRaquette and gaucheBalle < droiteRaquette) or mouvBalleX < 0 and (droiteBalle > gaucheRaquette and gaucheBalle+mouvBalleX < droiteRaquette)):
mouvBalleY = -mouvBalleY
score = score+1
compteRebonds = compteRebonds+1
if compteRebonds == 4:
compteRebonds = 0
vitesseRaquette = vitesseRaquette+1
if mouvBalleX > 0:
mouvBalleX = mouvBalleX+1
else:
mouvBalleX = mouvBalleX-1
mouvBalleY = mouvBalleY-1
canvas.move(balle, mouvBalleX, mouvBalleY)
def verifier_game_over():
(gaucheBalle, hautBalle, droiteBalle, basBalle) = canvas.coords(balle)
if hautBalle > canvasHeight:
print("Ton score :" +str(score))
rejouer = tkinter.messagebox.askyesno(message="Veux-tu rejouer ?")
if rejouer == True:
reinitialiser()
else:
fermer()
def fermer():
global fenetreOuverte
fenetreOuverte = False
fenetre.destroy()
def reinitialiser():
global score, compteRebonds, vitesseRaquette
global gaucheAppuyé, droiteAppuyé
global mouvBalleX, mouvBalleY
gaucheAppuyé = 0
droiteAppuyé = 0
mouvBalleX = 4
mouvBalleY = -4
canvas.coords(raquette, 10, defHautRaquette, 50, defBasRaquette)
canvas.coords(raquette, 20, defHautRaquette-10, 30, defBasRaquette)
score = 0
compteRebonds = 0
vitesseRaquette = 6
fenetre.protocol("WN_DELETE_WINDOW",fermer)
fenetre.bind("<KeyPress>",appuie)
fenetre.bind("<KeyRelease>",relache)
reinitialiser()
boucle_principale()
et voici le message d'erreur que j'obtiens
Traceback (most recent call last):
File "/Volumes/AD'RNO/jeu de pong.py", line 104, in <module>
boucle_principale()
File "/Volumes/AD'RNO/jeu de pong.py", line 17, in boucle_principale
déplacer_balle()
NameError: name 'déplacer_balle' is not defined
Merci d'avance pour votre aide.
J'essaie de programmer un jeu de pong sur python (3.5.1) pour un projet en informatique mais j'ai un problème avec une fonction, voici le scrypte:
import tkinter
from tkinter import messagebox
import time
canvasWidth = 750
canvasHeight = 500
fenetre = tkinter.Tk()
canvas = tkinter.Canvas(fenetre, width=canvasWidth, height=canvasHeight, bg="dodgerblue4")
canvas.pack()
raquette = canvas.create_rectangle(0, 0, 40, 10, fill="white")
balle = canvas.create_oval(0, 0, 10, 10, fill="red")
fenetreOuverte = True
score = 0
compteRebonds = 0
def boucle_principale():
while fenetreOuverte == True:
déplacer_raquette()
déplacer_balle()
fenetre.update()
time.sleep(0.02)
if fenetreOuverte == True:
vérifier_game_over()
gaucheAppuyé = 0
droiteAppuyé = 0
def appuie(event):
global gaucheAppuyé, droiteAppuyé
if event.keysym == "Left":
gaucheAppuyé = 1
elif event.keysym == "Right":
droiteAppuyé = 1
def relache(event):
global gaucheRelachée, droiteRelachée
if event.keysym == "Left":
gaucheAppuyé = 0
elif event.keysym == "Right":
droiteAppuyé = 0
vitesseRaquette = 6
def déplacer_raquette():
mouvRaquette = vitesseRaquette*droiteAppuyé - vitesseRaquette*gaucheAppuyé
(gaucheRaquette, hautRaquette, droiteRaquette, basRaquette) = canvas.coords(raquette)
if ((gaucheRaquette > 0 or mouvRaquette >0) and (droiteRaquette < canvasWidth or mouvRaquette < 0)):
canvas.move(raquette, mouvRaquette, 0)
mouvBalleX = 4
mouvBalleY = -4
defHautRaquette = canvasHeight-40
defBasRaquette = canvasHeight-30
def deplacer_balle():
global mouvBalleX, mouvBalleY, score, compteRebonds, vitesseRaquette
(gaucheBalle, hautBalle, droiteBalle, basBalle) = canvas.coords(balle)
if mouvBalleX > 0 and droiteBalle > canvasWidth:
mouvBalleX = -mouvBalleX
if mouvBalleX > 0 and droiteBalle > canvasWidth:
mouvBalleX = -mouvBalleX
if mouvBalleX < 0 and gaucheBalle < 0:
mouvBalleX = -mouvBalleX
if mouvBalleY < 0 and hautBalle < 0:
mouvBalleY = -mouvBalleY
if mouvBalleY > 0 and basBalle > defHautRaquette and basBalle < defBasRaquette:
(gaucheRaquette, hautRaquette, droiteRaquette,basRaquette) = canvas.coords(raquette)
if (mouvBalleX > 0 and (droiteBalle+mouvBalleX > gaucheRaquette and gaucheBalle < droiteRaquette) or mouvBalleX < 0 and (droiteBalle > gaucheRaquette and gaucheBalle+mouvBalleX < droiteRaquette)):
mouvBalleY = -mouvBalleY
score = score+1
compteRebonds = compteRebonds+1
if compteRebonds == 4:
compteRebonds = 0
vitesseRaquette = vitesseRaquette+1
if mouvBalleX > 0:
mouvBalleX = mouvBalleX+1
else:
mouvBalleX = mouvBalleX-1
mouvBalleY = mouvBalleY-1
canvas.move(balle, mouvBalleX, mouvBalleY)
def verifier_game_over():
(gaucheBalle, hautBalle, droiteBalle, basBalle) = canvas.coords(balle)
if hautBalle > canvasHeight:
print("Ton score :" +str(score))
rejouer = tkinter.messagebox.askyesno(message="Veux-tu rejouer ?")
if rejouer == True:
reinitialiser()
else:
fermer()
def fermer():
global fenetreOuverte
fenetreOuverte = False
fenetre.destroy()
def reinitialiser():
global score, compteRebonds, vitesseRaquette
global gaucheAppuyé, droiteAppuyé
global mouvBalleX, mouvBalleY
gaucheAppuyé = 0
droiteAppuyé = 0
mouvBalleX = 4
mouvBalleY = -4
canvas.coords(raquette, 10, defHautRaquette, 50, defBasRaquette)
canvas.coords(raquette, 20, defHautRaquette-10, 30, defBasRaquette)
score = 0
compteRebonds = 0
vitesseRaquette = 6
fenetre.protocol("WN_DELETE_WINDOW",fermer)
fenetre.bind("<KeyPress>",appuie)
fenetre.bind("<KeyRelease>",relache)
reinitialiser()
boucle_principale()
et voici le message d'erreur que j'obtiens
Traceback (most recent call last):
File "/Volumes/AD'RNO/jeu de pong.py", line 104, in <module>
boucle_principale()
File "/Volumes/AD'RNO/jeu de pong.py", line 17, in boucle_principale
déplacer_balle()
NameError: name 'déplacer_balle' is not defined
Merci d'avance pour votre aide.
A voir également:
- Problème sur Python
- Citizen code python avis - Accueil - Outils
- Mot secret python pix ✓ - Forum Python
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
- Python par la pratique : 101 exercices corrigés pdf - Forum Python
- Exercice python - Forum Python
1 réponse
Bonjour ADaniel,
Les indentations étant indispensables en Python, ton script (et non pas scrypte) est illisible, il faut le poster à nouveau avec les balises de code, ici le mode d'emploi:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ensuite, on pourra voir le problème …
Tu as défini ta fonction déplacer_balle() ?
Ouh la quelle horreur, un nom de fonction avec des caractères accentués (é) !!!
Les indentations étant indispensables en Python, ton script (et non pas scrypte) est illisible, il faut le poster à nouveau avec les balises de code, ici le mode d'emploi:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ensuite, on pourra voir le problème …
Tu as défini ta fonction déplacer_balle() ?
Ouh la quelle horreur, un nom de fonction avec des caractères accentués (é) !!!