22 Settembre 2017

CodyMaze – L’ora di coding da piazza

CodyMaze_R01

CodyMaze è un labirinto virtuale nel mondo reale. Ci si muove su una scacchiera 5 x 5 le cui caselle contengono dei QRcode. Apparentemente la scacchiera è libera, ma grazie ai QRcode mostra labirinti sempre diversi che vengono proposti al giocatore da un bot Telegram chiamato @codymazebotIl giocatore si muove fisicamente sulla scacchiera seguendo le istruzioni del bot e scansiona il QR Code su cui arriva ad 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, offrendo un’esperienza equivalente al labirinto classico dell’hour of code, ma diversa di volta in volta e giocata fisicamente. Al termine del gioco il bot Telegram rilascia un attestato nominale di completamento di un’ora di coding, che riporta l’elenco dei costrutti di programmazione sperimentati durante il gioco.

Terreno di gioco

CodyMaze si gioca su una griglia quadrata, 5×5, sulla quale sono disposti 25 QRcode. I QRcode sono disposti sul pavimento, ad almeno 50cm 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 QRcode 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. Ad 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 sono disponibili in questo archivio.

Per agevolare la disposizione e l’utilizzo, ogni QR Code riporta l’indicazione della posizione e dei punti cardinali. 5 dei 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 bot Telegram @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 da @codymazebot.

Componenti del gioco

  • 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)
  • 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 (regole)

Inizio del gioco

  1. È possibile iniziare una nuova partita solo dopo aver concluso le partite eventualmente in corso.
  2. Se @codymazebot non è pronto ad 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 QRcode 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 QRcode per notificare al bot la scelta
  5. Il bot indica al giocatore la direzione di marcia e chiede conferma. E’ importante rispettare questa indicazione: ogni successiva istruzione dovrà essere eseguita partendo dalla posizione scelta e dalla direzione indicata dal bot.

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 scansione il QR Code per notificare al bot la posizione che ha raggiunto.
  4. Il bot risponde chiedendo “In che direzione stai guardando?” e prensentando 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 QRCode su cui il giocatore si trova.

Mosse sbagliate

  1. Una mossa è sbagliata se viene scansionato il QRCode 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 QRCode, 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 Sì 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!
    certificato-CodyMaze
  6. Quando il bot invia il messaggio “Grazie per aver giocato con CodyMaze!” è pronto ad 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 QRcode 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 latre 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 QRCode, ci sono delle stelle
  • non stella = verificata se nella casella in ci trova il giocatore, attorno al QRCode, 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 ad 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.

Installazioni

installazioni

CodyMaze è un gioco di coding da piazza, che è stato presentato per la prima volta durante l’edizione 2017 di Urbino Summer Code Fest, il 24 agosto 2017, nel cortile del Collegio Raffaello a Urbino. Nella prima installazione i QRCode erano posti su scatole quadrate per essere più visibili. La seconda sperimentazione è stata effettuata a Napoli, in Piazza del Plebiscito, il 21 settembre 2017, con i QRCode appoggiati su lattine di pomodoro.

I due esperimenti pubblici sono stati fondamentali per collaudare e debuggare l’applicazione prima di renderla disponibile a chiunque voglia allestire il gioco in una piazza, in un cortile, a casa, o in un’aula. I QRCode non devono necessariamente essere appoggiati su oggetti rialzati, è sufficiente appoggiarli a terra. Si consiglia comunque di fissarli a terra in modo da evitare che vengano spostati accidentalmente.

Sviluppi futuri

CodyMaze verrà ulteriormente sviluppato per offrire esperienze di coding diversificate per fascia d’età. I QRCode non cambieranno. Quindi chiunque volesse farne un’installazione fissa potrà utilizzarla per tutte le versioni del gioco.

Credits

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.

