Installazione al Festival della Scienza di Genova 2021. Crediti: Laura Leonardi

Il CodyMaze Astrofisico è una variante del CodyMaze – ideato da Alessandro Bogliolo nell’ambito di CodeMOOC – sviluppata dall’Istituto Nazionale di Astrofisica in collaborazione con l’Università di Urbino e Digit srl. Si tratta di un labirinto virtuale nel mondo reale che propone sfide di coding e quiz di astronomia, astrofisica ed esplorazione spaziale. Il CodyMaze aiuta a sviluppare il pensiero computazionale e le capacità di problem solving e, nel contempo, permette agli studenti di ripassare il programma di scienze, divertendosi. Gli enigmi di coding e i quiz sono rivolti a studenti a partire dalla scuola secondaria di primo grado, e a un pubblico adulto. Anche i bambini più piccoli si divertono nel labirinto virtuale ma suggeriamo di accompagnarli nell’uso del cellulare e affiancarli nell’esecuzione delle istruzioni di programmazione.

Nel gioco ci si muove su una scacchiera 5 x 5 le cui caselle contengono dei QR code. Apparentemente la scacchiera è libera, ma grazie ai QR code presenta labirinti sempre diversi che vengono proposti al giocatore dal bot Telegram @codymazebot. Il giocatore si muove fisicamente sulla scacchiera seguendo le istruzioni del bot e scansiona il QR code su cui arriva a ogni tappa per verificare di aver eseguito correttamente la sequenza di istruzioni. Durante le varie tappe del gioco vengono proposte sequenze di istruzioni di complessità crescente che introducono tutti i concetti base della programmazione. Per ricevere la sequenza di istruzioni che porta al QR code successivo occorre rispondere correttamente a un quiz di astronomia il cui tema dipende dalla casella del labirinto. Per la versione astrofisica del gioco sono stati preparati 250 quiz di astronomia a scelte multiple, quindi se si vuole percorrere il labirinto più volte è molto improbabile che le sfide proposte siano sempre le stesse. Al termine del gioco il bot Telegram rilascia un attestato nominale di completamento che riporta l’elenco dei costrutti di programmazione sperimentati durante il gioco.

Terreno di gioco

Schema di distribuzione dei codici QR.

CodyMaze si gioca su una griglia quadrata, 5×5, sulla quale sono disposti 25 QR code. I QR code sono disposti sul pavimento, ad almeno 50 centimetri di distanza l’uno dall’altro. In tal modo il giocatore può muoversi con il proprio corpo all’interno della scacchiera, senza usare pedine. Se la scacchiera fosse effettivamente disegnata a terra ogni QR code occuperebbe il centro di una casella, ma la presenza dei QR code che identificano il centro delle caselle rende inessenziale tracciarne i bordi. Quindi la scacchiera può non essere disegnata. Le colonne e le righe della scacchiera sono identificate da lettere e numeri, partendo dall’angolo in alto a sinistra. A ogni QR code è assegnata una posizione identificata da una lettera e da un numero. Inoltre la scacchiera è orientata convenzionalmente in modo che il lato superiore corrisponda al Nord e, di conseguenza, quello inferiore al Sud, quello sinistro all’Ovest e quello destro all’Est. Se il luogo lo consente si consiglia di orientare effettivamente la scacchiera in modo coerente con i punti cardinali.

I 25 QR code stampabili del CodyMaze Astrofisico li potete scaricare dai seguenti link:

Per agevolarne la disposizione e l’utilizzo, ogni QR code riporta l’indicazione della posizione e dei punti cardinali. Cinque QR code hanno delle stelle alla cui presenza è condizionata l’esecuzione di alcune istruzioni.

Obiettivo del gioco

Uscire dal labirinto virtuale seguendo le istruzioni fornite dal @codymazebot.

Giocatori

Il gioco può essere giocato da uno o più giocatori. Il limite al numero di giocatori è dato solo dalle dimensioni della scacchiera sulla quale i giocatori devono potersi muovere indipendentemente, eseguendo ciascuno le proprie istruzioni fornite dal @codymazebot.

Requisiti

Per giocare occorre:

  • Smartphone o tablet dotato di:
  • I dispositivi in uso devono essere pari al numero di giocatori che giocano contemporaneamente. Al termine del gioco lo stesso smartphone può essere usato da un altro giocatore, al quale il bot presenterà un percorso diverso.
