Bonsoir et merci à celui ou celle qui pourra m'aider pour ce devoir. Je suis en term S spécialité ISN (Informatique et science du numérique) donc ce qui sont doué en Python sont la bienvenue. Voici mon devoir mot pour mot et merci encore:
Simulation du rebond d'une balle de billard sur une paroi, sans effet de rotation.
Cahier des charges: - utilisation de la bibliothèque Tkinter (pour ça c'est bon normalement) - l'utilisateur pourra fixer l'angle d'incidence - l'utilisateur pourra stopper la simulation (commande si bonne trouvée) - la balle sera de dimension 10 pixels de diamètre (ok aussi)
Indications: L'angle d'incidence est égal à l'angle de réflexion. Un cercle est tracé avec l'instruction cercle = canvas.create_oval(x1,y1,x2,y2) où x1 et y1 sont les coordonnées du coin supérieur droit du rectangle contenant l'ellipse et x2, y2 sont respectivement la largeur et la hauteur du rectangle contant l'ellipse.
Si "figure" a été définie dans le canvas, l'instruction: pos = canvas.coords(figure) donne dans pos le tuple (x1, y1, x2, y2à qui contient les coordonnées x1, y1 du coin supérieur de figure et la taille du rectangle x2, y2 correspondant à cette figure. canvas.coords(figure, x1, y1, x2, y2) place le rectangle contenant la figure dans le canvas en le point de coordonnées x1, y1 et la taille du rectangle est x2, y2
Programmation de l'animation: Une méthode consiste à utiliser la récursivité. Si la fonction mouvement() est la fonction qui fixe les coordonnées et dessine la balle, l'instruction fenetre.after(duree,mouvement) placée à la fin de la fonction mouvement() permet d'appeler la fonction toutes les durée en millisecondes.
def mouvement (): gnagna gnagna ... fenetre.after(duree,mouvement)
Prévoir un test de sortie de boucle
Merci merci!!!!
Lista de comentários
guilamb
Si tu arrive a générer une balle qui bouge dans un canevas avec .after(), c'est fini. il reste plus qu'a faire bouger le cercle en fonction de l'angle. Et vu que je n'ai pas compris comment avec tkinter on peut avoir un angle comme au billard, avec la souris(il faut utiliser un key.bind avec une fonction prenant event en paramètre ect...), si tu as d'autres indications sur ce détail...
Lista de comentários