Christmas gift boxes





Bentornati con un nuovo piccolo progetto con Scratch, ambientazione natalizia e abbastanza semplice per una veloce realizzazione. I più bravi potranno prendere spunto e potenziare il tutto. 
Il materiale
Qui 👈 troverete gli assets che ho utilizzato io se non volete perdere troppo tempo, altrimenti vi basterà un Babbo Natale con almeno 5 o 6 immagini per animare una camminata ( altrimenti si sposterà stile mummia 😂 ), una bomba 💣 e l'immagine dell'esplosione, uno o più pacchetti natalizi 🎁.
Il gioco
Molto semplice e spero carino, Babbo Natale dovrà spostarsi a destra e sinistra per raccogliere tutti i pacchetti regali da consegnare ma dovrà fare attenzione alle bombe per non saltare in aria 😱 
Per il codice
Ho cercato di scrivere un codice semplice ma comunque ricco di spunti , utilizzeremo le variabili in due modi diversi, i messaggi immancabili, un po' di animazioni e gestione del reparto grafico, i soliti cicli, condizioni, niente di complesso e comunque tutto già trattato in altri tutorial che potrete eventualmente recuperare.
Il codice
Iniziamo dal nostro Babbo Natale e vi ricordo anche che tutto il codice potrete vederlo anche su Scratch seguendo il link che metterò del mio progetto e eventualmente per i più pigri o ritardatari c'è anche la funzione remix. Scratch accontenta tutti.
Partiamo dalla grafica , giusto due parole perché caricherò un video esplicativo che potrai visualizzare qui sotto  




e perché è un metodo già spiegato QUI, creando un nuovo sprite caricando l'immagini della camminata. Nel mio caso è stato aperto con l'editor delle immagini bitmap, nella mia immagine ci sono tutte quelle che servono per l'animazione, in caso contrario ritornate alla visualizzazione bitmap quindi in basso troverete converti in vettoriale.
Andiamo adesso in costumi , il tab in alto a sinistra, e con il tasto in basso selezioniamo disegna nuovo costume, naturalmente vuoto, adesso possiamo andare nella prima immagine dove abbiamo tutti i disegni e utilizzando lo strumento Seleziona andare a creare una selezione che comprenda un solo disegno. Se siamo molto attenti a non invadere più disegni, in automatico Scratch andrà a creare una selezione molto precisa che riguarda solo la figura scelte. A questo punto con in comandi in alto ci basterà selezionare copia e poi passando al costume vuoto selezionare incolla, posizioniamo la figura con la croce di centraggio precisamente sulla croce del centro editor grafico e abbiamo fatto. Ripetiamo la procedura per tutte le immagini ed avremo tutti i costumi che ci servono per l'animazione, il centraggio ci permette di avere già le immagini in posizione corretta per l'animazione.
Step fondamentali:
  1. Introdurre immagine generale con tutti i disegni
  2. Accertarsi di essere in modalità bitmap ( sotto leggeremo converti in vettoriale ) 
  3. Selezioniamo attentamente un solo disegno 
  4. Premere copia
  5. Spostarsi su costume vuoto ( crearlo se non esiste )
  6. Premere incolla 
  7. Centrare costume 
  8. Ripetere dal punto 3 in poi fino ad esaurire le immagini
  9. Cancellare l'immagine con tutti i disegni