Difficoltà
  • Il giocatore non conosce il percorso, ma riceve istruzioni dal bot Telegram e deve interpretarle ed eseguirle correttamente.
  • Le sequenze di istruzioni fornite dal bot sono di difficoltà crescente, sia per i costrutti che introducono sia per la lunghezza.
Game Play

Il giocatore interagisce con il gioco compiendo le seguenti azioni:

  • Scansione del QR code associato alla casella su cui si trova il giocatore (inquadrare con un lettore di codice a barre il QR code che si intende scansionare, selezionare Telegram messenger come applicazione con cui aprire il link contenuto nel QR code, premere il tasto AVVIA che appare in basso nell’interfaccia del bot Telegram)
  • Quiz di astronomia (rispondere correttamente al quiz a scelte multiple proposto dal bot)
  • Impostazione della direzione di marcia (selezionare uno dei quattro tasti Nord, Est, Sud, o Ovest quando richiesto da bot)
  • Lettura e interpretazione delle istruzioni fornite dal bot (la sintassi è descritta nella sezione game design)
  • Esecuzione delle istruzioni fornite dal bot (le istruzioni si eseguono fisicamente spostandosi sulla scacchiera a terra).
Game Design (le regole)

Inizio del gioco

  1. È possibile iniziare una nuova partita solo dopo aver concluso le partite eventualmente in corso.
  2. Se @codymazebot non è pronto a iniziare una nuova partita perché la precedente è stata interrotta, è possibile riportarlo allo stato iniziale con il comando /reset.
  3. In queste condizioni il gioco viene avviato quando viene scansionato uno qualsiasi dei QR code della griglia.
  4. Per iniziare il gioco il giocatore deve scegliere una casella esterna (una delle 16 che compongono il bordo) e scansionare il corrispondente QR code per notificare al bot la scelta.
  5. Il bot indica al giocatore la direzione di marcia e chiede conferma. È importante rispettare questa indicazione: ogni successiva istruzione dovrà essere eseguita partendo dalla posizione scelta e dalla direzione indicata dal bot.
  6. Il bot propone un quiz a scelte multiple a tema astronomico. Ogni casella del labirinto è caratterizzata da un tema diverso. Per procedere nel labirinto, occorre rispondere correttamente.

Mossa

  1. Ad ogni passo il bot guida il giocatore con un codice preceduto da questa frase “Segui queste indicazioni per risolvere il prossimo passo e scansiona il QR code all’arrivo“. Il codice segue la sintassi descritta nel seguito alla sezione Sintassi.
  2. Il giocatore deve muoversi sulla scacchiera eseguendo il codice come se fosse un robot, facendo attenzione alla posizione e alla direzione di partenza.
  3. Terminata l’esecuzione il giocatore scansiona il QR code per notificare al bot la posizione che ha raggiunto.
  4. Il bot risponde chiedendo “In che direzione stai guardando?” e presentando i 4 pulsanti per la selezione della direzione.
  5. Il giocatore indica la direzione (senza girarsi rispetto alla posizione assunta al termine dell’esecuzione del codice)
  6. Se l’esecuzione è corretta il bot dice “Benissimo! Hai trovato il punto giusto” e propone il codice del passo successivo.
  7. Attenzione: è possibile che una mossa non comporti alcuno spostamento. In tal caso, l’esecuzione corretta prevede che venga scansionato nuovamente il QR code su cui il giocatore si trova.

Mosse sbagliate

  1. Una mossa è sbagliata se viene scansionato il QR code sbagliato o impostata la direzione sbagliata rispetto a quelli previsti dal codice fornito dal bot.
  2. A fronte di una mossa sbagliata il bot chiede al giocatore di tornare al punto di partenza dell’ultima mossa, di cui fornisce coordinate e direzione. La risposta del bot è: “Ops! Hai sbagliato! Ritorna alla posizione … guardando verso … e scansiona nuovamente il codice”.
  3. Il giocatore deve tornare nella posizione indicata dal bot, scansionare il QR code, guardare nella direzione indicata dal bot e selezionarla per conferma quando richiesto.
  4. A questo punto il bot fornisce nuovamente le istruzioni per ripetere la mossa.

