Con questo semplice codice realizzato con Scratch sarete in grado di visualizzare (e ascoltare) un messaggio in codice binario, come quello inviato da Arecibo il 16 novembre 1974 e descritto in questa attività. Vediamo passo per passo come realizzarlo.
Come prima cosa, dall’interfaccia di Scratch disegnate un nuovo sprite (meglio se quadrato e di piccole dimensioni): sarà il vostro bit. Fatelo del colore che preferite, l’importante è che sia ben visibile sullo sfondo che andrete a scegliere. Nel nostro progetto (che vi invitiamo ad aprire, guardarci dentro e remixarlo) è un quadrato bianco di 4 pixel di lato, su uno sfondo spaziale presente nella libreria di Scratch.
Come dicevamo, lo sprite rappresenta il bit che, grazie al comando timbra, si replica sullo stage quando nel messaggio assume il valore 1. Inizialmente, visto che non sappiamo ancora quale sarà il messaggio da riprodurre, lo nascondiamo.
Il messaggio da riprodurre (quello di Arecibo, in questo caso) è salvato in una lista, qui chiamata “messaggio”, che è stata riempita importando i dati da un file esterno. Per farlo si definisce la lista, che verrà visualizzata nello stage e sarà inizialmente vuota. Si clicca con il tasto destro del mouse sulla lista che appare nello stage e, nel menù pop-up che compare, si seleziona “importa”. Si sceglie il file da cui importare i dati (sarà un file di testo con 0 e 1 organizzati in modo tale da comporre la griglia del messaggio) e, cliccando su “apri”, la lista si riempie di 0 e 1 organizzati nello stesso modo: avrà tanti elementi (righe) quante sono le righe del messaggio e tanti elementi per riga quante sono le colonne della griglia del messaggio.
Nella parte iniziale del codice, compare l’inizializzazione di due variabili: “numero di righe” e “numero di colonne”, il cui valore viene stabilito dal programma stesso usando due operatori, uno sulle liste e uno sulle stringhe (insiemi di caratteri, in questo caso delle cifre 0 e 1).
Il cuore del programma sono due cicli, uno dentro l’altro. Il più esterno (più lento) scorre sulle righe; il più interno (più veloce) scorre sulle colonne, ossia sui singoli bit di ogni riga del messaggio. Quindi, per ogni riga del messaggio, se il bit (elemento i-esimo) è 1 allora “timbra” lo sprite sullo stage ed emette un suono, altrimenti (se è 0) non emette nulla per la stessa durata di tempo. In questo modo comparirà il pixel quadrato (e si sentirà il suono) solo quando nel messaggio il bit è 1.
La parte più complicata del codice è forse quella di decidere dove fare apparire il bit/pixel. Qui si è scelto di partire in alto a destra, alle coordinate (100,160) corrispondenti alla prima iterazione del ciclo (indici i e j uguali a zero). Al variare di i, la formula implementata scorre a destra di 4 pixel, per evitare che i bit si sovrappongano. Al variare di j, scorre in basso di 4 pixel, per lo stesso motivo.
Cliccando sulla bandierina verde vedrete il messaggio comparire sulla destra, accanto a Martina, e potrete anche sentirlo.
Se volete provare a visualizzare un altro messaggio, sarà sufficiente che importiate il file di testo con il messaggio binario, come descritto all’inizio.