Problème sur Python

ADaniel -  
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.

1 réponse

Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168
 
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 (é) !!!
0