Passiamo adesso ai vari blocchetti. Quando si clicca sulla bandierina verde introduco il blocco usa stile di rotazione sinistra-destra per evitare che il mio sprite ruoti su se stesso, lo posiziono in basso con vai a XY e lo mostro. Per il movimento tra i vari codici che si possono usare andremo ad utilizzare il più semplice, in Situazioni il blocco Quando si preme il tasto freccia sinistra ( selezionabile dal menu a comparsa ) andrà a definire cosa succede alla pressione della freccia, nel nostro caso faremo un movimento verso sinistra ovviamente. Fai 10 passi indica l'entità dello spostamento scelto , per andare a sinistra imposteremo punta in direzione - 90 e passa al costume seguente e attendi 0.05 secondi serviranno per creare l'animazione della camminata. Quindi ad ogni click o se teniamo premuto faremo 10 passi, cambio di costume e attesa, la modifica dei parametri cambierà l'animazione e la velocità, i costumi che abbiamo caricato singolarmente servivano proprio per ricreare questo carosello di immagini in sequenza.
Quando si preme il tasto freccia destra sarà identico ma impostando punta in direzione 90 per girare l'immagine verso destra e quindi effettuare i passi verso destra. Molto semplice, se avete visto il breve video di presentazione avrete fatto caso all'esplosione con annessa partenza a razzo del nostro Babbo Natale che attiveremo con l'invio di un messaggio Game Over.
Quando ricevo Game Over avvio il suono ( che potrete introdurre con il tab suoni e poi in basso scegli suoni ) e ripeto fino a quando sto toccando il bordo il cambia Y di 20. Il cambia Y di 20 mi permette di "salire" verso l'alto nello stage fino a quando non tocco il bordo superiore. Anche se in italiano ho utilizzato la parola non tocco il bordo, negazione riproducibile con not o non degli operatori, in questo caso non è essenziale in quanto il blocco ripeti continua ad eseguire il codice al suo interno fino a quando non si realizza la condizione impostata, quindi nel nostro caso aumenterà la Y fino a quando toccheremo il bordo. Nel momento del tocco , condizione=vera, usciremo dal ciclo ripeti e proseguiremo con nascondi e vai in posizione , poi ho aggiunto un attendi e mostra per puro stile scenico. A differenza di altri linguaggi il ripeti rimane attivo fin quando la condizione impostata è falsa, si bloccherà il ciclo nel momento in cui la condizione passa a vera.  


Adesso andiamo ad analizzare il codice dei nostri pacchetti. Quando si clicca sulla bandierina verde inizializziamo il tutto con nascondi e posizioniamo in alto con vai a X=0 Y=180, creiamo due variabili PUNTI NATALE E SPEED che imposteremo rispettivamente a zero e -5. Per la variabile SPEED andremo a selezionare anche Solo per questo sprite così nel momento in cui andremo a creare dei cloni ognuno di loro sarà abbinato ad una variabile SPEED personale valida solo per quel clone. La sezione di gioco verrà attivata dall'invio del messaggio GIOCO infatti Quando ricevo GIOCO avrà al suo interno il codice per creare i vari cloni dei pacchetti, anche qui dall'immagine con tanti pacchi colorati ho creato tanti costumi con pacchi diversi. Un ciclo infinito Per sempre andrà a selezionare un costume a caso tra 1 e 7 ( perché ho creato 7 costumi diversi, il blocco permette la selezione sia tramite numero del costume sia eventualmente tramite nome ), sposterà lo sprite originale con vai dove X è selezionando un numero a caso tra -200 e 200 ( ci basta spostarlo solo in orizzontale ) , creerà il clone e aspetterà un tempo casuale per differenziare l'uscita dei pacchi. Semplice: cambio costume, mi sposto, clono, attendo. Vediamo cosa succede nel momento in cui vengo clonato, prima di tutto assegniamo un valore a SPEED che ricordiamo sarà personale per quel clone e servirà per impostare la velocità di discesa in modo che ogni pacco avrà la sua velocità. Andiamo a mostrare il nostro pacco e eseguiamo un suono di comparsa, il blocco Per sempre andrà a gestire il movimento e anche le eventuali interazioni con bordi e Babbo Natale. Per sempre il nostro pacco si muoverà verso il basso di una quantità decisa con cambia Y di SPEED e attenderà 0.1 secondi prima del prossimo movimento, tra questi due comandi inseriremo le condizioni necessarie a valutare se sta toccando il bordo o Babbo Natale.
Il primo se contiene due condizioni una per vedere se sta toccando il bordo e l'altra per controllare che il pacco si trovi al di sotto dello zero posizione Y < 0, questo per evitare che venga valutato anche il tocco sul bordo di partenza in alto, evitabile anche abbassando il valore di partenza del pacco ma a discapito di un effetto visivo peggiore. Le due condizioni unite dall'operatore e ( and ) indicano che si dovranno verificare contemporaneamente e allora essendo arrivati sul fondo dobbiamo semplicemente eliminare questo clone. Il secondo se invece controlla se stiamo toccando Babbo Natale ( selezionabile dal menu a comparsa del blocco sta toccando ) in questo caso allora andremo ad assegnare un punto al giocatore con Cambia PUNTI NATALE di 1 e eliminare il clone. I blocchi per sempre devono essere fermati al momento opportuno quindi Quando ricevo GAME OVER andrà a fermare tutti gli altri script dello sprite e eliminare questo clone così da fermate quelli in esecuzione.     


