Problème sur Python

Fermé
ADaniel - 31 mai 2020 à 19:34
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - 31 mai 2020 à 19:54
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.
A voir également:

1 réponse

Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 31 mai 2020 à 19:59
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