Come programmare con Scratch un videogioco di sci

Cosa farai

Questa risorsa ti spiegherà come programmare con Scratch un videogioco di sci.

Il giocatore controlla lo sciatore usando i tasti freccia destra e freccia sinistra; dovrà evitare gli ostacoli che gli vengono incontro per guadagnare punti. Quando lo sciatore viene colpito da un ostacolo, cade e la partita finisce.

Lo sciatore e la pista

    Per prima cosa dobbiamo creare uno Sprite sciatore e uno sfondo che simuli una pista da sci.

    Abbiamo creato lo Sprite per te: lo puoi scaricare facendo click qui.

    Salva il file sul tuo computer. Poichè si tratta di un file compresso (skiing_cat.sprite2.zip), decomprimilo, in modo da avere a disposizione il file: skiing_cat.sprite2.
    Per utilizzarlo:

  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 facendo click sull’icona Carica uno Sprite da un file.
  3. Cerca e seleziona il file skiing_cat.sprite2 sul tuo computer e premi il pulsante Apri.
  4. Un gatto sciatore apparirà nello Stage.

    Dobbiamo ora disegnare uno sfondo che simuli una pista da sci:

  1. Fai click sull’icona Disegna un nuovo sfondo.
  2. Seleziona il colore grigio chiaro dalla palette dei colori e con lo strumento Riempi con il colore riempi lo sfondo di grigio.
  3. Seleziona un grigio più scuro dalla palette dei colori e con lo strumento Linea disegna due linee che simulino il bordo della pista.
  4. Dai allo sfondo il nome pista_da_sci e premi invio.


Quando il gioco inizia, vogliamo che il gatto sciatore sia sempre in alto e al centro dello schermo, e guardi verso il basso. Vogliamo cioè che:

Salva il profetto con il nome gara_di_sci.
Esegui il programma (cioè fai click sulla bandierina verde) per verificare che funzioni correttamente.

I comandi per lo sciatore

Vogliamo che lo sciatore si possa spostare orizzontalmente (a destra e a sinistra) attraverso lo schermo e che un giocatore possa controllare questo movimento usando i tasti freccia destra e freccia sinistra della tastiera.
Vogliamo inoltre che lo sciatore si rivolga verso la direzione in cui si sta spostando: deve cioè dare l’impressione di inclinarsi a sinistra quando si sposta a sinistra, e di inclinarsi a destra quando si sposta a destra.

Iniziamo con il collegare il movimento a sinistra con il tasto freccia sinistra:

Le istruzioni per muovere lo sciatore verso destra saranno del tutto analoghe:

Esegui il programma e verifica che lo sciatore si muova come previsto.

Un ostacolo

Creiamo ora un ostacolo che lo sciatore deve evitare.
L’ostacolo si muove dal basso verso l’alto… e ti accorgerai che, in questo modo, creerà immediatamente un senso di movimento nel nostro gioco, che, invece, adesso appare completamentre statico.

Per prima cosa, crea uno sprite per l’ostacolo; scegli dalla libreria degli sprite di Scratch qualcosa che ti sembra adatto. Nel nostro esempio, abbiamo scelto lo sprite Tree2, opportunamente ridimensionato con lo strumento Riduci lo Sprite:

Scriviamo ora le istruzioni per il suo movimento.
Vogliamo che, durante il gioco, l’ostacolo entri nello schermo dal basso e si muova verticalmente verso l’alto. Quando raggiunge il bordo superiore, sparisce e, dopo un certo tempo (1 secondo nell’esempio), rientra nello schermo dal basso:

Esegui il programma per vedere se funziona correttamente.

Saresti in grado di fare in modo che l’ostacolo sia diverso ogni volta che appare sullo schermo (e cioè a ogni ciclo del loop per sempre)?
Se per l’ostacolo hai scelto uno Sprite che ha un solo costume, dovrai scegliere un nuovo costume dalla libreria o crearne uno nuovo.
Dovrai poi utilizzare il blocco passa al costume nel tuo programma.

Un ostacolo in una posizione casuale

Avrai notato che, per il momento, l’ostacolo appare sempre nella stessa posizione: non è molto difficile evitarlo!

Facciamo ora in modo che nel videogioco che stiamo programmando con Scratch questo appaia ogni volta in una posizione differente.
In altre parole, ciò significa che la posizione x dell’ostacolo deve essere scelta in maniera casuale, e l’ostacolo deve apparire in questa posizione e spostarsi verticalmente verso l’altro.
Per farlo, creiamo allo scopo la variabile ostacolo_x:

  • Fai click su Variabili e liste e premi il pulsante Crea una variabile.
  • Dai il nome ostacolo_x alla nuova variabile e premi OK.
  • Vogliamo che l’ostacolo appaia nella posizione ostacolo_x, il cui valore è scelto a caso lungo tutto lo schermo (fra -200 e 200), e si sposti verso l’alto:

    La caduta

    Quando lo sciatore viene colpito da un ostacolo, cade e il gioco finisce.

    Se fai click sullo sprite sciatore e selezioni l’etichetta Costumi, vedrai che ha un secondo costume che possiamo usare quando viene colpito da un ostacolo.

    Vogliamo dunque che, quando lo sciatore viene colpito da un ostacolo (e cioè quanto tocca l’ostacolo), cambi costume e la partita finisca:

    Salva il progetto.

    Lancia il programma e vedi cosa succede.

    Come volevamo, quando lo sciatore viene colpito da un ostacolo, cambia costume e la partita finisce… ma c’è un problema: lo sciatore rimane con questo costume! Noi vogliamo che ritorni ad avere il costume precedente!
    Niente di grave… ci basta aggiungere un nuovo blocco passa al costume:

    Il punteggio

    Ora dobbiamo aggiungere un punteggio al nostro gioco.
    Un giocatore deve infatti guadagnare punti ogni volta che riesce a evitare un ostacolo.

    Per prima cosa, creiamo una nuova variabile punteggio.

    Il punteggio deve essere 0 all’inizio del gioco:

    Il punteggio deve aumentare di 1 quando lo sciatore riesce a evitare l’ostacolo… ossia quando l’ostacolo raggiunge il bordo superiore dello schermo:

    Prova a giocare e vedi quanti punti riesci a realizzare.

    Esercizio: aggiungi più ostacoli

    Se vuoi rendere il gioco che hai appena programmato con Scratch ancora più difficile? Puoi aggiungere altri ostacoli!
    Tieni sempre presente:

  • Quale Sprite utilizzare.
  • Cosa deve succedere quando lo sciatore viene colpito dall’ostacolo.
  • Se aumentare il punteggio o meno quando lo sciatore riesce a evitare un ostacolo.

  • 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.