1. Déclencher - onkey()

Avec la fonction input() nous avons pu questionner l’utilisateur à un moment spécifique du programme. C’est utilisé pour demander une information spécifique à un moment précis.

Dans ce chapitre nous allons voir une autre façon d’utiliser les touches du clavier. Ici, appuyer sur une touche spécifique, à n’importe quel moment, va déclencher une action.

Dans ce chapitre nous découvrons comment utiliser le clavier de l’ordinateur pour interagir avec un programme. Nous allons voir que :

  • la fonction onkey(f, 'a') installe une fonction de rappel f(),

  • la fonction f() est appelée à chaque fois que la touche a est appuyée,

  • la fonction listen() démarre l’écoute des événements du clavier.

Question

Une fonction de rappel




1.1. Fonction de rappel

En informatique, une fonction de rappel (callback en anglais) ou fonction de post-traitement est une fonction qui est passée en argument à une autre fonction. Cette dernière peut alors faire usage de cette fonction de rappel comme de n’importe quelle autre fonction, alors qu’elle ne la connaît pas par avance.

1.2. Avancer la tortue

Le programme suivant fait avancer la tortue à l’aide de la touche a du clavier qui appelle une fonction de rappel. La variable s fait référence à l’objet Screen qui possède les deux méthodes :

  • onkey(f, 'a') pour installer une fonction de rappel f() pour la touche 'a',

  • listen() pour commencer à écouter les événements du clavier.

Deux lignes de texte sont affichées au début, pour que l’utilisateur sache qu’il doit d’abord cliquer dans la fenêtre de la tortue pour l’activer.

Exercice 1

Modifiez la fonction de rappel f() pour que la tortue tourne en cercle.

1.3. Retourner à l’origine

La fonction home() ramène la tortue à son origine. Nous avons changé le nom de la fonction de rappel f() en avancer(). C’est plus clair. La fonction home() existe déjà, donc nous n’avons pas besoin de la définir.

Au lieu d’écrire les explications dans la console, nous allons les écrire directement dans la fenêtre de la tortue.

Exercice 2

Ajoutez une fonction de rappel pour faire reculer la tortue.

1.4. Effacer la trace

Dans le prochain programme, nous ajoutons des touches supplémentaires pour les fonctions suivantes :

  • h pour ramener la tortue à l’origine avec home(),

  • c pour effacer la trace avec clear(),

  • r pour effacer la trace et ramener la tortue à l’origine avec reset().

Le désavantage de ce programme, c’est que clear() va aussi effacer le texte explicatif. Ça serait bien si ce texte était indépendant de la tortue qui bouge.

1.5. Tourner la tortue

Le programme suivant fait bouger la tortue à l’aide de 3 touches du clavier :

  • a pour avancer

  • d pour tourner à droite

  • g pour tourner à gauche

Exercice 3

Ajoutez une fonction de rappel pour faire reculer la tortue.

1.6. Les touches flèches

Les touches de flèche portent les noms Left, Right, Up et Down. Nous pouvons utiliser les 4 flèches pour faire bouger la tortue.

  • pour avancer

  • pour reculer

  • pour tourner vers la gauche

  • pour tourner vers la droite

Le référentiel utilisé se rapporte à la tortue. Quand la tortue est en face de nous, c’est difficile de la contrôler, car nous devons inverser les directions dans notre tête.

Exercice 4

Ajoutez les fonctions de rappel up() et down() pour monter et descendre le stylo.

1.7. Les touches WASD

Les jeux vidéos utilisent souvent les touches WASD pour déplacer le personnage du jeu (player) :

  • w pour aller vers le haut

  • a pour aller vers la gauche

  • s pour aller vers le bas

  • d pour aller vers la droite

Cette fois nous utilisons un référentiel absolu, fixé au canevas. La tortue peut se déplacer dans les 4 directions haut, bas, gauche et droite.

Exercice 5

Ajoutez les fonctions de rappel home(), clean() et reset() pour effacer la trace et ramener la tortue à l’origine.

1.8. Courbes en cercle

Appuyer sur la touche g va dessiner un quart de cercle à gauche. Appuyer sur la touche d va dessiner un quart de cercle vers la droite.

1.9. Dessiner une maison

Appuyer sur la touche m va dessiner une maison.

1.10. Lever le stylo

Nous allons utiliser les touches u et d pour les fonctions

  • u pour lever le stylo avec up(),

  • d pour baisser le stylo avec down().

1.11. Choisir l’épaisseur

Nous allons introduire des touches pour choisir l’épaisseur du trait.

  • 1 pour un trait fin,

  • 2 pour un trait normal,

  • 3 pour un trait épais.

Exercice 6

Modifiez les épaisseurs.

1.12. Choisir la couleur

Nous allons introduire des touches pour choisir l’épaisseur du trait.

  • r pour un trait rouge,

  • v pour un trait vert,

  • b pour un trait bleu.

Exercice 7

Modifiez les couleurs.

1.13. Écrire dans le canevas

Nous pouvons aussi utiliser les touches pour écrire dans le canevas de la tortue. Pour avancer la tortue avec la lettre, nous choisissons l’option move=True

1.14. Exercice

Snake

Utilisez une liste pour limiter le nombre de segments du serpent à 10.

Tetris

Les flèches gauche/droite permettent de déplacer le tétronimo. Programmez les touches haut/bas pour le tourner.