L’informatica e i giochi Introduzione alla programmazione con l’uso di Scratch Nicoletta D’Alpaos
Per la scuola secondaria di primo grado e per il biennio del secondo grado
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 1
Indice 1 L’informatica e i giochi 1.0 Introduzione 1.1 Che cos’è l’informatica 1.2 Che cos’è un algoritmo 1.3 Perché i giochi
…………………………………… …………………………………… …………………………………… ……………………………………
4 4 5 6
2 Scratch 2.0 Introduzione …………………………………… 7 2.1 Scratch …………………………………… 7 2.2 L’installazione del prodotto ………………………………… 8 2.3 Uso consentito …………………………………… 8 2.4 Panoramica dell’ambiente …………………………………… 8 2.5 La pagina Web …………………………………… 10 3 Iniziamo a lavorare 3.0 Introduzione …………………………………… 3.1 Creare l’ambiente …………………………………… 3.2 Creare il pallone …………………………………… 3.3 Il movimento …………………………………… 3.4 Un programma un po’ più complesso .…………………… 3.5 Il moto perpetuo …………………………………… 3.6 Riflessioni …………………………………… 3.7 Un nuovo progetto …………………………………… 3.8 Riflessioni …………………………………… 3.9 Conclusioni ……………………………………
11 11 12 13 14 15 16 17 20 22
4 Primi giochi 4.0 Introduzione …………………………………… 4.1 Creare l’ambiente …………………………………… 4.2 Entra la protagonista! …………………………………… 4.3 Il movimento e l’interazione con l’ambiente ..…………… 4.4 Il labirinto (versione 1) …………………………………… 4.5 Le regole del labirinto …………………………………… 4.6 Il labirinto (versione 2) ..………………………………… 4.7 Riflessioni ……………………………………
23 23 24 26 29 31 32 33
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 2
5 Spara e fuggi! 5.0 Introduzione …………………………………… 5.1 Raccolta di ciliegie …………………………………… 5.1.1 Gli oggetti …………………………………… 5.1.2 Le variabili …………………………………… 5.1.3 Lo stage …………………………………… 5.1.4 Lo squalo …………………………………… 5.1.5 Il pipistrello …………………………………… 5.1.6 La ciliegia …………………………………… 5.1.7 Riflessioni …………………………………… 5.2 Il percorso con fantasmi ………………………………… 5.2.1 Gli oggetti …………………………………… 5.2.2 Il fantasma bianco …………………………………… 5.2.2 I fantasmi neri …………………………………… 5.3 Il suono …………………………………… 5.4 Riflessioni ……………………………………
L’informatica e i giochi
35 35 36 36 37 38 39 39 40 41 41 41 42 43 43
Nicoletta D’Alpaos
Pag. 3
1. L’informatica e i giochi 1.0 Introduzione Obiettivo :
Introdurre le basi del ragionamento algoritmico attraverso il gioco.
1.1 Che cos’è l’informatica Nel giugno del 1890, negli Stati Uniti fu condotto un censimento che riguardò la quasi totalità della popolazione. Per velocizzare le operazioni, selezionando e classificando le informazioni, fu utilizzata una macchina inventata per tale scopo dall'ingegnere americano Herman Hollerith che si basava sull'uso di schede perforate. Grazie a questa invenzione, i dati furono rielaborati nel giro di un anno mentre per il precedente censimento del 1880 ce ne erano voluti otto. La macchina di Hollerith può essere dunque considerata È il primo strumento in grado di manipolare in modo automatico grandi moli di informazioni.
INFORMATICA = INFORMAZIONE + AUTOMATICA L’informatica può essere quindi considerata come l'insieme di processi che permettono di elaborare e trasformare delle informazioni in ingresso (INPUT) dando luogo a nuove informazioni in uscita (OUTPUT). Per ottenere questo risultato bisogna mettere assieme sia strumenti “fisici” (HARDWARE) sia “istruzioni” sui comportamenti da adottare (SOFTWARE). In questa dispensa ci occuperemo del software.
Il calcolatore è straordinariamente veloce, accurato e stupido. L'uomo è incredibilmente lento, impreciso e creativo. L'insieme dei due costituisce una forza incalcolabile. (Albert Einstein)
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 4
1.2 Che cos’è un algoritmo Un aneddoto sulla vita del matematico Gauss (1777-1855) racconta di quando, all’età di nove anni, si ritrovò ad affrontare un problema di matematica proposto da uno dei suoi insegnanti che cercava di tenere occupata la sua turbolenta classe. L'esercizio consisteva in estenuanti somme di numeri da 1 a 100. Gauss, bambino prodigio, scoprì rapidamente che per risolvere il problema bastava moltiplicare l’ultimo numero per il successivo e dividere per due:
L'informatica non riguarda i computer più di quanto l'astronomia riguardi i telescopi. (Edsger Wybe Dijkstra)
1 + 2 + 3 + 4 + 5 = (5 * 6) / 2 = 15 Trovare una “regola” per risolvere un problema equivale a definire un algoritmo. Il computer è una macchina in grado di eseguire rapidamente istruzioni chiare, precise e prive di ambiguità. Le istruzioni vengono fornite dall’uomo, ovvero tradotte in un codice da un programmatore. Questa attività, tuttavia, non è così facile o banale: una soluzione, pur corretta, potrebbe essere irrealizzabile o realizzabile con tempi talmente lunghi da renderla praticamente inutile. Da qui deriva l'importanza degli algoritmi: procedimenti “da eseguire in un tempo finito”, “non ambigui” e costituiti da passi elementari per risolvere un determinato problema. Il termine deriva dalla latinizzazione del nome di al-Khwarizmi (780-850 circa), matematico persiano che per primo introdusse il concetto.
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 5
1.3 Perché i giochi Giocare significa mettere in gioco diverse abilità: strategia, riflessi, pianificazione, fantasia e razionalità. Abilità che servono anche quando si vuole inventare un gioco da zero. Come primo approccio all'informatica, il gioco è quindi uno strumento incredibilmente utile perché riesce a impegnare sia il fisico che la mente con il vantaggio di divertire. Lo strumento che useremo qui per iniziare a giocare si chiama SCRATCH.
scratch.mit.edu/
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 6
2. Scratch 2.0 Introduzione Obiettivo :
Conoscere un ambiente di sviluppo che permetta di realizzare velocemente progetti multimediali.
Strumento :
Scratch.
2.1 Scratch Il temine scratch deriva da scratching, una delle tecniche usate dai disc jockey per "suonare" con il giradischi. Così come il dj manipola i suoni del disco facendo ruotare i dischi, così il programmatore scratch manipola e mescola vari elementi multimediali (animazioni, suoni, grafica,…) per creare il proprio programma.
Si tratta di un progetto freeware, che può quindi essere scaricato e usato liberamente, ideato e creato da un gruppo di ricercatori del “The Lifelong Kindergarten group” del MIT Media Lab con con lo scopo di favorire lo studio delle tecnologie informatiche già a partire dagli 8 anni1. Una volta raggiunta la giusta confidenza con lo strumento, si comincia a comprendere le potenzialità del software, in particolare per la creazione di videogiochi. Gli esercizi proposti nei capitoli successivi devono solo essere un punto di partenza per introdurre la tecnica, dopo bisogna dare sfogo alla propria fantasia2.
1
"Computer programming has been traditionally seen as something that is beyond most people - it's only for a special group with technical expertise and experience," said Professor Mitchel Resnick, one of the researchers at the Lifelong Kindergarten group at MIT. "We have developed Scratch as a new type of programming language, which is much more accessible." 2
Rethinking Learning in the Digital Age : http://www.media.mit.edu/~mres/papers/wef.pdf Interviste a Seymour Papert http://www.mediamente.rai.it/biblioteca/biblio.asp?id=259&tab=bio
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 7
2.2 L’installazione del prodotto Si scarica dal sito http://scratch.mit.edu/ entrando nell’area di download. L’installazione per Windows (esiste anche una versione per Mac OSX) non richiede particolari interventi: se non si cambiano le impostazioni predefinite, viene creata una cartella di nome Scratch all’interno della cartella Programmi. Non vengono toccate particolari aree di sistema (registri o altro), di modo che, se si dove eliminare, basta cancellare la cartella.
2.3 Uso consentito Quando il progetto Scratch è finito, la soddisfazione più bella è data dalla possibilità di inserirlo in una pagina web e vederne l’esecuzione al di fuori dell’ambiente di sviluppo. Il messaggio che sta alla base del progetto è infatti la condivisione del lavoro.
2.4 Panoramica dell’ambiente Il programma che si vuole realizzare si costruisce mettendo assieme dei blocchi già pronti come in un gioco di costruzioni, mattoncino dopo mattoncino. Alla
partenza
scratch
si
presenta come in figura 2.1
[fig.2.1]
Si riconoscono più aree: • • • •
L’area con i possibile blocchi utilizzabili [fig. 2.2] L’area che conterrà il codice che si vuol generare [fig. 2.3] L’area dove “girerà” il programma [fig. 2.4] I personaggi o le cose che animeranno il programma [fig. 2.5]
Research has shown that many of children’s best learning experiences come when they are engaged not simply in interacting with materials but in designing, creating, and inventing with them (Papert, 1980; Resnick, 2002).
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 8
[fig. 2.2]
[fig. 2.3]
[fig. 2.4]
[fig. 2.5]
Il significato e l’utilizzo di queste aree si apprenderanno nel capitolo successivo.
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 9
2.5 La pagina WEB Quando il progetto Scratch è pronto, può essere condiviso con altri utenti caricandolo sul sito del MIT di Scratch. Si condivide il proprio lavoro con lo stesso spirito con cui si condividono i video su YouTube o le foto su Flickr. Oppure si può inserire il progetto in una pagina web personale come Facebook.
http://web.media.mit.edu/~mres/papers/Learning-Leading-final.pdf “creative thinking spiral.” In this process, people imagine what they want to do, create a project based on their ideas, play with their creations, share their ideas and creations with others, and reflect on their experiences—all of which leads them to imagine new ideas and new projects. As students go through this process, over and over, they learn to develop their own ideas, try them out, test the boundaries, experiment with alternatives, get input from others, and generate new ideas based on their experiences.
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 10
3. Iniziamo a lavorare 3.0 Introduzione Obiettivo :
Capire la struttura di un programma nei suoi blocchi fondamentali: sequenza, selezione, ripetizione.
Strumento :
Vengono proposte due semplici animazioni:
- un pallone che rotola su un piano. - una chiocciola che striscia in un prato.
3.1 Creare l’ambiente Per prima cosa bisogna disegnare lo sfondo per il pallone. Partiamo da uno spazio di lavoro vuoto: questo si può realizzare cancellando il gattino che viene proposto all’apertura del programma. Per fare questo:
-clickSX-
3
e scegliere
cancella [Fig.3-1] oppure selezionare la forbice.
Fig.3-1
Scegliamo
quindi
“sfondi”
e
progettiamo uno sfondo [Fig.3-2]
Fig.3-2 3
clicSX
verrà utilizzato per riferirsi al cliccare con il tasto sinistro del mouse sull’oggetto; analogo significato per clicDX
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 11
Si va quindi in “Modifica” [Fig.3-3] e si crea uno sfondo.
Fig.3-3
Basterà per il nostro scopo una semplice linea orizzontale [Fig.3-4] Fig. 3-4
È buona norma, quando si raggiunge una situazione stabile del proprio progetto, salvare sempre il proprio lavoro [Fig.3-5] . Questo perché, in caso di errore o di ripensamenti sulle ultime modifiche apportate, non si debba ripartire da zero.
Fig.3-5
3.2 Creare il pallone Disegniamo ora, usando la tecnica appena vista [Fig.3-6], il pallone [Fig.3-7]:
Fig.3-6
L’informatica e i giochi
Nicoletta D’Alpaos
Fig.3-7
Pag. 12
3.3 Il movimento Il pallone è ora inserito al centro dello stage. Si può, eventualmente, spostare più a sinistra con
e trascinarlo
nella posizione desiderata [Fig.3-8]. Il movimento che vogliamo generare è uno spostamento verso destra di una serie successiva di passi; per esempio Fig 3-8
di 200 passi.
Basterà selezionare dalle azioni “Movimento” (in blu) l’azione “muovi 10 passi”, trascinandola nello script dello sprite14. Poi, volendo fare uno spostamento di 200 passi, si modificherà il valore “10” con “200” [Fig.3.9].
Fig. 3.9
Per vedere il risultato dell’azione bisogna fare un rapido doppio click
sull’azione “muovi 200 passi”
appena inserita [Fig.3-10]. Per ritornare alla posizione iniziale si potrà trascinare indietro il pallone oppure, se si vuole tornare all’esatta
Fig.3-10
posizione di partenza, modificare l’azione in “muovi -200 passi” ed eseguire (come prima doppio click
sull’azione).
Il valore negativo riporterà il pallone al punto di partenza. 4
Il termine inglese sprite (folletto, spiritello) è utilizzato per dare un nome generico agli oggetti della scena. Per migliorare la comprensione si suggerisce di modificare questo nome con un altro più significativo a rappresentare l’elemento.
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 13
3.4 Un programma un po’ più complesso … Il programma che sposta il pallone è molto semplice perché è composto da un’unica istruzione (anche se si tratta di un’istruzione formata a sua volta da altre istruzioni, cioè ripetere 200 volte un passo). Cosa succede se ripetiamo più volte “muovi 200 passi”? Ad un certo punto il pallone cercherà di uscire dallo stage sfondo [Fig 3.11].
Fig 3-11
Nel mondo reale, toccando il bordo un pallone rimbalzerebbe. Possiamo simulare un'azione analoga anche nel nostro programma aggiungendo il movimento “rimbalza se tocca il fondo” [Fig 3.12]
Fig.3-12
Proviamo ora a muovere più volte il pallone cliccando sulle azioni blu. Il risultato è uno scomodo movimento a scatti.
Cerchiamo di migliorarlo: per prima cosa diminuiamo il numero di passi che devono essere fatti prima di andare a vedere se è stato raggiunto il fondo. agganciamo poi, in testa al blocco delle istruzioni, il controllo che attiva tutto il codice quando si preme la bandierina [Fig.3-13]. muoviamo infine la pallina cliccando più volte la bandierina [Fig. 3-14].
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 14
Fig.3-13
Fig.3-14
3.5 Il moto perpetuo Vogliamo ora che, una volta avviata, la palla si muova da sola: si vuole cioè che il gruppo di azioni si ripeta “per sempre”. Aggiungiamo quindi il controllo “per sempre” [Fig.3-15] in modo da racchiudere le istruzioni che ci interessano [Fig.3-16].
Fig.3-16 Fig.3-15
Il risultato è che il pallone impazzisce, muovendosi a destra e sinistra a tutta velocità. Per interrompere il moto bisogna cliccare sul segnale rosso di stop posto a fianco della bandiera [Fig.3-17].
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 15
Fig.3.18
Fig.3.17
Per rallentare aggiungiamo un nuovo controllo “attendi 1 secondi”. Magari abbassiamo a mezzo secondo il tempo di attesa [Fig.3-18], perché ora il movimento è molto lento, e riproviamo.
3.6 Riflessioni Abbiamo realizzato il nostro primo programma. Assomiglia ad una costruzione realizzata con i mattoncini della Lego®, ma è un programma che non ha nulla da invidiare ad altri progetti considerati più seri. Consideriamo i vari blocchi:
È l’istruzione di partenza: qui inizia il nostro programma.
Identifica un “ciclo”: racchiude cioè una serie di istruzioni che devono essere ripetute fino a che non si verifica una condizione. Nel nostro caso le istruzioni si ripetono “per sempre” durante il periodo di vita del programma.
Sono le istruzioni che si ripetono in “sequenza”, cioè una dopo l’altra.
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 16
3.7 Un nuovo progetto Con “muovi -10 passi” (numero di passi negativi), la palla torna indietro. Eppure, con l’ultimo esercizio, abbiamo visto che comunque il percorso si alterna da sinistra a destra e viceversa. Per quale motivo? La figura rotonda della palla non ci ha permesso di capire che il rimbalzo ha provocato un ribaltamento della figura. Nel prossimo esercizio questa caratteristica verrà messa in evidenza: questa volta faremo muovere una chiocciola in un prato. Come prima cosa apriamo un nuovo lavoro e inseriamo uno sfondo.
Rinominiamo lo sfondo “prato” e clicchiamo su "Modifica" [Fig. 3-19] per creare il teatro dell’animazione [Fig.3-20].
Fig.3-19
Fig.3-20
Salviamo il lavoro fin qui fatto5 cliccando sul simbolo del dischetto. Creiamo il folletto (sprite) che, nel nostro caso, è la chiocciola [Fig.3-21]. Anche per la sua creazione valgono le indicazioni descritte nel precedente capitolo [Fig.3-22].
Fig.3- 22
Fig.3- 21
5
È importante salvare periodicamente i risultati raggiunti. In caso di errore è così è possibile non ricominciare il lavoro dall’inizio.
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 17
La chiocciola è ora inserita al centro dello stage. Si può, eventualmente, spostarla più a sinistra trascinandola nella posizione desiderata [Fig.3-23]. Fig.3-23
Come per la palla impostiamo il movimento a 10 passi, il rimbalzo sul bordo e completiamo con la partenza dalla bandierina [Fig.3-24]
Fig.3-24
Rimbalzando sul bordo, la chiocciola si capovolge continuando quindi, nel suo mondo capovolto, ad andare sempre avanti (verso valori positivi) [Fig. 3-25]. Fig.3-25
Per evitare il rovesciamento è sufficiente modificare l’opzione di rotazione come in Figura 3-26.
Fig.3-26
E se si volessero modificare i colori della chiocciola ogni volta che questa cambia direzione? Creiamo delle sorelle allo sprite: non occorre ridisegnare le chiocciole, basterà farne una o più copie [Fig.3.27] e ricolorarle.
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 18
Fig.3-27
Fig.3-28
Ora la chiocciola può avere tre costumi [Fig.3-28] e basterà “cambiare l’abito” ogni volta che si scontra contro il bordo. Più in dettaglio, le azioni principali da considerare sono: 1) accorgersi che la chiocciola “sta toccando” il “bordo”; 2) modificare l’aspetto della chiocciola. Per ottenere questo risultato bisogna modificare il codice inserendo un blocco di controllo “se” come in [Fig.3-29].
Fig.3-29
Il “se” darà un risultato positivo quando lo sprite sta per toccare qualcosa [Fig.3-30], nel nostro caso proprio il bordo [Fig.3-31].
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 19
Fig.3-30
Fig.3-31
Il codice finale, aggiungendo quanto visto nell’esercizio precedente, sarà [Fig.3-32]:
Fig.3-32
3.8 Riflessioni Nell’ultima parte di codice realizzato sono stati introdotti dei concetti nuovi. I blocchi elementari con cui costruire un programma sono: Sequenza Ciclo Selezione I primi due erano già presenti nel precedente codice. Anche la selezione era presente (“rimbalza se tocca il fondo”), ma non era così evidente, in quanto assorbito all’interno di un’unica istruzione. L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 20
Ora il test è più evidente, la chiocciola cambia colore (cambiando costume) se si verifica l’evento “tocca il bordo”:
SE (condizione)…. ALLORA FAI (azione) Consideriamo i vari blocchi:
Selezione: bisogna inserire nello spazio dopo la parola “se” la condizione e scrivere all’interno le azioni da compiere.
Sensore: è l’evento che viene controllato. Ci sono due possibilità: toccare il bordo oppure toccare il puntatore del mouse (verrà utilizzato più avanti).
Viene quindi scelto l'elemento da toccare nel campo d’azione. Aspetto : è l’azione da eseguire sotto condizione. Ci sono tre costumi nel nostro caso (colori diversi) che si alternano. L’azione di rimbalzo è stata spostata all’interno del blocco delle azioni condizionate per non dover fare due volte il test.
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 21
3.9 Conclusioni Guardiamo ora il risultato finale dei due esercizi a schermo intero [Fig.3-33].
Fig.3-33
Esercizi proposti: 1. Far rotolare un pallone colorato a spicchi lungo un piano inclinato. Muovendosi il pallone deve dare l’idea del movimento Suggerimento: alla partenza porre la direzione del movimento parallela al piano, per lo scopo utilizzare:
Il senso del movimento è invece dato dal cambio di costume. 2. Modifica il precedente codice in modo che un secondo pallone parta pochi decimi di secondo dopo il primo. Suggerimento: usare il blocco di attesa per ritardare la seconda partenza
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 22
4. Primi giochi 4.0 Introduzione Obiettivo :
Capire la programmazione ad eventi.
Strumento :
Vengono proposti due semplici giochi:
- aiutare una formica a raggiungere i frutti di un albero; - spostare una palla in un labirinto.
4.1 Creare l’ambiente Come visto nel capitolo 3, si parte da uno spazio di lavoro vuoto per creare l’ambiente che circonderà la formica. Questa è una proposta [Fig.4-1] :
Fig 4-1
La formichina partirà dal prato, dovrà arrampicarsi sull’albero e raggiungere almeno un frutto. Attenzione però che dovrà rimanere sul prato, sul tronco o sulla chioma dell’albero: se uscirà, cadrà e tornerà al punto di partenza.. Salviamo il lavoro fin qui fatto L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 23
4.2 Entra la protagonista! Questa volta utilizziamo degli sprite già pronti che si possono prendere selezionando “Scegli nuovo sprite da file” [Fig.4-2] Fig.4- 2
Al passo successivo verrà chiesto dove trovare il personaggio [Fig.4-3]. In “costumi” ci sono le figure già
pronte,
cartelle
nelle
possono
altre esserci
quelle create da voi con altre formica
applicazioni. si
trova
La nella
cartella “Animals”.
Fig.4- 3
Scegliamo la “crawling-ant”6, caratterizzata da 5 script7 già pronti
6
Attenzione, esistono due formiche uguali ma con comportamenti diversi, la “Crawling-ant” e la “Running ant”. Il codice della “Running Ant” verrà preso nell’esempio seguente. Per un “baco” (errore) del programma i due nomi sono scambiati. 7 Lo script è un programma molto semplice o una sequenza di istruzioni che viene interpretata durante la sua esecuzione. (La “Running Ant” è, invece, caratterizzata da 4 script)
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 24
Fig.4- 4
Alla crawling ant sono associati cinque gruppi di codice [Fig.4-5] e un costume [Fig.4-6].
Fig.4- 5
Fig.4- 6
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 25
La situazione si presenta adesso come nella fig.4-7. Prima di cominciare a lavorare sul codice, notiamo che abbiamo inserito un “formicone” più che una “formichina”. Le dimensioni un po’ ingombranti potrebbero ostacolare la marcia. Fig.4-7
Utilizzando quindi gli appositi pulsanti che permettono
l’ingrandimento e la riduzione
e riduciamo la
formica alle dimensioni desiderate [Fig.4-8].
Adesso che la grafica è completa possiamo cominciare a lavorare sul codice.
Fig.4.8
4.3 Il movimento e l’interazione con l’ambiente Guardiamo il codice che viene fornito [Fig.4.5] e cominciamo ad analizzarlo. Osserviamo che ci sono quattro gruppi di codice, abbinati alle frecce direzionali
della tastiera
che permettono la rotazione della formica [Fig.4.9].
Fig.4.9
C’è poi il blocco
“quando si clicca sulla bandiera” che attiva un ciclo infinito di passi [Fig.4-10]. Fig.4-10
Questo fa si che la formica continui a muoversi autonomamente nello spazio. La pressione di una freccia provoca solo il cambiamento della direzione.
Aggiungiamo ora il codice nuovo.
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 26
Vogliamo che la formica “cada” se non è aggrappata a qualcosa.
Come
facciamo
a
riconoscere
questa
situazione? Poiché lo sfondo, il cielo, è azzurro Fig.4-11 possiamo suggerire al programma che, se la formica tocca l'azzurro allora non è più ancorata a nulla [Fig.4-11]. Il blocco aggiunto nella condizione “se” appartiene al gruppo dei sensori. Per essere sicuri che il colore imposto nel comando sia effettivamente quello usato per il cielo, possiamo usare il contagocce. Per attivarlo basterà passare con il mouse sopra al quadratino del colore e la freccia del puntatore si trasformerà automaticamente
Cliccando ora
.
in un punto qualsiasi del cielo, si otterrà l'esatta tonalità [Fig.4.12].
Fig.4-12
Dobbiamo ora decidere dove vogliamo che vada la formica nel caso in cui scivoli. Potremmo per esempio decidere che la posizione finale sia sempre in basso a sinistra. Per imporre questa condizione, consideriamo che il nostro spazio è descrivibile tramite un sistema di assi cartesiani che ha l'origine nel centro dello schermo [Fig. 4.13].
Fig 4-13
Per calcolare le coordinate del punto desiderato, quindi, posizioniamo il cursore sopra la posizione voluta e leggiamo i valori in basso a destra [Fig.4-14].
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 27
Fig.4-14
Riportiamo quindi l'informazione nel nostro blocco di programma [Fig.4-15]:
Fig.4-15
Lo scivolamento avviene abbastanza lentamente (1 secondo). Per rallentare anche il movimento della formica si può mettere un’attesa di un decimo di secondo ogni due passi. Tale valore, ovviamente, può essere cambiato in base all'abilità del giocatore [Fig.4-16]. Fig.4-16
Abbiamo stabilito cosa succede nel caso in cui il giocatore sbagli. Il codice da scrivere in caso di vittoria però è molto simile. Lo scopo del gioco è infatti raggiungere la frutta rossa sull'albero. Anche in questo caso, quindi, è importante sfruttare i colori. Usando un blocco di codice analogo a quello appena visto, possiamo dunque decidere cosa succede nel caso in cui la formica tocchi il frutto. Per esempio, viene emesso un Fig.4-17
suono e appare il fumetto "Gnam gnam!" per 2 secondi [Fig. 4.17].
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 28
Fig.4-18
4.4 Il labirinto (versione 1) Anche questo esercizio si basa sull'idea di spostare un oggetto verso un obiettivo. Nello specifico, una palla deve attraversare un labirinto.
Lo
sfondo
è
qui
rappresentato da una strada con ostacoli e l’obiettivo è raggiungere la zona rossa [Fig.4-19].
Fig.4-19
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 29
Costruiamo lo sprite (la palla che deve attraversare il labirinto) e per dare la sensazione del movimento, disegnamo due costumi per farlo diventare simile a una faccia con la bocca aperta/ chiusa [Fig.4-20].
Alternando queste due figure si avrà un effetto “cartone animato”. Creiamo la prima figura e poi copiamola e modifichiamola per creare la seconda con le stesse dimensioni. L’effetto bocca aperta si può ottenere disegnando un triangolo dello stesso colore dello sfondo.
Fig.4-20
Passiamo al codice.
Lo sprite avrà uno script analogo a quello iniziale della formica visto nell'esempio precedente.
( Facciamo una prima modifica togliendo il ciclo infinito “muovi 2 passi”
) in
8
modo da controllare il movimento premendo le frecce direzionali . A questo punto spostiamo il blocco che fa avanzare il nostro sprite sotto quello delle frecce e impostiamo il cambio di costume ogni dieci passi per avere un gioco meno frenetico Il codice sarà dunque come nella Figura 4-21.
8
Si può utilizzare il codice della “Running Ant” sopra menzionato
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 30
Fig.4-21
4.5 Le regole del labirinto (versione 1) Inseriamo delle regole nel gioco [Fig.4-22]:
vogliamo che all’inizio la palla si trovi in una certa posizione dello schermo; vogliamo che, se tocca il bordo (bianco) del labirinto, diventi un fantasma; vogliamo che continui a muoversi, cambiando d’abito, negli altri casi.
Il codice così ottenuto è semplice ma, se vogliamo utilizzare
una
definizione
da
informatici,
“non
elegante”. Questo perché bisogna ripetere più volte la stessa porzione di codice.
Fig.4-22
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 31
4.6 Il labirinto (versione 2) Proviamo una nuova versione: questa volta lo sfondo sarà solo un rettangolo nero.
La figura dello sprite palla è come la precedente; aggiungiamo lo sprite con il disegno
del
labirinto
e
lo
sprite
dell’arrivo [Fig.4-23].
Fig.4-23
Vediamo ora i codici assieme [Fig.4-24].
Fig.4-24
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 32
Codice dell’arrivo: Si attiva alla partenza ed aspetta il tocco dalla palla. Appena questa condizione si verifica, lo sprite cambia di colore e manda il segnale di vittoria [Fig.4-25]. Fig.4-25
Codice del labirinto: Si attiva alla partenza ed aspetta. Se il margine del labirinto viene toccato dalla palla, lo sprite manda un segnale (pop) a tutti. Si potrebbe anche inserire un sonoro.
Codice della palla: Le frecce
permettono il cambio di direzione. La ricezione del
segnale dal labirinto (“quando ricevo pop”) porta alla fine del gioco (lo sprite si accorge del “rumore” generato dallo sbattere contro il labirinto, si trasforma in fantasma, saluta tutti e scompare [Fig.4-26]).
Fig.4-26
4.7 Riflessioni Il tipo di programmazione sviluppato nei giochi che abbiamo finora visto si chiama programmazione a eventi, ovvero il codice si attiva solo quando si verifica un certo evento. Questo può essere lo spostamento del mouse, la pressione di un tasto o la segnalazione che qualcosa è cambiato. L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 33
Consideriamo i vari blocchi:
Sotto questo blocco si possono inserire le operazione che caratterizzano la partenza del programma (fase di inizializzazione).
Premendo un particolare tasto (in questo caso la freccia direzionale in su) si attivano le operazioni che seguono questo comando.
Questa volta a richiedere l’attenzione non è un evento esterno (mouse o tastiera) ma un altro oggetto del nostro programma
che
vuole
comunicare
una
particolare
situazione. Nel nostro caso la palla ha battuto contro la parete del labirinto
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 34
5. Spara e fuggi! 5.0 Introduzione Obiettivo :
Esercizi per consolidare i concetti legati alla programmazione per eventi.
Strumento :
Vengono proposti due semplici giochi di tipo “spara e fuggi”
5.1 Raccolta di ciliegie Gioco di abilità che consiste nel raccogliere ciliegie ed evitare di essere preso. La storia: Uno squalo si aggira sul fondo del mare, muovendosi da destra a sinistra e viceversa, con lo scopo di proteggere delle ciliegie cadute nell’acqua [Fig. 5-1]. Un pipistrello tenta di raccogliere le ciliegie e nel contempo cerca di non farsi prendere dallo squalo. Se riesce a prendere tutti i frutti, procede nel gioco. Nel livello successivo deve compiere la stessa missione solo che, essendo calata la notte è più difficile distinguerlo dallo sfondo! [Fig. 5-2] Fig.5-1
Esaurite anche le ciliegie del secondo livello, evitando lo squalo, il gioco termina [Fig. 5-3].
Fig.5-2
L’informatica e i giochi
Fig.5-3
Nicoletta D’Alpaos
Pag. 35
5.1.1 Gli oggetti Gli interpreti del gioco sono [Fig. 5-4]: • Lo squalo • Il pipistrello • Le ciliegie Lo squalo si muove autonomamente avanti e indietro come già realizzato con il codice della chiocciola del capitolo 3. Anche il pipistrello ha un movimento continuo, tuttavia, premendo
Fig.5-4
opportunamente le frecce , è possibile ottenere un cambiamento di direzione (come con la formica del capitolo 4). Le ciliegie devono sparire quando vengono toccate dal pipistrello.
5.1.2 Le variabili La possibilità di avanzare nel gioco è data dal numero di ciliegie che spariscono, a meno che, ovviamente, il pipistrello non sia, a sua volta, toccato dallo squalo. È quindi necessario contare i frutti presi. Fig.5-5 Per fare questo si utilizza una variabile, ovvero un contenitore in cui memorizzare il valore raggiunto al momento. Nel nostro caso chiameremo la variabile “prese”, il valore iniziale sarà posto a zero e verrà aumentato di uno ad ogni sparizione di ciliegia [Fig. 5-5].
Per inserire una variabile basta definire “nuova variabile” e assegnarle un nome [Fig. 5-6] . Spuntando la casellina a fianco della si può vedere in tempo reale il valore durante il gioco. Per la scrittura del nostro gioco sono a disposizione due interessanti blocchi: • “porta prese a zero” • “cambia prese di uno” Il primo verrà inserito nello stage ed eseguito ad inizio gioco, il secondo sarà condizionato dall’evento “presa la ciliegia”.
Fig.5-6
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 36
5.1.3 Lo stage Lo stage è composto da tre sfondi che corrispondono ai due livelli del gioco e dal messaggio di fine per vittoria. Questa volta anche lo stage ha del codice perché lo sfondo cambia in base al valore contenuto nella variabile "prese". [Fig. 5-7 e 5-8]
Fig.5-7
Fig.5-8
Notiamo i blocchi: • “invia a tutti” che notifica a tutti gli elementi del gioco che è successo qualcosa e che quindi devono valutare se cambiare il loro comportamento; • “attendi fino a quando” che sospende l’esecuzione del codice fino a quando non si verifica l’evento dichiarato di seguito. In questo caso che la variabile “prese” abbia raggiunto un certo valore. La condizione appena inserita è un confronto che può avere esito positivo o esito negativo; nel nostro caso il confronto avviene fra il contenuto della variabile “prese” ed i numeri 8 e 16, valori scelti per rappresentare il totale delle ciliegie necessarie per passare dal livello 1 (il giorno) al livello 2 (la notte) e dal livello 2 alla fine.
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 37
La composizione di un blocco per il confronto è un po’ laboriosa: bisogna utilizzare la sezione “operatori” per trovare l’operatore necessario (in questo caso l’uguale per vedere se è stato raggiunto un numero sufficiente di ciliegie prese) e trascinare o scrivere i fattori interessati negli spazi vuoti [Fig. 5-9].
Fig.5-9
5.1.4 Lo squalo Lo sprite che rappresenta lo squalo è fornito da Scratch nella cartella “Animals” [Fig. 5-10].
Fig.5-10
Il codice prevede un ciclo infinito di passi in direzione destra-sinistra e viceversa con una pausa di 0,02 secondi [Fig. 5-11]. A seconda del valore impostato nel tempo di attesa il gioco diventa più o meno veloce e quindi varia la difficoltà.
Fig.5-11
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 38
5.1.5 Il pipistrello Anche lo sprite del pipistrello è fornito da Scratch [Fig5-12]. Fig.5-12
Nel blocco principale si prevede per prima cosa la comparsa dello sprite (azione “mostra”): in una precedente sessione del gioco infatti il pipistrello potrebbe essere sparito perché divorato dallo squalo (azione “nascondi”). Il movimento dello sprite è regolato dai tasti freccia: a seconda del tasto di direzione premuto, il pipistrello volerà verso l’alto, verso il basso, verso destra o verso sinistra [Fig. 5-13].
Se vogliamo che al termine del gioco si fermi anche lo squalo, possiamo modificare la condizione “se” inserendo “ferma tutto” che interrompe l’esecuzione del codice [Fig. 5-14].
Fig.5-14
Fig.5-13
5.1.6 La ciliegia La figura che rappresenta la ciliegia è da disegnare [Fig 5-15] Fig.5-15
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 39
Stabiliamo che ci siano otto ciliegie che scompaiono quando vengono toccate dal pipistrello incrementando il valore di “prese” [Fig. 5-16]. Lo stesso procedimento avviene quando si passa al secondo livello, anche se questa volta le ciliegie da recuperare sono 16. Il riconoscere il passaggio al livello successivo è gestito dallo stage. Nota: lo stage non è solo un puro sfondo ma può prendere parte attiva al progetto se dotato di codice.
Fig.5-16
e adesso bisogna giocare per verificare che non ci siano errori o per trovare nuove idee per migliorare !!
5.1.7 Riflessioni Questo gioco si compone di tanti piccoli programmi (in informatica si chiamano thread) che lavorano “quasi” in contemporanea, mandandosi messaggi di sincronizzazione uno con l’altro in modo da modificare, eventualmente, il flusso delle istruzioni.
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 40
5.2 Il percorso con fantasmi In questo nuovo gioco, l'obiettivo è far raggiungere al fantasma bianco la linea blu posta in basso allo schermo [Fig 5-17]. Un’alternativa potrebbe essere rappresentata da una porta che funge da ingresso al livello superiore. La porta stessa potrebbe avere comportamenti non prevedibili, come il muoversi o apparire e scomparire improvvisamente. Lo stage, che qui è di colore uniforme potrebbe essere arricchito per esempio con muri non attraversabili. Fig.5-17
5.2.1 Gli oggetti I personaggi sono [Fig.5-18]: • Il fantasma bianco • I fantasmi neri I fantasmi neri si aggirano nello spazio con velocità e traiettorie diverse; il fantasma bianco, invece segue il mouse. Tutti gli sprite utilizzati sono stati presi dalla cartella dei personaggi “Fantasy” di Scratch.
Fig.5-18
5.2.2 Il fantasma bianco Alla partenza il fantasma bianco si pone in un punto sicuro lontano dal traguardo[Fig.5-19] e durante il gioco segue sempre il movimento del mouse: “vai dove …”. Fig.5-19
In modo analogo a quanto visto nel gioco della formica, il fantasma si accorge di essere arrivato al traguardo quando tocca il colore, avvisando quindi il giocatore che ha vinto [Fig.5-20].
Fig.5-20
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 41
Se invece il fantasma nero raggiunge prima il fantasma bianco, il giocatore perde [Fig.5-21]. Il codice che controlla il contatto fra gli sprite è stato inserito dalla parte dei fantasmi neri perché l’alternativa avrebbe appesantito notevolmente il codice dovendo aggiungere tanti test quanti i nemici. Per segnalare la fine del gioco, un'alternativa potrebbe essere un fumetto con l’urlo di dolore a cui si potrebbe aggiungere la registrazione di un vero urlo [Fig.5-22]:
Fig.5-22
Fig.5-21
5.2.2 I fantasmi neri I fantasmi neri vagano all’interno dello spazio del gioco con velocità e traiettorie diverse [Fig.5-23]. Fig.5-23
Il codice è simile fra tutti perché si differenzia solo dalla posizione iniziale, dall’eventuale angolo della traiettoria, dal tempo di attesa che fa variare la velocità. Invece di rimbalzare i fantasmi neri, quando toccano il bordo, ricompaiono nel punto di partenza. Se riescono a toccare il fantasma bianco avvisano gli altri componenti del gioco [Fig.5-24].
Fig.5-24
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 42
5.3 Il suono Come accennavamo prima, si possono inserire musica, rumori o parole che accompagnano l’esecuzione del gioco per sottolineare determinati momenti. [Fig.5-25]. Per farlo, basta selezionare il blocco del suono e scegliere l’opportuno effetto sonoro oppure si può scegliere di suonare uno strumento [Fig.5-26 e 5-27].
Fig.5-26 do re mi do do re mi do mi fa sol …
Fig.5-25
Fig.5-27
5.4 Riflessioni L’abilità del giocatore nel premere velocemente i tasti o nello spostare il mouse viene messo alla prova in questi nuovi giochi “spara e fuggi”. Anche la fantasia del programmatore e la sua competenza vengono messi a dura prova e non è detto che la sfida per realizzare il gioco sia meno divertente del gioco stesso.
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 43
Rivediamo i nuovi blocchi incontrati:
Mette in attesa lo script (il codice del programma), fermando la sua esecuzione e aspettando che un evento si verifichi.
Se uno degli elementi del gioco si accorge che sta succedendo qualcosa di rilevante per il proseguimento del gioco, può inviare a tutti una segnalazione e continuare oppure mettersi in attesa.
Appena una segnalazione arriva, una nuova serie di istruzioni può essere eseguita.
La variabile è un contenitore di valori che può cambiare nel tempo. La variabile numerica può essere portata a un valore preciso o il suo contenuto, qualsiasi esso sia, può essere incrementato.
Senza emettere suoni un personaggio può esprimere un pensiero usando la tecnica dei fumetti.
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 44
Il suono o la parola possono essere riprodotti utilizzando anche versioni personalizzate.
Si possono riprodurre delle note e gestire la loro durata (do = 48, re =50, …)
Si possono utilizzare 128 strumenti diversi (vari tipi di pianoforte, di chitarre, … ma anche il canto degli uccelli, le onde del mare,…) e 81 strumenti a percussione.
L’informatica e i giochi
Nicoletta D’Alpaos
Pag. 45