Collège/5ème/Programmation/Scratch Avance/Les événements et messages

Les événements et messages

Programmation - 5ème

Les événements et messages

30 min+20 XPapprentissage

Objectifs

  • Comprendre le rôle et l'utilité des événements dans la programmation.
  • Savoir utiliser les blocs "envoyer à tous" et "quand je reçois" pour déclencher des actions.
  • Créer un programme interactif où plusieurs lutins coopèrent grâce aux messages.

Introduction

Imaginez un jeu vidéo où un personnage ramasse une clé, et instantanément une porte secrète s'ouvre à l'autre bout de l'écran. Comment ces deux éléments si éloignés peuvent-ils communiquer ? Aujourd'hui, nous allons découvrir la magie qui permet à différentes parties d'un programme de se parler et de se coordonner.

Comment faire communiquer et interagir différents éléments (lutins, arrière-plans) d'un programme Scratch de manière efficace et organisée ?

Les événements : des déclencheurs d'actions

En programmation, un événement est une action ou une occurrence détectée par le programme, qui va déclencher l'exécution d'un script. Dans Scratch, tu connais déjà certains événements simples : "quand le drapeau vert est cliqué" (début du programme), "quand ce lutin est cliqué" (interaction directe), ou "quand la touche [espace] est pressée". Ces blocs oranges sont le point de départ de nombreux scripts. Ils sont essentiels car ils indiquent QUAND le code doit s'exécuter. Par exemple, dans un jeu de course, l'événement "quand la touche [flèche droite] est pressée" déclenche le script qui fait avancer la voiture. Sans événement, le programme ne saurait pas quand commencer une action. Les événements rendent ton programme réactif et interactif. Ils permettent de séparer le 'moment' de l'action (l'événement) de l'action elle-même (le script qui suit).

Points clés

  • Un événement est un déclencheur qui lance l'exécution d'un script.
  • Les blocs d'événements sont de couleur orange dans Scratch.
  • Exemples courants : clic sur le drapeau, clic sur un lutin, appui sur une touche.

Les messages : la communication entre lutins

Mais comment faire pour qu'un événement concernant un lutin (comme atteindre la ligne d'arrivée) puisse affecter un autre lutin (comme afficher un message de victoire) ou l'arrière-plan (changer de décor) ? C'est le rôle des MESSAGES. Les messages sont des signaux que l'on peut envoyer et recevoir dans tout le projet Scratch. Le bloc violet "envoyer à tous [message1]" permet de diffuser un signal. Tous les lutins et l'arrière-plan peuvent 'écouter' ce signal grâce au bloc événement "quand je reçois [message1]". Dès que le message est envoyé, tous les scripts qui commencent par "quand je reçois [message1]" se lancent automatiquement, où qu'ils se trouvent. C'est une communication très puissante ! Par exemple, dans un jeu de cache-cache, quand le lutin 'chercheur' touche le lutin 'cacheur', il envoie un message "trouvé". L'arrière-plan reçoit ce message et change pour un écran 'Fin du jeu', et un troisième lutin (un haut-parleur) reçoit le même message et joue un son de victoire. Les messages découplent les éléments du programme : le chercheur n'a pas besoin de savoir qui va réagir, il envoie juste un signal.

Points clés

  • Un message est un signal diffusé à l'ensemble du projet.
  • Le bloc "envoyer à tous" émet le message, le bloc "quand je reçois" le capte et déclenche un script.
  • Les messages permettent une communication indirecte et organisée entre tous les éléments.

Différence entre "envoyer à tous" et "envoyer à tous et attendre"

Scratch propose deux blocs très similaires pour envoyer des messages : "envoyer à tous" et "envoyer à tous et attendre". La différence est subtile mais importante pour le déroulement de ton programme. Le bloc classique "envoyer à tous [message]" envoie le signal et passe IMMÉDIATEMENT à l'instruction suivante dans le script de l'émetteur. Par exemple, un lutin envoie "saut" et dit ensuite "Ouf !". Les deux actions (envoyer le message et parler) semblent se produire en même temps. Le bloc "envoyer à tous et attendre [message]" fonctionne différemment : il envoie le message, mais il PAUSE l'exécution du script de l'émetteur jusqu'à ce que TOUS les scripts déclenchés par ce message (dans les autres lutins) aient terminé leur exécution. Ce n'est qu'ensuite que l'émetteur reprend son script. C'est utile pour des séquences ordonnées. Imagine un spectacle : le lutin présentateur envoie "entréeArtiste et attend". Le lutin artiste entre en scène et fait son numéro. Ce n'est qu'une fois son numéro terminé que le présentateur (qui était en pause) reprend et dit "Merci !". Cela garantit un enchaînement parfait.

Points clés

  • "Envoyer à tous" : l'émetteur continue son script sans attendre.
  • "Envoyer à tous et attendre" : l'émetteur attend la fin des scripts des récepteurs avant de continuer.
  • Le choix dépend si les actions doivent être simultanées ou séquentielles.

Applications pratiques

Prenons l'exemple concret d'un quiz interactif avec deux lutins : un présentateur (Panda) et un buzzer (Bouton rouge). 1) Quand le drapeau vert est cliqué, le Panda dit "Première question..." et envoie un message "question1". 2) L'arrière-plan, qui reçoit "question1", change pour afficher la question et les choix. 3) Le joueur clique sur le lutin Bouton pour répondre. Cet événement "quand ce lutin est cliqué" fait envoyer un message "reponseDonnee". 4) Le Panda, qui attendait ce message (bloc "quand je reçois reponseDonnee"), dit "Bonne réponse !" et envoie ensuite "question2 et attend". Il attendra que l'arrière-plan ait changé avant de poser la suite. Autre application : un jeu de plateforme où toucher une pièce fait trois choses simultanées : le score augmente (lutin variable), un son 'cling' se joue (lutin audio) et la pièce disparaît. Un seul message "pieceRamasee" déclenche ces trois actions propres à chaque lutin, évitant un code spaghetti dans le lutin du personnage.

Points clés

  • Créer un quiz avec synchronisation entre présentateur, écran et buzzer.
  • Gérer les collectibles dans un jeu de plateforme avec effets multiples (score, son, disparition).
  • Structurer son code en modules indépendants qui communiquent par messages.

À retenir

Les événements définissent le moment où un script commence, comme un clic ou un appui sur une touche. Les messages permettent à ces événements de déclencher des actions à distance, dans d'autres lutins ou l'arrière-plan, en utilisant les blocs "envoyer à tous" et "quand je reçois". Cette technique de communication est fondamentale pour créer des programmes complexes, modulaires et bien organisés, où chaque élément a un rôle précis.

  • Un événement déclenche, un message communique.
  • Les messages permettent de coordonner plusieurs lutins sans les lier par des blocs "toucher" complexes.
  • Choisir entre "envoyer à tous" (actions simultanées) et "...et attendre" (actions séquentielles).
EdTech AI