Lo sprite relativo alla bomba sarà molto simile a quello del pacco a livello di codice mentre per la parte grafica ho solo aggiunto il costume della bomba e quello dell'esplosione.
Bandierina verde e impostiamo il costume della bomba, nascondiamo e andiamo in alto con vai a X=0 Y=180 , la variabile SPEED può andare anche a zero tanto verrà impostata ad ogni clone e ricordiamoci di creare la suddetta variabile impostando valida solo per questo sprite. Quando ricevo GIOCO è praticamente identico  parte il fatto che non dobbiamo impostare un costume casuale e il tempo di attesa è più lungo per dosare meglio la quantità di pacchi e bombe. Con  Quando vengo clonato imposteremo un valore casuale di SPEED , andremo a mostrare la nostra bomba con il suo effetto sono, il blocco Per sempre gestirà la discesa con cambia Y di SPEED e l'attesa di 0.1 secondi. La condizione di tocco del bordo inferiore è praticamente la stessa e se sta toccando il bordo e contemporaneamente siamo lontani dal bordo superiore allora andremo a eliminare questo clone, se invece stiamo toccando Babbo Natale allora passiamo al costume seguente per visualizzare l'esplosione e avviamo il suono di scoppio, l'attesa di 0.2 secondi ci permetterà di apprezzare l'esplosione e poi invieremo il messaggio GAME OVER per attivare il blocco del gioco. Quando ricevo GAME OVER nascondiamo la nostra bomba cambiando il costume con quello della bomba , fermiamo gli altri script dello sprite ed eliminiamo il clone , pronti per una nuova partita.       



Ecco giunti allo sprite che gestisce la partenza del gioco , per come è stato impostato permette di giocare più partite consecutive senza premere ogni volta la bandierina verde per azzerare i parametri del gioco, ecco anche il motivo per cui sul GAME OVER abbiamo riportato il costume bomba al suo posto nonostante questa operazione è presente nel suo codice di inizializzazione.
Graficamente ho creato 4 costumi : 1) Pulsante con scritta PLAY 2) Scritta con regole del gioco 3) Scritta PRONTI 4) Scritta VIA!!
Sulla bandierina verde imposto il costume con il pulsante PLAY ( il primo ) , posiziono centralmente il mio sprite e lo mostro. Nel momento in cui si clicca su questo sprite passo al costume seguente ( la spiegazione ) ed attendo 6 secondi per far leggere, poi passo in sequenza gli altri due sprite con le scritte aspettando un tempo decisamente basso, dopo l'ultima attesa nascondo lo sprite e porto al costume iniziale del tasto, invio a tutti GIOCO e porto la variabile punteggio a zero. Dopo tutto questo cambio di costumi mi ritrovo nella condizione inziale con il costume del pulsante e al suo click partirà nuovamente la stessa procedura.
Quando ricevo GAME OVER riproduco la musichetta e dopo l'attesa mostro il pulsante.  


Lo sfondo l'ho modificato selezionando Stage sul lato destro , vicino agli sprite, effettuato le varie modifiche grafiche a piacimento e ho deciso di aggiungere un semplice codice anche per lo stage affinché venga eseguita una musica durante il gioco. Al tocco della bandierina un Per sempre manda in esecuzione il blocco riproduci e attendi la fine , non ci confondiamo altrimenti non suonerà niente 😅 



Anche questo giochino volge al termine, spero vi piaccia e ci siano stati spunti interessanti anche per altri progetti. Se ci sono dubbi vi aspetto nei commenti qui nel blog o se preferite su Instagram o Facebook.
Link al progetto Scratch 👉 QUI


 Hai apprezzato il mio lavoro? Se ti va puoi 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?