29 commenti su “CodyMaze – L’ora di coding da piazza

    • Più che fantastico. Si è deciso con la scuola e la nostra associazione Ragazzi digitali di sperimentarlo in piazza durante le giornate del cody week

  • Grazie mille, già stampate e plastificate.
    Lunedì mattina s’inizia a scuola con bambini e docenti.
    Finalmente si possono creare gli eventi per la codeweek!!!??

  • Già gli strumenti a nostra disposizione erano utili e accattivanti… avete saputo andare oltre rendendo fisica l’esperienza del labirinto. E se è vero che ogni apprendimento nasce dalla memoria fisica di esso, ora ci offrite uno strumento POTENTISSIMO per far interiorizzare a chiunque le basi dell’informatica!
    Un grazie non basta….dovrò venire a Urbino ad abbracciarvi di nuovo tutti!

  • E’ stato entusiasmante e coinvolgente giocare a CodeMaze sia alla Summer School che a piazza Plebiscito. Grazie Alessandro B., per essere venuto a Napoli ed aver coinvolto tutti noi in questo divertente gioco. Lo proporrò di sicuro ai miei alunni, al liceo dove insegno. E non solo!

  • Ho letto le istruzioni con attenzione, devo sperimenare il gioco con le colleghe più disponibili prima di farlo con gli alunni!

  • Si chiama TPR (Total Phisical Response) il coinvolgimento fisico nelle attività didattiche. Come dice Giovanna Landi, con il codymaze si fa coding in movimento. Bellissima attività!

  • Cortile del Collegio Raffaello a Urbino e Piazza del Plebiscito a Napoli: due luoghi magici dove abbiamo potuto fare esperimenti di coding con CodyMaze insieme a tanti compagni di viaggio guidati da un grande PROF.!

  • Io ho stampato e plastificato i codici a barre e ho provato a far giocare i bambini ma … dovro studiare meglio le istruzioni

  • Buongiorno, abbiamo preparato lo spazio di gioco seguendo pedissequamente le istruzioni, abbiamo posizionato li QR, seguendo i punti cardinali, abbiamo provato il gioco più volte entusiasmandoci sempre di più… ma c’è un QRCode che una volta scansionato ci dà questo Bot:
    11. segui queste indicazioni per risolvere il prossimo passo e scansiona il QRCode all’arrivo:
    4(se /strada avanti/ (a)
    altrimenti (se /strada a sx/ (s)
    altrimenti (d)))…
    ma seguendo le indicazioni dà sempre errore…
    Come possiamo fare ?
    Ringraziamo chi ci aiuta…
    Buon Coding da piazza a tutti!

    • Posso dirvi come interpretare le istruzioni fornite dal BOT: il 4 davanti a tutto significa che dovete ripetere per 4 volte tutto il codice riportato tra parentesi graffe. Quindi anche la condizione va rivalutata 4 volte dopo ogni mossa. Se, ad esempio, alla prima esecuzione non avete strada davanti e dovete girare a destra, alla seconda esecuzione potreste avere strada davanti e muovervi di un passo avanti.

  • Fantastico! Provato con i ragazzi di una classe quarta di un Istituto Tecnico.
    I ragazzi sono rimasti entusiasti e vogliono ripetere l’esperienza.

  • Io non ho capito come posizionare i QR code
    la disposizione è:
    A1 – A2 – A3 – A4 – A5
    B1 – B2 – B3 – ecc….

    oppure
    A1 – B1 – C1 – D1 – E1
    A2 – B2 – C2 – ecc…

    Le istruzioni non sono molto chiare, o non le capisco io.
    Comunque, gran bella iniziativa.
    Stefano

  • Esperienza fantastica. Abbiamo realizzato la scacchiera con nastro gommato e QrCode sul pavimento del laboratorio in occasione della settimna del codice e da allora molte classi dell’Istituto hanno svolto l’attività. Infatti stavo pensando ad una soluzione per renderla permanente 😉 … anche perchè il CodyMaze è diventato un ottimo spunto per discutere del coding …
    Solo un piccolo problema … da ieri il CodyMaze bot di Telegram non è più attivo … inviando /start non risponde … provato anche /reset … idem … forse in fase di upgrade?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *