Come programmare in Scratch il gioco “Catch the dots”

Cosa farai

In questo progetto imparerai come programmare in Scratch un gioco in cui il giocatore dovrà accoppiare dei puntini colorati che si muovono sullo schermo con le parti dello stesso colore di un controller. Si chiama “Catch the dots”

Il controller

Abbiamo preparato per te una risorsa che contiene il controller; la puoi scaricare facendo click qui.

Salva il file sul tuo computer. Poichè si tratta di un file compresso (CatchTheDots.sb2.zip), decomprimilo, in modo da avere a disposizione il file CatchTheDots.sb2. Fai click su questo file per lanciare il progetto di Scratch:

Vogliamo che il controller ruoti in senso orario quando premi il tasto freccia destra.
Perché succeda, trascina e unisci i blocchi come descritto nella figura seguente:

Questi blocchi dicono a Scratch che, quando inizia il gioco, per sempre, se viene premuto il tasto freccia destra, deve ruotare il controller di 3 gradi in senso orario.

Lancia il programma e premi il tasto freccia destra per vedere se tutto funziona correttamente.

Adesso scrivi il programma per fare in modo che il controller ruoti di 3 gradi in senso antiorario quando premi il tasto freccia sinistra.
Il programma sarà analogo a quello che abbiamo appena scritto; le uniche differenze saranno l’uso di freccia sinistra al posto di freccia destra, e il blocco ruota in senso antiorario di 3 gradi al posto di ruota in senso orario di 3 gradi.

I puntini

Aggiungiamo i puntini che il giocatore dovrà raccogliere con il suo controller.

Un puntino non è altro che uno Sprite a forma di punto.

    Iniziamo a crearne uno di colore rosso:

  1. Fai click sull’icona Disegna un nuovo Sprite.
  2. Seleziona il colore rosso dalla palette dei colori, aumenta lo spessore della linea e, con lo strumento pennello selezionato, fai click nell’area da disegno.
  3. Dai allo Sprite il nome rosso.


Aggiungi questo blocco di codice alla pagina degli Script dello Sprite rosso:

Questi blocchi dicono a Scratch che, quando inizia il gioco, deve nascondere lo Sprite rosso e attendere 2 secondi; dopo di che, per sempre, deve continuare a creare una copia dello Sprite rosso ogni 5-10 secondi (dove il numero di secondi esatto è scelto casualmente fra questi due estremi).

Il blocco nascondi serve a pulire lo schermo quando viene iniziata una nuova partita.

Nel nostro gioco, i puntini devono apparire ai quattro angoli dello schermo e dirigersi verso il controller.
I puntini che vengono creati attraverso il blocco di codice che abbiamo appena visto devono quindi apparire in uno dei quattro angoli dello schermo:

Come facciamo a dire a Scratch di far apparire lo Sprite rosso (e i suoi cloni) in uno degli angoli dello schermo?
Dobbiamo identificare le coordinate x e y delle posizioni iniziali e creare una lista che le contenga.

I quattro punti iniziali possono essere quelli di coordinate (180, 180), (-180, 180), (180, -180), (-180, 180). La scelta fatta è arbitraria; potresti optare per coordinate iniziali differenti. Il vantaggio di questa scelta è che fa uso di due soli valori: 180 e -180; una lista che contiene questi due valori può quindi essere usata per generare tutte e quattro le posizioni iniziali.

    Per craere questa lista:

  1. Fai click su Variabili e Liste e premi il pulsante Crea una Lista;
  2. Scrivi Posizioni iniziali nel campo di testo Nome della lista, spunta la casella Per tutti gli Sprite e premi il pulsante Ok;
  3. Premi il pulsante +:
  4. Aggiungi il valore 180;
  5. premi di nuovo il pulsante +;
  6. e aggiungi il valore -180:

Possiamo ora dire a Scratch di posizionare lo Sprite rosso clonato in una delle posizioni iniziali scelta in modo casuale:

Lo sprite rosso dovrà quindi muoversi in direzione del controller e diventare visibile:

E, infine, muoversi finché non tocca il controller:

Lancia il programma per vedere se ciò che hai finora programmato in Scratch funziona correttamente.

Per evitare che la lista sia visibile nel gioco, fai click su Variabili e Liste e togli la spunta alla casella Posizioni iniziali:

Avrai notato che quando il puntino rosso raggiunge il controller si ferma e niente più; è esattamente il risultato delle istruzioni che abbiamo dato a Scratch.
Cosa vogliamo che succeda, invece?
Quando il puntino rosso tocca il controller possono verificarsi due casi differenti: se lo tocca nel quadrante rosso, vogliamo che il giocatore guadagni dei punti; se lo tocca in un quadrante non rosso, vogliamo che il giocatore perda una vita.

Prima di procedere, dobbiamo quindi creare le variabili punti e vite.

    Per creare la variabile punti:

  1. Fai click su Variabili e Liste e premi il pulsante Crea una Variabile;
  2. Scrivi punti nel campo di testo Nome della variabile, spunta la casella Per tutti gli Sprite e premi il pulsante Ok;

Ripeti la stessa procedura per creare la variabile vite.

Scrivi quindi il codice seguente:

Se il puntino rosso tocca il controller nel quadrante rosso, il giocatore guadagna 1 punto; altrimenti perde una vita.

Il blocco fai 5 passi permette al puntino di saltare il bordo nero del controller; in questo modo possiamo verificare se viene verificata la condizione sta toccando il colore rosso.

In ogni caso, il puntino rosso deve essere eliminato dopo aver toccato il controller:

Non abbiamo ancora definito i valori iniziali delle variabili punti e vite. Vogliamo che il valore iniziale di punti sia 0 e quello di vite sia 3.
Per dare le istruzioni corrette a Scratch, seleziona lo sfondo e scrivi questo programma:

Lancia il programma per vedere se tutto funziona correttamente.

Il gioco che abbiamo programmato in Scratch funziona…. ma non finisce mai!
Non abbiamo infatti fissato nessuna condizione che dica a Scratch di fermare il gioco nel caso venga soddisfatta.
Facciamolo adesso:

Lancia ancora una volta il programma per verificare che tutto funzioni a dovere.

Puntini di tre colori

Nel nostro gioco i puntini devono essere rossi, gialli e blu. Per il momento abbiamo lavorato solo usando i puntini rossi; dobbiamo quindi creare gli Sprite giallo e blu e fare in modo che si comportino esattamente come lo Sprite rosso.

Per creare gli Sprite giallo e blu procedi esattamente come hai fatto precedentemente per creare lo Sprite rosso:

Poichè i due nuovi Sprite dovranno comportarsi in maniera del tutto simile allo Sprite rosso, puoi copiare nella loro pagina di script il programma in Scratch che hai scritto prima. Dovrai solamente cambiare il colore nel blocco sta toccando il colore in modo che corrisponda al colore dello Sprite in questione:

Lancia il programma per vedere se tutto funziona correttamente.

Adesso il gioco è molto più interessante e difficile!

Ancora più difficile

Possiamo rendere il gioco ancora più diffcile. Per esempio, possiamo fare in modo che la velocità con cui appaiono i nuovi puntini aumenti progressivamente… ossia che il tempo di attesa fra la creazione di un puntino e il successivo diminuisca progressivamente.

Per farlo, creiamo una nuova variabile tempo di attesa e inizializziamola con un valore 8:

Adesso facciamo in modo che ogni 10 secondi, la variabile tempo di attesa diminuisca di 0,5 secondi, fino a che raggiunge il valore 2:

Non ti rimane ora da far altro che modificare il blocco attendi numero a caso fra 5 e 10 secondi degli Sprite rosso, giallo e blu in modo che dipenda dalla variabile tempo di attesa:

Puntini più veloci

Al momento i puntini si muovono ad una velocità di un passo. Sapresti fare in modo che la velocità aumenti progressivamente?

Dovrai creare una variabile velocità che si comporta in maniera del tutto simile alla variabile tempo di attesa che abbiamo appena visto.

Punteggio record

Un ulteriore miglioramento al gioco sarebbe portato dalla possibilità di salvare il punteggio più alto ottenuto. Proviamo a vedere come possiamo aggiungere questa funzionalità al nostro programma in Scratch.

Prima di tutto, creiamo una nuova variabile record in cui salvare il punteggio più alto ottenuto nel gioco.

Ci farà comodo creare anche un nuovo blocco controlla punteggio record.

    Per farlo seleziona lo sfondo e

  1. Fai click su Altri Blocchi e premi il pulsante Crea una Blocco;
  2. Dagli il nome controlla punteggio record e premi il pulsante Ok:

Il blocco controlla punteggio record è così definito:

Se il valore attuale di punti è maggiore del valore di record, allora assegna a record il valore attuale di punti.
Ora dobbiamo solo dire a Scratch di controllare il punteggio record quando finisce una partita:

Lancia il gioco per vedere se hai seguito correttamente le istruzioni per programmare in Scratch “Catch the Dots” e se tutto funziona correttamente.


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.