Programació: Enviar missatges (Broadcast)

Definició

Es normal que, en un determinat moment, vulguem que els nostres personatges "manin" accions a altres personatges, escenaris, etc... En aquestes ocasions utilitzem l'enviament de missatges o broadcast.

En arribar un moment o condicions determinades, un personatge enviarà un missatge a la resta d'objectes del programa, i aquells que han estat programats per respondre a aquest missatge, executaran les seves accions.

Aquest sistema de broadcast és la millor forma de sincronitzar accions en el nostres programes, tot i que també es pot utilitzar com eina per a reutilitzar codi, com a eina de recursivitat...

En altres llenguatges de programació podem veure estructures semblants: calls, subrutines, definició de funcions... tot i que poden tenir altres característiques que aquests missatges senzill no tenen.


Com treballar boadcasting a l'Scratch?

A Scracth disposem de tres blocs que ens permeten gestionar els missatges:


El bloc [envia a tots "missatge"] envia un missatge, i continua amb l'execució dels blocs de sota immediatament.
El bloc [envia a tots "missatge" i espera] envia un missatge, i atura l'execució de la resta de blocs del programa, fins que el personatge que respon no acabi les accions relacionades amb el missatge. Llavors, continuarà executant els blocs de sota.
El bloc [quan rebi "missatge"] és el que ens permet definir què ha de fer el receptor en rebre el missatge. Tot personatge que tingui aquest bloc està esperant a que es produeixi el missatge, i actuarà immediatament.



Per tant, per a realitzar crides d'aquest tipus, cal que programem l'esdeveniment [envia a tots "missatge"] en el personatge emissor i el programa que volem que s'executi en rebre la crida [quan rebi "missatge"] en el personatge receptor.


Exemples

Els missatges són una bona forma de interactuar entre personatges. A l'exemple següent, el gat envia un missatge en atrapar el ratolí, i aquest es queixarà i desapareixerà,


Quan treballem diàlegs és molt millor utilitzar missatges que provar de sincronitzar-ho per temps, ja que és molt més flexible, i ens permetrà anar canviant els diàlegs sobre la marxa, sense necessitat de tornar a sincronitzar el temps. En aquests cas, hem fet que Pico enviï un missatge de diàleg a Giga, i que esperi a que ella acabi per continuar; després li envia un segon missatge; finalment el missatge d'esternudar tots dos (sincronitzat) l'envia Giga.


En aquest altre exemple utilitzem els missatges com a definició de funció, o com una subrutina, amb la intenció d'estalviar-nos haver de repetir l'escriptura de codi i per tal que el programa quedi més compacte i fàcil de modificar.