Un altro semplice progetto con Scratch: il Memory

Cosa farai

Ti presentiamo un altro semplice progetto da realizzare con Scratch, un gioco di memoria in cui devi memorizzare e ripetere una sequenza casuale di colori che ti viene mostrata!

Nella versione che vogliamo costruire, una ballerina balla su un palcoscenico cambiando in modo casuale il colore del suo vestito.
Il giocatore deve memorizzare la sequenza di colori e usare dei pulsanti (i tamburi nella figura precedente) per ripetere la stessa sequenza.
Se sbaglia, il gioco finisce. Se la ripete correttamente, gli viene mostrata una sequenza più lunga… e così via fino a che non sbaglia.
Il punteggio che il giocatore realizza corrisponde alla lunghezza della sequenza che ha ripetuto correttamente.

La ballerina

    Per prima cosa devi quindi creare un personaggio che cambi colore in maniera casuale e uno sfondo adeguato al personaggio; noi abbiamo scelto una ballerina e un palcoscenico, ma puoi utilizzare il personaggio e lo sfondo che preferisci.

  1. Apri un nuovo progetto di Scratch e cancella il gatto di Scratch facendo click con il tasto destro del mouse sul gatto e selezionando cancella fra le opzioni a disposizione nel menu a tendina.
  2. Crea un nuovo Sprite scegliendolo dalla libreria di Scratch. Per farlo, fai click sull’icona Scegli uno Sprite dalla libreria, seleziona lo Sprite Ballerina e premi il pulsante OK:

  3. Ora crea un nuovo sfondo. Fai click sull’icona Scegli uno sfondo dalla libreria, seleziona lo sfondo spotlight-stage e premi il pulsante OK:

  4. Trascina la ballerina al centro del palcoscenico.
  5. Nel gioco useremo i numeri dall’1 al 4 per rappresentare i colori:
    1 = rosso
    2 = blue
    3 = verde
    4 = giallo
    Colora i costumi dello Sprite Ballerina usando lo strumento colora una forma e rinominali secondo la legenda precedente.

  6. Salva il progetto con il nome memory.

La sequenza

Abbiamo bisogno di creare una sequenza casuale di colori.
In altre parole, vogliamo che lo sprite Ballerina cambi il proprio costume in maniera casuale.

    Per farlo, crea prima di tutto una Lista e chiamala sequenza.

  1. Seleziona i blocchi Variabili e Liste e premi il pulsante Crea una Lista;
  2. Dai alla lista il nome sequenza e premi il pulsante OK.

    La Lista vuota viene visualizzate nello Stage, e un gruppo di nuovi blocchi saranno ora a tua disposizione.
  3. Ti ricordi che abbiamo associato un numero ai colori? Possiamo scegliere un colore a caso scegliendo un numero a caso e aggiungendolo alla Lista sequenza, nel modo seguente:

    Prova a eseguire il programma per verificare che venga aggiunto un numero a caso alla lista ogni volta che fai click sulla bandierina verde.
  4. Usa ora il blocco ripeti 5 volte in modo da generare casualmente 5 numeri in un colpo solo:

    Prova a eseguire il programma per verificare che funzioni correttamente.
  5. Avrai notato che, man mano esegui il programma, la tua lista diventa sempre più lunga… nell’immagine in esempio la lista contiene già 24 elementi. Usiamo un blocco cancella tutto da sequenza in modo da cancellare tutti gli elementi presenti nella lista ogni volta che generiamo casualmente dei nuovi numeri:

    Fai click sulla bandierina verde più volte.
    I numeri vengono generati a caso, ma ora la lista contiene sempre e solo 5 elementi.
  6. Adesso facciamo in modo che, ogni volta che scegliamo un numero, il costume della Ballerina venga cambiato in base all’ultimo elemento aggiunto alla lista, che sarà il numero che abbiamo appena scelto:

    Prova a eseguire il programma per vedere come funziona. Abbiamo inserito un blocco attendi 1 sec perché, se non lo avessimo fatto, la Ballerina avrebbe cambiato il costume troppo velocemente.

Il suono