Completamento del labirinto

  1. Al termine di tutte le mosse previste il bot manda il seguente messaggio: “Complimenti! Hai completato CodyMaze!
  2. Il bot chiede quindi di digitare il nome che si vuole sul certificato di completamento. Il messaggio di richiesta è il seguente: “Scrivi il nome e cognome da visualizzare sul certificato di completamento:
  3. Il giocatore deve digitare il proprio nome e cognome (o una qualsiasi altro nome, come ad esempio il nome della classe o un elenco di nomi nel caso in cui il gioco sia stato giocato in squadra)
  4. Il bot chiede: “Confermi che il nome inviato è …?” per dare modo di correggere eventuali errori.
  5. Rispondendo si ottiene il certificato nominale di completamento. Oltre al nome indicato dal giocatore, il certificato contiene un identificativo univoco che in futuro potrà essere utilizzato per verificare l’autenticità del certificato. Il certificato può essere scaricato, salvato e condiviso con orgoglio!
  6. Quando il bot invia il messaggio “Grazie per aver giocato con CodyMaze!” è pronto a iniziare una nuova partita.
Sintassi

Istruzioni elementari. Il bot usa le 3 istruzioni elementari di CodyRoby, rappresentate dalle rispettive iniziali in caratteri minuscoli:

  • a = vai avanti, da eseguire spostandosi da un QR code a quello successivo lungo la direzione di marcia
  • s = girati a sinistra, da eseguire ruotando di 90 gradi in senso antiorario senza cambiare casella
  • d = girati a destra, da eseguire ruotando di 90 gradi in senso orario senza cambiare casella

Ripetizioni. Il bot chiede di ripetere più volte un’istruzione o una sequenza di istruzioni indicando il numero di ripetizioni seguito dal codice da ripetere racchiuso tra parentesi graffe:

  • n{codice} = codice ripetuto n volte
  • 3{a} = aaa
  • 2{as} = asas
  • s2{a} = saa

Costrutti nidificati. Le ripetizioni, come i restanti costrutti descritti nel seguito, possono anche essere nidificati. In altre parole, il codice da ripetere può contenere ripetizioni o altri costrutti, come in questi esempi:

  • 2{2{a}} = 2{aa} = aaaa
  • 3{2{a}s} = 3{aas} = aasaasaas

Condizioni. Per esprimere le condizioni a cui è subordinata l’esecuzione di determinate istruzioni, il bot utilizza il “se”, racchiudendo la condizione tra parentesi tonde e le istruzioni da eseguire in modo condizionato tra parentesi graffe:

  • se(condizione){codice} = esegui il codice solo se si verifica la condizione
  • se(condizione){codice1}altrimenti{codice2} = esegui codice1 se si verifica la condizione, altrimenti esegui codice2

Le condizioni utilizzate dal bot sono le seguenti:

  • strada davanti o c’è strada = verificata se nella direzione di marcia c’è almeno una casella su cui spostarsi
  • strada a dx = verificata se rispetto alla posizione e alla direzione di marcia del giocatore c’è almeno una casella a destra
  • strada a sx = verificata se rispetto alla posizione e alla direzione di marcia del giocatore c’è almeno una casella a sinistra
  • stella = verificata se nella casella in cui si trova il giocatore, attorno al QR code, ci sono delle stelle
  • non stella = verificata se nella casella in ci trova il giocatore, attorno al QR code, non ci sono delle stelle

Ripetizioni condizionate. Il bot usa il termine “finché” per indicare che una o più istruzioni vanno ripetute finché perdura una condizione. La condizione è espressa tra parentesi tonde, il codice da eseguire tra parentesi graffe:

  • finché(condizione){codice} = esegui il codice finché è verificata la condizione.

Attenzione: nelle ripetizioni e nelle ripetizioni condizionate occorre eseguire tutto il codice interno a ogni ripetizione, poi occorre verificare nuovamente la condizione di ripetizione (condizione esplicita o numero di ripetizioni) per decidere se eseguirlo di nuovo.

Consiglio. Per illustrare la sintassi ai partecipanti si consiglia di effettuare un’esecuzione collettiva del gioco, dichiarando e commentando insieme le sequenze di istruzioni che il bot assegna a ogni passo. In alternativa, si possono creare delle sequenze di istruzioni di prova per simularne l’esecuzione.

Crediti

CodyMaze è un progetto di Alessandro Bogliolo, sviluppato da Brendan Paolini, Lorenz Cuno Klopfenstein e Saverio Delpriori, del Corso di Laurea in Informatica Applicata dell’Università di Urbino. La versione astrofisica è stata sviluppata in collaborazione con il gruppo Play.coding di INAF coordinato da Maura Sandri.

Guarda il video su Media Inaf Tv: