Crab and Donuts

 



Buon giorno amici,

anche se in realtà questo post potrebbe essere letto in qualsiasi orario 😅, l'ultimo post realizzato mi ha riportato alla mente un periodo molto bello in cui ho lavorato tanto con Scratch e con persone di cui ho un ricordo bellissimo. Un periodo in cui ho conosciuto tante persone e imparato tanto e spero di aver trasmesso qualcosina. 

Lacrimuccia , fazzolettino e passiamo all'azione 💪

Ho deciso di fare una mini serie per introdurre l'utilizzo di alcuni blocchi di Scratch e allo stesso tempo creare un piccolo giochino eventualmente da personalizzare.

Partiamo subito, in basso a destra , la faccina del gattino e scegliamo gli sprite che ci piacciono, io ho scelto Crab e un bel Donut, una volta inseriti li ho selezionati uno per volta e nel pannello impostazioni dello sprite ho modificato la dimensione rispettivamente a 50 e 25, voi potrete personalizzare a piacimento. Sempre in basso a destra scegli uno sfondo ho selezionato un paesaggio marino.

Codice di Crab 

Il codice sarà molto semplice ma vediamo nel dettaglio. Primo blocco, la nostra inizializzazione, quando si clicca la bandierina verde andremo a dire tutte le cose da fare all'inizio, tutti i valori da impostare per il progetto. In questo caso ho impostato la posizione del granchietto all'interno dello stage , posizionandolo sul fondo del mare.

Attenzione, se andiamo ad utilizzare i blocchi tocco del bordo o simili ricordiamoci che i bordi sono tutti e 4 , quindi facciamo attenzione, nel mio caso infatti ho volutamente posizionato a mano lo sprite , per individuare la posizione Y per me ideale, e in seguito ho prelevato il blocco vai a X..Y.. così da avere già impostato il valore corretto in altezza del mio granchietto. Vi ricordo anche che abbiamo due posizioni importanti da verificare, quella nello stage , quindi le effettive coordinate XY dello sprite, ma anche quelle relative derivanti dalla posizione dello sprite all'interno dell'editor grafico raggiungibile premendo il tab in alto a sinistra COSTUMI. Il disegno può essere centrato o meno e cambierà la posizione nello stage, se ti fa piacere un approfondimento fammelo sapere nei commenti. Per la posizione X invece ho scelto zero per centrare il tutto.


Adesso dobbiamo far muovere il nostro sprite e lo faremo usando le frecce della tastiera, per questo specifico comando Scratch ci regala un blocco a cappello molto comodo dove premendo sul lato destro , dove troviamo la freccina verso il basso, dal menu possiamo selezionare il tasto che fa al caso nostro, freccia destra e sinistra nel nostro caso. 


Quando si preme il tasto freccia destra vogliamo far muovere lo sprite verso destra quindi andiamo a introdurre come primo blocco fai 5 passi, quindi ad ogni pressione del tasto o se teniamo il tasto premuto lo sprite farà uno spostamento di 5 "pixel" verso destra. 
Attenzione, verso è proprio la parola corretta infatti per ottenere questo effetto ci dobbiamo assicurare di aver impostato direzione su 90 gradi che indica proprio la direzione orizzontale e verso di spostamento per valori positivi, quindi a destra. Ricorda i passi seguono sempre la direzione, in alternativa potresti usare i blocchi cambia X o cambia Y se vuoi per esempio il granchio inclinato ma che trasla verso destra. Per la freccia di sinistra basta semplicemente  impostare fai -5 passi e il nostro granchio andrà nella direzione opposta , verso valori negativi , quindi a sinistra.
Il controllo, quindi la condizione da verificare, che andremo ad inserire adesso ci permetterà di ricreare il famoso effetto pac-man 😂 il nostro sprite raggiunto il bordo se continuerà a camminare comparirà dal bordo opposto, vediamo come fare.
Conosciamo tutti le dimensioni massime dello stage e i valori delle coordinate ( vero??  altrimenti ti consiglio l'approfondimento QUI ) allora iniziamo a ragionare, mi sto muovendo verso destra , verso valori positivi ( ipotizziamo lo sprite centrato con il suo centro nel centro dell'editor grafico ) e sappiamo che il massimo valore delle X raggiungibile è 240, se supero questo valore o meglio se il centro del mio sprite supera questo valore voglio trasportare il mio sprite sul bordo opposto. 
Fatto! Tradotto in codice se posizione X > di 240 porta il mio granchietto dove la X vale -240 quindi sul bordo sinistro. Posizione X lo troverai nei blocchi movimento mentre il maggiore tra gli operatori. In modo del tutto similare se ci stiamo muovendo verso sinistra il limite massimo sarà -240 e una volta superato dovrò saltare al bordo opposto, tradotto a avremo se posizione X < di -240 porta il mio granchietto dove la X vale 240 quindi sul bordo destro. 

Codice di Donut
Vediamo adesso il nostro dolcino cosa dovrà fare, useremo il blocco clona per creare delle copie del nostro donut che pioveranno dal cielo per la gioia del nostro affamato amichetto.
Andrò a posizionare , da codice questa volta perché conosco bene le coordinate, il mio sprite in modo che tocchi leggermente il bordo superiore per accentuare l'effetto pioggia dall'alto. I primi blocchi sotto quando si clicca la bandierina verde saranno nascondi , perché non voglio far vedere il mio dolcino, e vai a X= 0 Y= 180 e poi andrò ad inserire un blocco molto particolare per manderà in esecuzione i comandi per un tempo infinito o almeno fino a quando vorremo noi , il blocco per sempre è un ciclo infinito che ad ogni refresh dello stage eseguirà i blocchi al suo interno. 


Visto che questo blocco esegue all'infinito i comandi, ho bisogno di qualcosa che scandisca i tempi di questa esecuzione, non vogliamo mica il diluvio universale 😂 , bene attendi numero a caso tra 1.0 e 3.0 secondi mi permette di temporeggiare tra un comando e l'altro e il blocco numero a caso di variare l'attesa visto che estrarrà a caso un valore in quell'intervallo, rendendo l'animazione più carina. La scrittura con i decimali evidenziati mi permette di estrarre tutti valori dell'intervallo e non solo gli interi, quindi potremo avere anche 1.345 e non solo 1 o 2 o 3. Sincronizzato l'orologio manderemo il nostro sprite in una posizione casuale tra i valori -220 e 220 della X ,vai dove X è numero a caso tra -220 e 220 , per poi clonarlo; finito il nostro ciclo parte nuovamente con l'attesa, la posizione e la clonazione. Ricordiamoci che il nostro sprite è invisibile, per ora abbiamo solo creato la macchina spara donut 😄.
Per impostare cosa succede ad ogni clone dobbiamo prendere il blocchetto quando vengo clonato e anche qui aggiungere un ciclo infinito per sempre.




La prima cosa da inserire è mostra per rendere lo sprite visibile e poi farlo scendere verso il basso , ci troviamo sul massimo valore positivo delle Y quindi per scendere dovremo sottrarre valore alla Y, cambia Y di -2 fa al caso nostro. A questo punto visto che non voglio scivolare sui dolcetti imposteremo che al tocco del terreno spariscano anche perché i cloni non sono infiniti e se non li eliminiamo ad un certo punto non saranno più generati.
Ecco che il nostro controllo andrà a verificare se lo sprite sta toccando il bordo per eliminarlo, in questo esempio ho voluto di proposito inserire l'operatore logico and che permette di valutare se quelle due condizione avvengono contemporaneamente e solo in quel caso eliminare lo sprite. Quindi deve toccare il bordo e deve trovarsi sotto lo zero, il motivo di questa aggiunta è dovuta al fatto che di partenza ho inserito lo sprite che toccava il bordo , la Y era 180, proprio per ricordarvi che scratch non fa distinzione tra i bordi toccati. Se sostituiamo l'operatore and e inseriamo solo sta toccando bordo non avremo mai un donut perché verranno clonati e subito eliminati.  
Spero vi sia piaciuto fatemelo sapere nei commenti e sui vari social, nel prossimo 👉 POST continueremo il nostro giochino scoprendo nuovi comandi.
Alla prossima 

Raffaele
 
 
Continua qui  👉 POST

Qui trovi il 👉 PROGETTO scratch


 Se hai apprezzato il mio lavoro offrimi un bel caffè 😍

 

Commenti

Ciao, spero ti piaccia il blog. Se ti fa piacere qui puoi offrirmi un caffè!

Post popolari in questo blog

GOOGLE SCRIPT & KODULAR READ, WRITE, UPDATE, DELETE

Tu lo conosci THUNKABLE?