In maniera del tutto simile a quanto abbiamo fatto per far cambiare il costume alla Ballerina, possiamo associare ai numeri da 1 a 4 un suono che li caratterizzi. In questo modo sarà più semplice seguire la sequenza di colori perché verrà cadenzata da un suono; per adesso, infatti, è difficile capire cosa succede quando viene scelto due o più volte lo stesso numero, e, quindi, la Ballerina non cambia costume.
Ci basta aggiungere questo blocco di codice:

Prova a lanciare il programma per vedere come funziona.

La ripetizione della sequenza

Dobbiamo ora fare in modo che il giocatore possa ripetere la sequenza di colori.

  • Aggiungi al gioco 4 Sprite che rappresentino dei bottoni che il giocatore può premere per ripetere la sequenza di colori che gli viene mostrata. Puoi ad esempio scegliere gli Sprite Drum1 e Drum2, cambiando i colori dei loro costumi in modo che corrispondano alla nostra sequenza rosso – blue – verde – giallo:
  • Vogliamo che, quando il giocatore fa click su un tamburo, venga inviato un messaggio allo Ballerina che comunichi quale tamburo è stato scelto. Per il tamburo rosso, dovremo perciò scrivere:

    Abbiamo creato il nuovo messaggio rosso per l’occasione.
    Ripetiamo le stesse operazioni per il tamburo verde, quello giallo e quello blue.
  • Il messaggio inviato dai tamburi viene ricevuto dallo Sprite Ballerina, ma, se hai provato a eseguire il programma, ti sarai accorto che non succede ancora nulla; dobbiamo infatti dire alla Ballerina cosa fare quando riceve il messaggio.

    Cosa deve fare?

    Nel caso in cui riceva il messaggio rosso, deve controllare che il primo numero nella lista sia quello associato al rosso, e cioè il numero 1.
    Nel caso lo sia, deve rimuovere il numero dalla lista, poiché il colore è stato ripetuto dal giocatore in maniera corretta.
    In caso contrario, il gioco deve essere terminato e deve venir mostrata la scritta Game Over!.
    Quanto detto corrisponde al codice seguente:

  • Aggiungiamo il suono anche ai tamburi, così come avevamo fatto per il colore del costume della Ballerina:
  • In maniera del tutto analoga scriviamo il codice per quando la Ballerina riceve il messaggio blue:
  • Infine, scriviamo il codice per quando riceve il messaggio verde e giallo:
  • Lancia il programma e vedi se tutto funziona correttamente.

    Sei in grado di memorizzare la sequenza di colori?
    Viene generata una sequenza differente ogni volta che lanci il programma?
    Quando premi i tamburi colorati nel tuo progetto Scratch, tutto funziona come ti aspettavi?

    Avrai notato che, quando ripeti correttamente la sequenza di colori, visivamente non succede nulla che renda evidente al giocatore che ha fatto giusto.
    Possiamo aggiungere del codice che produca effetti grafici e sonori quando la lista è vuota, ossia quando il giocatore ha ripetuto correttamente la sequenza di colori che gli è stata proposta.
    Aggiungi queste due istruzioni in fondo al blocco di codice di quando si clicca su bandierina verde:

    Quindi, fai click sullo Sfondo e scrivi:

    Prova a giocare e vedi cosa succede quando riesci a ripetere in maniera corretta la sequenza di colori che ti viene proposta.

    Più livelli

    Per il momento un giocatore deve ricordare una sequenza di 5 colori. Rendiamo più interessante il gioco aggiungendo un punteggio e facendo in modo che, man mano il punteggio aumenta, la sequenza di colori da ricordare si allunghi.

    Iniziamo con il creare una nuova variabile punteggio. Per farlo, seleziona Variabili e liste, premi il pulsante Crea una variabile, dai il nome punteggio alla nuova variabile e premi il pulsante OK:

    Vogliamo che la variabile punteggio definisca anche la lunghezza della lista… e quindi la lunghezza della sequenza di colori che deve essere ricordata. A tal fine, dobbiamo fare delle modifiche all’interno del blocco di codice di quando si clicca su bandierina verde: infatti non vogliamo più che venga generata una lista di 5 colori, ma una lista lunga quanto il valore della variabile punteggio. Se scegliamo 3 come valore iniziale di punteggio, dovremo scrivere:

    Esegui il programma e prova a giocare.

    Nel nostro progetto Scratch abbiamo vincolato la lunghezza della sequenza al punteggio, ma per ora il punteggio rimane fermo a 3… e la partita finisce. Vogliamo invece che, quando il giocatore ripete in maniera corretta la sequenza di colori, la partita non finisca, ma il punteggio aumenti di 1 e al giocatore venga proposta una nuova sequenza di colori più lunga di una unità:

    Prova a giocare per vedere se tutto funziona correttamente.

    Fallo provare a un amico! In questo caso, ricordati di nascondere la lista dallo Stage!

    High Score

    Creiamo una variabile che salvi il punteggio più alto, in modo che tu possa giocare con i tuoi amici.

    Ci servono due variabili, a dire il vero: high score per salvare il punteggio più alto, e nome per salvare il nome del giocatore.
    Creale, come hai fatto in precedenza per punteggio:

    Quando il gioco finisce perché un giocatore sbaglia a ripetere la sequenza di colori, dobbiamo controllare se il punteggio che ha ottenuto è maggiore del punteggio che è salvato nella variabile high score (in altre parole, dobbiamo controllare se punteggio > high score). In caso lo sia, il nuovo valore di high score deve essere il punteggio appena ottenuto (in altre parole, porta high score a punteggio); inoltre il nome del giocatore deve essere salvato insieme a high score.

    Prima di scrivere tutto il codice che ci serve, notiamo una cosa: qualunque azione vogliamo che venga compiuta quando il gioco finisce, dovremmo modificare il nostro programma in ogni punto dove è presente un blocco che fa terminare il gioco. Nel nostro caso, questa situazione si verifica in 4 punti del programma.
    Questa situazione non è per niente comoda; sarebbe molto meglio definire un blocco che raccolga tutto quello che deve succedere quando termina il gioco. In questo caso, un’eventuale modifica andrebbe fatta in un solo punto del programma.

    Quindi, definiamo un nuovo blocco game over che contenga tutte le istruzioni relative a cosa deve succedere quando il gioco finisce:

  • Fai click su Altri blocchi;
  • Premi il pulsante Crea un Blocco;
  • Premi il pulsante OK;
  • Sotto il blocco definisci game over aggiungi ora tutto il codice che ci serve:
  • Una volta definita la funzione game over, possiamo semplicemente richiamarla ovunque ci serva usando il blocco game over:
  • Prova a giocare e a vedere come funziona il programma.

    Adesso qualsiasi modifica volessimo fare alla funzione game over, ci basterebbe farla nella sua definizione. Per esempio, se volessimo aggiungere un suono che venga eseguito quando un giocatore sbaglia colore, ci basterebbe aggiungere un blocco alla definizione:

    Esercizio: Un blocco in più

    Hai notato che nel programma che abbiamo scritto ci sono altri blocchi di codice che si ripetono uguali per i 4 tamburi?
    Saresti in grado di definire un blocco per sostituire queste parti?

    Esercizio: Un costume in più

    Hai notato che, quando il gioco inizia e quando un giocatore sta cercando di ripetere una sequenza di colori, la Ballerina ha sempre il costume dell’ultimo colore della sequenza mostrata?
    Saresti in grado di aggiungere un costume bianco da usare in queste due situazioni?

    Esercizio: Diversi livelli di difficoltà

    Saresti in grado di fare in modo che un giocatore possa scegliere fra una modalità “semplice” (dove si usano solo i tamburi rosso e blue) e una modalità “normale” (dove si usano 4 tamburi)?

    Nel tuo progetto Scratch potresti anche volere aggiungere una modalità “difficile” dove i tamburi da usare sono 5!


    This learning resource is provided for free by the Raspberry Pi Foundation under a Creative Commons licence.
    Find more at raspberrypi.org/resources and github.com/raspberrypilearning.