Il prossimo pezzo
del tuo gioco.
Come faccio i turni? Come salgo di livello? Parti dal gioco che hai già iniziato: scegli un aiuto e costruisci una cosa alla volta.
Prima salva una copia del progetto in Scratch: File → Salva sul tuo computer. Poi prova la modifica sulla copia.
Prima dei blocchi
- Scegli lo sprite cliccando la sua miniatura sotto il gioco. Sopra ogni figura trovi il nome.
- Crea le variabili: categoria arancione Variabili → Crea una variabile → Per tutti gli sprite. Spunta il loro nome per vedere il valore durante la prova.
- Trascina i blocchi in Scratch guardando la figura. I nomi nei menu devono coincidere con quelli del tuo progetto. La scritta «fine» chiude un blocco a C: non è un blocco da cercare.
Dove cercare: Situazioni (giallo) per bandiera, tasti e messaggi; Controllo (arancione) per «se» e attese; Operatori (verde) per confronti e calcoli. In alto in Scratch puoi scegliere la lingua italiana.
«Come faccio a giocare uno alla volta?»
Una variabile tiene il posto: Turno. Vale «mio» quando puoi attaccare e «avversario» quando devi aspettare.
Parti dalla guida Lotta a turni. Questi sono gli stessi blocchi dei traguardi 2–4: se li hai già, controllali e correggili, senza aggiungere una seconda copia.
Prova l’idea qui
In questo esempio l’attacco toglie 15 PS e la risposta 10. Nel gioco della guida la risposta è casuale, tra 8 e 16.
I tuoi PS 100PS avversario 100
Turno: mio. Puoi attaccare.
È una dimostrazione del turno. Il tuo progetto si costruisce in Scratch con i blocchi qui sotto.
1. Prepara personaggi, sfondi e variabili
Servono gli sprite Mio e Avversario; gli sfondi Arena, Hai vinto, Hai perso; le variabili PS mio, PS avversario, Turno, tutte per tutti gli sprite.
quando si clicca su @greenFlag passa allo sfondo [Arena v] porta [PS mio v] a (100) porta [PS avversario v] a (100) porta [Turno v] a [mio] dire [Premi 1 o 2 per attaccare!] per (2) secondi
In «porta Turno a» scrivi la parola mio al posto del numero. Un contenitore può ricordare anche una parola.
2. Attacca solo quando tocca a te
quando si preme il tasto [1 v] se <(Turno) = [mio]> allora porta [Turno v] a [avversario] dire [Attacco rapido!] per (1) secondi cambia [PS avversario v] di (-15) invia a tutti [turno avversario v] fine
Prima cedi il turno, poi fai l’animazione. Così un secondo clic o tasto non fa partire un altro attacco durante l’attesa. Il blocco verde «=» controlla se Turno contiene la parola «mio».
Per il messaggio: in «invia a tutti» apri il menu → Nuovo messaggio → scrivi turno avversario.
Prova: premi la bandiera e poi 1. I PS avversari diventano 85. Premendo ancora 1 non cambi nulla: manca ancora la risposta del prossimo passo.
3. Fai rispondere l’altro personaggio
quando ricevo [turno avversario v] se <(PS avversario) < (1)> allora passa allo sfondo [Hai vinto v] ferma [tutto v] fine attendi (1) secondi dire [Contrattacco!] per (1) secondi cambia [PS mio v] di (numero a caso tra (-16) e (-8)) se <(PS mio) < (1)> allora passa allo sfondo [Hai perso v] ferma [tutto v] fine porta [Turno v] a [mio]
«Quando ricevo» aspetta quel messaggio. Se l’avversario è già sconfitto, il gioco finisce prima del contrattacco. Altrimenti risponde e restituisce il turno.
Prova: ricomincia e premi 1 tante volte di seguito: durante la risposta non devi infliggere altri danni. Dopo la risposta puoi attaccare di nuovo. Alla vittoria premi la bandiera: entrambi i PS devono tornare a 100.
Resta sempre il turno dell’avversario
Controlla che i due messaggi si chiamino esattamente «turno avversario», che «quando ricevo» sia su Avversario e che l’ultimo blocco riporti Turno a «mio».
Voglio due giocatori invece del computer
Prima fai funzionare la versione sopra. Poi, su Avversario, sostituisci «quando ricevo turno avversario» con «quando si preme il tasto 2» e racchiudi tutta la risposta in «se Turno = avversario». Come primo blocco dentro il se metti «porta Turno a occupato», per bloccare pressioni ripetute. Alla fine resta «porta Turno a mio». Su Mio cambia il primo «porta Turno a avversario» in «porta Turno a occupato», togli l’invio del messaggio e, dopo il danno, controlla subito se PS avversario è minore di 1: in quel caso passa a Hai vinto e ferma tutto. Se la lotta continua, come ultimo blocco dell’attacco di Mio metti «porta Turno a avversario». Il tasto 2 deve essere libero: rimuovi l’eventuale attacco potente della guida. Prova che il secondo giocatore non possa agire per primo.
«Come faccio salire di livello il personaggio?»
Guadagni esperienza facendo qualcosa. Ogni 10 punti compri un nuovo livello; i punti avanzati restano.
Qui ogni gemma vale 3 esperienza. Parti dal livello 1 e dalla potenza 10. Ogni livello aggiunge 2 alla potenza. Sono regole di questo esempio: dopo averlo provato puoi cambiarle.
Prova prima di costruire
Livello 1Potenza 10Esperienza 0 / 10
Raccogli quattro gemme: cosa succederà ai 12 punti?
1. Prepara i contatori una volta sola
Crea Esperienza, Livello e Potenza, per tutti gli sprite. Metti questi blocchi sul tuo personaggio: lo sprite che controlli. Non metterli su ogni gemma o sui cloni.
quando si clicca su @greenFlag porta [Esperienza v] a (0) porta [Livello v] a (1) porta [Potenza v] a (10)
Se il personaggio ha già un avvio con la bandiera, inserisci le tre impostazioni all’inizio di quello script, prima di eventuali cicli.
2. Impara il meccanismo con una gemma da cliccare
Aggiungi uno sprite temporaneo chiamato Gemma prova. Cliccarlo simulerà una raccolta: per questa prova la gemma resta visibile e puoi cliccarla più volte.
quando si clicca questo sprite cambia [Esperienza v] di (3) ripeti fino a quando <(Esperienza) < (10)> cambia [Esperienza v] di (-10) cambia [Livello v] di (1) cambia [Potenza v] di (2) fine
«Ripeti fino a quando» è in Controllo. Inserisci il confronto verde Esperienza < 10 nel suo foro: significa «continua a comprare livelli finché hai almeno 10 punti». Quando ne rimangono meno di 10, il ciclo si ferma.
Prova: bandiera, poi 3 clic: esperienza 9 e livello 1. Al quarto clic: esperienza 2, livello 2 e potenza 12. Non hai perso i due punti avanzati!
Prova: cambia temporaneamente il premio da 3 a 25 e premi la bandiera. Un clic deve dare livello 3, esperienza 5 e potenza 14. Poi rimetti il premio a 3.
3. Porta il premio dentro il tuo gioco
Quando la prova funziona, sposta tutti i blocchi sotto «quando si clicca questo sprite» nel punto in cui il tuo gioco assegna i punti per una raccolta. L’evento deve essere contato una volta sola. Poi elimina Gemma prova.
- Arraffagemme: nello script della gemma, dentro il «se» del contatto, accanto all’aumento dei punti e prima che la gemma cambi posto.
- Mangia e cresci: quando mangi il cibo, prima che venga spostato.
- Tycoon: dopo il clic che assegna le monete. L’esperienza ha il proprio contatore: spendere monete non abbassa il livello.
4. Fai servire davvero il livello
Aumentare un numero non rende automaticamente più forte il personaggio. Se hai un combattimento, al posto del danno fisso −15 puoi usare l’ovale verde 0 − Potenza nel blocco che cambia i PS avversari. Con Potenza 12, il colpo toglie 12 PS.
In un gioco di raccolta puoi invece sbloccare un costume al livello 2: aggiungi il controllo subito dopo il ciclo dei livelli. Ricorda di ripristinare il costume iniziale alla bandiera.
Continuo a salire di livello anche senza raccogliere
Non mettere il premio dentro un «per sempre» da solo. Deve essere dentro l’evento di raccolta; l’oggetto deve spostarsi o sparire dopo aver assegnato il premio. Controlla anche di sottrarre 10 esperienza dentro il ciclo dei livelli.
Alla bandiera torno al livello 1: è giusto?
Sì: in questo esempio la bandiera inizia una partita nuova. Il salvataggio .sb3 conserva il progetto, ma il suo avvio reimposta i contatori. Per mantenere i livelli fra due incontri della stessa partita, usa un messaggio «nuovo incontro» che reimposta soltanto PS e Turno; non azzerare Esperienza e Livello. È una modifica successiva, da fare dopo che il primo incontro funziona.
«Perché perdo tutte le vite con un solo urto?»
«Per sempre» controlla il contatto tante volte al secondo. Dopo un danno aspetta che i due sprite si separino.
Questa versione usa un solo sprite ostacolo chiamato Pericolo, una variabile Vite per tutti gli sprite e lo sfondo Game over. È adatta, per esempio, a Corsa a corsie: scegli nel menu il nome reale dell’ostacolo.
Sostituisci il vecchio controllo che faceva perdere al primo contatto. Se lo lasci attivo, continuerà a fermare il gioco subito. Mantieni separati gli script che muovono personaggio e ostacolo, così continuano a funzionare anche durante l’attesa.
quando si clicca su @greenFlag
porta [Vite v] a (3)
per sempre
se <sta toccando (Pericolo v)?> allora
cambia [Vite v] di (-1)
se <(Vite) < (1)> allora
passa allo sfondo [Game over v]
ferma [tutto v]
fine
attendi fino a quando <non <sta toccando (Pericolo v)?>>
fine
fineIl blocco verde «non» rovescia la domanda: «non sta toccando Pericolo?» diventa vero quando si separano. Lo trovi in Operatori; il sensore azzurro «sta toccando» va dentro di lui.
Prova: parti con 3 vite. Rimani contro il pericolo: perdi una sola vita. Allontanati e toccalo di nuovo: ne perdi un’altra. Al terzo contatto compare Game over.
Nell’avvio del gioco ripristina anche lo sfondo di gioco e le posizioni, con personaggio e ostacolo separati. Controlla che una seconda partita riparta con 3 vite.
Il mio pericolo è il colore della lava, non uno sprite
Nella guida Il pavimento è lava il sensore è «sta toccando il colore». Usa quello in entrambi i punti al posto di «sta toccando Pericolo», scegliendo lo stesso colore col contagocce. Assicurati che il personaggio possa allontanarsi dalla lava.
Fermati sul primo blocco che sbaglia.
- Sono sullo sprite giusto? Leggi il nome sopra la figura e controlla la miniatura selezionata in Scratch.
- Quando parte? Bandiera, clic, tasto e messaggio sono eventi diversi. Premi quello previsto.
- Che valore vedo? Mostra la variabile sullo stage. Il turno cambia? L’esperienza sale di 3 o di 300? Trova il primo valore inatteso.
- Ci sono due script che fanno la stessa cosa? Se aggiungi la nuova versione senza togliere la vecchia, potrebbero partire entrambe.
Per chiedere aiuto: «Mi aspettavo…, invece succede…, ho già controllato…». Mostra al docente lo sprite e il gruppo di blocchi coinvolto.