Gravity Simulator, un simulatore di gravità creato con Scratch

Cosa farai

In questa risorsa imparerai a simulare gli effetti della forza di gravità utilizzando in coding con Scratch.

Cosa imparerai

Nel creare un simulatore di gravità con il tuo Microninja imparerai a:

  • conoscere gli effetti della forza di gravità sulla terra e nei diversi pianeti del sistema solare
  • importare immagini in Scratch e usarle come Sprite
  • salvare i dati nelle variabili
  • usare l’operatore condizionale se
  • usare l’operatore moltiplicazione

Simulare l’effetto della forza di gravità

Nello spazio hai l’impressione che ogni cosa fluttui. Succede perché tutto diventa senza peso al di fuori dell’atmosfera terrestre.
Questa è probabilmente la differenza più grande rispetto a quando ci si trova sulla terra, dove ogni cosa è costantemente attratta verso il basso. Siamo così abituati a sentire questa attrazione che non ci facciamo nemmeno caso. Questa forza che sentiamo viene chiamata gravità.

Non sappiamo veramente cosa sia la gravità, ma conosciamo i suoi effetti. Ogni pezzo di materia nell’universo attrae e viene attratto da ogni altro pezzo. Più grande è il pezzo di materia, maggiore è l’attrazione che esso esercita; più grande è la distanza che lo separa da un altro pezzo, minore è l’attrazione che su di esso esercita. Per questo motivo i pianeti, che sono molto più piccoli del sole, vi orbitano attorno, e la luna orbita attorno alla terra.

Possiamo simulare l’effetto della gravità sulla Terra usando Scratch.

Uno stage “spaziale”

  1. Apri Scratch.
  2. Crea un nuovo file selezionando File/Nuovo.
  3. Cancella il gatto di Scratch. Useremo uno sprite a tema. Per cancellarlo, selezionalo, fai click con il tasto destro del mouse e seleziona cancella.
  4. Per questo progetto dobbiamo creare uno sfondo che ci ricordi il pianeta Terra. Fai click su Stage e selezione l’etichetta Sfondi.
  5. Fai click sull’icona Disegna un nuovo sfondo, seleziona lo strumento rettangolo e fai click su un quadratino verde nella palette colori. Traccia un rettangolo nella parte inferiore dello stage, seleziona lo strumento Riempi con il colore e fai clic nel rettangolo che hai tracciato per riempirlo di colore verde; questo rettangolo simulerà la terra.
  6. Come sprite, userai il nostro gatto spaziale: puoi scaricare l’immagine qui.
  7. Fai click sull’icona Carica uno sprite da un file, cerca e seleziona il file che hai appena scaricato e fai click su Ok.
  8. Perché il nostro simulatore di gravità funzioni correttamente, dobbiamo definire il centro dello sprite. Per farlo, seleziona lo sprite gatto spaziale, fai click sull’etichetta Costume, e quindi sull’icona Definisci il centro del costume che trovi nell’angolo in alto a destra della finestra di editing. Apparirà una croce. Spostala fino a che il suo centro si troverà nella parte inferiore del gatto spaziale.
  9. Fai click sull’etichetta Script e salva con nome il tuo progetto (File/Salva con nome)

Le variabili

  1. Per creare le variabili, fai click su Variabili e Liste e premi il pulsante Crea una variabile.
  2. Chiama la prima variabile gravità e assicurati che sia selezionata l’opzione Per tutti gli sprite, prima di premere OK. Una variabile salva un valore che può essere usato in ogni parte del programma.
  3. Appariranno dei blocchi con la variabile gravità, e, nello stage verrà creato un contatore.
  4. Ripeti le stesse operazioni per creare la variabile velocità.

La posizione iniziale

  1. Fai click sull’etichetta Script.
  2. Seleziona i blocchi Situazioni e trascina nella finestra dello script il blocco Quando si clicca su bandiera verde.
  3. Per essere sicuri che il gatto spaziale si trovi nella parte superiore dello stage quando il programma viene lanciato, dobbiamo definire le coordinate della posizione iniziale. Seleziona i blocchi di Movimento e tascina sotto il blocco Quando si clicca su bandiera verde il blocco vai a x:0 y:148
  4. Dobbiamo ora specificare dei valori iniziali per le nostre variabili. Seleziona i blocchi Variabili e trascina sotto il blocco vai a x:0 y:148 i blocchi porta gravità a -9.81 e porta velocità a 0. -9.81 è la costante per il calcolo della forza di gravità sulla terra.

Un loop per simulare la forza di gravità

Vogliamo che il valore della variabile velocità cambi in modo da simulare l’effetto della forza di gravità.
Per farlo, usiamo questa formula:

velocità = gravità x intervallo_di_tempo
velocità = -9.81 x 0.1

Il valore 0.1 è l’intervallo di tempo per il nostro programma: ogni volta che il loop viene eseguito, verrà moltiplicato per il valore della gravità (che è -9.81), e il risultato sarà il valore della velocità.

  1. Vai ai blocchi di Controllo e trascina il blocco per sempre sotto i blocchi che hai già messo nella finestra dell’editor dello script, e porta al suo interno un blocco cambia velocità di che trovi nelle Variabili e Liste
  2. Seleziona i blocchi Operatori e trascina un blocco moltiplicazione 0 * 0 nello finestrella interna al blocco cambia velocità di 0
  3. Trascina la variabile gravità all’interno dell’operatore moltiplicazione 0 * 0. Nell’altra finestra scrivi 0.1.
  4. Infine, abbiamo bisogno di un blocco di Movimento per muovere il gatto spaziale. Trascina il blocco cambia y di all’interno del loop per sempre e sotto il blocco cambia velocità di. Quindi trascina la variabile velocità nella finestrella del blocco cambia velocità di.

Il tuo programma dovrebbe essere simile a quello in figura:

Salvalo e fai click sulla bandiera verde per verificare che funzioni correttamente.

L’atterraggio

Per il momento il programma che abbiamo scritto simula la forza di gravità facendo cadere il gatto spaziale dall’alto verso il basso. Adesso vorremmo fare in modo che atterri sulla terra. Utilizzeremo l’operatore condizionale se all’interno del loop di simulazione.

  1. Seleziona i blocchi di Controllo e trascina il blocco se all’interno del loop per sempre e all’esterno dei blocchi cambia velocità di e cambia y di.
  2. Definisci la condizione del blocco se trascinando un operatore not nella finestrella a forma di diamante del blocco se. Quindi seleziona i blocchi dei Sensori e trascina il blocco sta toccando il colore nella finestrella a forma di diamante dell’operatore not.
  3. Il colore mostrato nella finestrella del blocco sta toccando il colore deve essere lo stesso verde usato per la terra. Per essere sicuro che sia lo stesso, fai click sul colore all’interno della finestrella e quindi fai click sulla parte verde del tuo Stage. Il colore all’interno della finestrella diventerà uguale a quest’ultimo.
  4. Salva il programma e lancialo per verificare che il gatto spaziale atterri sulla terra.

Quello che sale, scende

Ora nella nostra simulazione il gatto cade per effetto della gravità e atterra. Ma cosa succede se il gatto salta? Dobbiamo prendere in considerazione quest’ipotesi e modificare il programma!

  1. Seleziona i blocchi delle Situazioni e trascina il blocco Quando si preme il tasto spazio nella finestra dello script. Collegalo a un blocco se.
  2. Trascina il blocco sta toccando il colore all’interno del blocco se e definisci il colore verde come hai fatto prima.
  3. Seleziona i blocchi di Movimento e trascina un blocco vai dove y all’interno del blocco se. Inserisci il valore -60 per y.
  4. Seleziona i blocchi delle Variabili e Liste e trascina un blocco porta velocità a sotto il blocco vai dove y. Dai alla velocità il valore 10.
  5. Salva e lancia il programma. Una volta che il gatto è atterrato, premi la barra spaziatrice per vedere se salta in modo corretto.

La gravità sugli altri pianeti

Sappiamo che -9.81 è il valore che serve per calcolare la forza di gravità sulla terra.
In generale, la forza di gravità è data dalla massa (che è proporzionale alle dimensioni e al peso) moltiplicata per l’accelerazione. Visto che conosciamo le dimensioni dei pianeti del sistema solare, possiamo calcolare il valore da utilizzare per simulare l’effetto della forza di gravità su di essi. Per esempio, per simulare le condizioni di Marte dobbiamo dare alla velocità il valore 3.71, mentre per simulare quelle di Giove, che è molto più grande, dovremo usare il valore 24.8.

  1. Trascina nella finestra dello script un blocco Quando si preme il tasto spazio e seleziona 1 dal menu a tendina.
  2. Collega un blocco porta gravità a sotto al blocco Quando si preme il tasto 1 e dagli il valore -3.71.
  3. Aggiungi sotto un blocco dire Hello! per 2 secondi e sostituisci Hello! con Su Marte! e 2 con 4.
  4. Ripeti la stessa procedura per simulare la gravità su Giove.

E adesso?

Saresti in grado di fare in modo che lo sfondo cambi in base al pianeta sul quale viene simulata la gravità?


This learning resource is provided for free by the Raspberry Pi Foundation under a Creative Commons licence.
Find more at raspberrypi.org/resources and github.com/raspberrypilearning.