D’après Gérard Swinnen « Apprendre à programmer avec Python 3 ».
Dans cet exemple, le disque rouge décrit un carré (il longe les bords de la zone de dessin), indéfiniment, c'est à dire jusqu'à ce que l'utilisateur clique sur le bouton "Quitter".
Compléter le script précédent en ajoutant un bouton "Arrêter" de façon à pouvoir interrompre et relancer le déplacement du disque.
On pourra utiliser une variable booléenne "anim" modifiée par les deux fonctions associées aux boutons "Démarrer" et "Arrêter". La fonction récursive devra donc tester l'état de cette variable pour décider si l'appel récursif est effectué ou non.
Le but du jeu est de détruire des carrés apparaissant à des positions aléatoires en cliquant dessus.
Détail des fonctionnalités :
Indications :
Trouver un objet près d’un point (x,y) : nom_canvas.find_closest(x, y, halo)
; cette méthode renvoie un tuple de la forme (n,) où n est un entier (numéro dans l’ordre de création des objets).
Suppression d’un objet : nom_canvas.delete(nom_objet ou numéro)
.
L'exemple donné ici illustre le principe d'une animation "infinie" réalisée à l'aide d'une fonction récursive mais il est possible d'envisager de très nombreux effets différents : le disque peut rebondir sur les bords, sortir du cadre et réapparaître de l'autre côté, changer de taille, de couleur au cours du déplacement…tout en préservant la possibilité d'interactions avec d'autres éléments du jeu.
Trouver un objet près d'un point de coordonnées (x,y) : nom_canvas.find_closest(x, y, halo)
. Cf. mini projet et aide en ligne.