Giochi Blockly: uccello

Uccello

Come puoi aiutare l’uccello a portare il verme nel nido?
Quali istruzioni devi dare a Blockly?

Blockly ti da un suggerimento: indicando il blocco viola presente nell’erea di lavoro, ti suggerisce di modificare “il valore dell’angolo nell’etichetta in modo che l’uccello possa raggiungere il verme e arrivare nel suo nido.”

Prima di cambiare il valore dell’angolo, riesci a indovinare cosa fa il blocco direzione 90°?
Come abbiamo già visto, i blocchi viola sono quelli che permettono di controllare il movimento del personaggio del gioco… in questo caso, il movimento dell’uccello.
Ma l’angolo 90° quale direzione indica? 90° rispetto a cosa?
Per scoprirlo, premi il pulsante Esegui il programma.

Il blocco direzione 90° fa muovere l’uccello verticalmente verso l’alto, e cioè a 90° rispetto all’orizzontale.
Quando raggiunge il bordo superiore dello schermo, si blocca.

Bene. In che direzione deve muoversi l’uccello per raggiungere il verme?
Deve muoversi a 45° rispetto all’orizzontale.
Devi, quindi, inserire il valore 45 nel blocco direzione.
Per farlo, fai click nello spazio in cui c’è scritto 90, cancella 90, scrivi 45 e premi invio.

Premi Reimposta, e quindi Esegui Programma.

L’uccello prende il verme e raggiunge il nido!

Bene. Quando sei pronto, premi OK e passa al livello 2.

Ora nell’area di lavoro è presente un blocco se-altrimenti simile a quelli che già conosci, ma senza alcuna condizione espressa al suo interno: al suo posto c’è uno spazio vuoto dove può essere inserito un nuovo blocco.

Che tipo di blocco puoi usare per esprimere una condizione?
Un blocco che può assumere solo i valori vero o falso, esattamente come il blocco non ha il verme che ora hai a disposizione.

Il blocco non ha il verme assume il valore vero quando l’uccello non ha il verme in bocca, falso quando l’uccello ha il verme in bocca.

Quindi, se inseriamo il blocco non ha il verme nel blocco se-altrimenti,

se l’uccello non ha il verme in bocca, verrà eseguita l’azione del blocco che inserirai di fianco a fai, se lo ha, verrà eseguita l’azione del blocco che inserirai di fianco a altrimenti.

Prova a inserire i blocchi necessari perché l’uccello raggiunga prima il verme e quindi il nido.

Se sei in difficoltà, puoi vedere la soluzione qui.
 
 
Nel livello 3 non ci sono nuovi blocchi. L’unica difficoltà in più rispetto al livello precedente è che, ora, il percorso che deve compiere l’uccello è leggermente più complicato.

Riesci a dare a Blockly le istruzioni giuste? Tieni in considerazione che l’uccello si può muovere anche in diagonale!

Se ti serve, puoi vedere la soluzione qui.
 
 
Passiamo al livello 4:

Nel livello 4 al posto del blocco non ha il verme hai a disposizione un nuovo blocco che esprime una condizione da inserire all’interno del blocco se-altrimenti: è quello racchiuso nel riquadro rosso che puoi vedere nella figura precedente.

Come nel caso del blocco non ha il verme, anche questo nuovo blocco può assumere solo i valori vero o falso. Assumerà il valore vero se x è minore di 50, e falso in caso contrario.

Se, quindi, lo inseriamo nel blocco se-altrimenti

se x è minore di 50, verrà eseguita l’azione del blocco che inserirai di fianco a fai, se non lo è, verrà eseguita l’azione del blocco che inserirai di fianco a altrimenti.

Ma cosa rappresenta il blocco x?
Rappresenta la posizione dell’uccello lungo l’asse orizzontale:

Quando l’uccello si muove in orizzontale, il valore di x cambia: è 0 sul bordo sinistro e cresce andando verso destra fino ad arrivare a 100.

Quindi, per raggiungere il nido, l’uccello dovra muoversi orizzontalmente se x è minore del valore di x in cui si trova il nido, verticalmente verso il basso in caso contrario.
Prova a inserire i blocchi necessari.
Se ti trovi in difficoltà, puoi vedere la soluzione qui.
 
 
Nel livello 5 ti viene data la possibilità di modificare un blocco se a seconda delle tue esigenze:

Se trascini il blocco altrimenti sotto il blocco se, ottieni un blocco se-altrimenti identico a quello che hai usato nel livello precedente:

Allo stesso modo, puoi combinare i blocchi altrimenti e altrimenti se come preferisci, per ottenere il blocco se che ti serve. Potresti, per esempio, collegarli in questo modo:

Che tipo di blocco se ti serve in questo caso?
Come deve muoversi l’uccello per raggiungere il nido?

Ti basta usare un normale blocco se-altrimenti… tieni presente che puoi cambiare il segno minore in maggiore nell’espressione che controlla il valore di x o di y

Se ti trovi in diffoltà, puoi vedere la soluzione qui.

Nel livello 6 non ti basta più controllare una sola condizione: devi costruire un blocco se che ne contenga due.

Ci riesci?

Mentre cerchi la combinazione giusta di blocchi, ricordati che non è necessario collegare in un colpo solo tutti i blocchi che ti servono. Infatti, man mano i problemi da risolvere diventano più complicati, ha senso cercare di scomporli in parti più semplici da risolvere. Per esempio, in questo caso, potresti prima cercare la combinazione di blocchi che permette all’uccello di raggiungere il verme, testarla premendo il pulsante Esegui Programma, e, una volta che hai risolto questo problema, cercare la combinazione che gli permetta di arrivare al nido. Se il programma che scrivi non funziona, questo modo di procedere ti permette di capire immediatamente dove si trova il problema… e quindi ti aiuta a risolverlo facilmente!

In questo caso, guardiamo insieme la soluzione per fare alcune considerazioni:

Abbiamo usato un blocco se - altrimenti se - altrimenti.
Vediamo passo passo come ragiona Blockly.

Blockly legge la prima condizione e verifica se è vera o falsa.
La prima condizione è definita dal blocco non ha il verme.
All’inizio l’uccello si trova all’inizio nella posizione in cui x = 20 e y = 40:

All’inizio l’uccello ha il verme in bocca?
No! Quindi la condizione non ha il verme è vera.
Poiché la condizione è vera, Blockly esegue l’istruzione definita dal blocco inserito in fai, e cioè direzione 345°: l’uccello si muove di un passo verso il verme.

Dopo un passo, Blockly riparte dall’inizio: è vera la condizione non ha il verme?
Sì!
Allora, direzione 345°… e così via fino a quando l’uccello raggiunge il verme.
A questo punto la condizione non ha il verme diventa falsa.
Cosa fa Blockly? Controlla la condizione successiva: y è minore di 80?
Sì!
Allora fai direzione 90°: l’uccello si muove di un passo verticalmente verso l’alto.

Al passo successivo Blockly ritorna a verificare se è vera la prima condizione… e così via…
L’uccello ha il verme in bocca?
Sì. Quindi la condizione non ha il verme è falsa.
y è minore di 80?
Sì.
Allora fai direzione 90°.

Quando l’uccello raggiunge la posizione y = 80, allora anche la seconda condizione diventa falsa.
L’uccello ha il verme in bocca?
Sì. Quindi la condizione non ha il verme è falsa.
y è minore di 80?
No.
Allora altrimenti direzione 180°: l’uccello si muove orizzontalmente verso sinistra di un passo.

Al passo successivo, Blockly ripete le stesse operazioni…. finchè l’uccello raggiunge il nido!
 
 
Il livello 7 è leggermente più complicato, ma non aggiunge nessuna novità:

Prova a scrivere il programma.
Se ti trovi in difficoltà, puoi vedere la soluzione qui.
 
 
Nel livello 8 ti viene invece presentato un nuovo blocco:

Il blocco nel riquadro rosso in figura presenta al suo interno l’operatore logico e.
Questo blocco ti permette di chiedere a Blockly di verificare se sono vere contemporaneamente due condizioni. Per esempio queste istruzioni

chiedono a Blockly di verificare se la condizione non ha il verme e la condizione x minore di 50 sono contemporaneamente vere.
Se lo sono, allora Blockly eseguirà l’azione definita dal blocco che inserirai in fai.

Prova a risolvere questo livello.
Se sei in difficoltà, puoi vedere la soluzione qui.
 
 
I livelli successivi sono più difficili da risolvere, anche se non ti richiedono di utilizzare niente che non hai già imparato.
Prova a risolverli, ricordandoti che è più semplice affrontare un problema quando lo si scompone in parti più semplici da risolvere.

In ogni caso, puoi vedere le soluzioni del gioco Blockly qui: soluzione livello 9 e soluzione livello 10.

 

© Olivetti Scuola Digitale 2018