< Unità 3 - Animazioni e giochi interattivi ('22-'23)

Lezione 22 - Collisioni

45 minuti

Panoramica

Domanda del giorno: come possono i programmatori basarsi sulle astrazioni per creare ulteriori astrazioni?

In questa lezione gli studenti programmano i propri personaggi per farli interagire in modi nuovi. Dopo un breve ripasso di come hanno usato il blocco d'istruzione `isTouching`(#f78183), gli studenti fanno un brainstorming su altri modi in cui due personaggi potrebbero interagire. Poi usano `isTouching`(#f78183) per far sì che un personaggio ne spinga un altro attraverso l’area di gioco, prima di fare pratica con le quattro nuove istruzioni di collisione (`collide`(#f78183), `displace`(#f78183), `bounce`(#f78183), and `bounceOff`(#f78183)).

Traguardo di apprendimento

Questa lezione introduce le collisioni, un'altra utile astrazione che permetterà agli studenti di manipolare i propri personaggi in modi completamente nuovi. Mentre in teoria gli studenti avrebbero potuto scrivere le epropri istruzioni di spostamento, collisione o rimbalzo, la capacità di ignorare i dettagli di questo programma consente loro di concentrare la loro attenzione sulla struttura di alto livello dei giochi che vogliono creare.

Questa lezione ha anche lo scopo di fornire agli studenti una maggiore pratica nell'uso delle nuove istruzioni che hanno appreso nel secondo capitolo. Questa sarà l'ultima volta che impareranno un nuovo comportamento dei personaggi e, dopo questa lezione, gli studenti inizieranno a concentrarsi su come organizzano il loro programma sempre più complesso.

Opportunità di valutazione

  1. Modellare diversi tipi di interazioni tra i personaggi

    Vedi l'esercizio 7 su Code Studio.

  2. Descrivere come è possibile utilizzare le astrazioni per sviluppare ulteriori astrazioni

    In conclusione, assicurati che gli studenti capiscano che blocchi come `iTouching`(#f78183) nascondono la complessità o i dettagli del codice all'interno, permettendo loro di affrontare problemi più complessi.

Mappatura delle competenze

Mappatura completa del corso
CSTA K-12 Computer Science Standards (2017)
    • 2-AP-11 - Create clearly named variables that represent different data types and perform operations on their values.
    • 2-AP-12 - Design and iteratively develop programs that combine control structures, including nested loops and compound conditionals.
    • 2-AP-13 - Decompose problems and subproblems into parts to facilitate the design, implementation, and review of programs.
    • 2-AP-16 - Incorporate existing code, media, and libraries into original programs, and give attribution.
    • 2-AP-17 - Systematically test and refine programs using a range of test cases.
    • 2-AP-19 - Document programs in order to make them easier to follow, test, and debug.

Pianificazione

Obiettivi

Gli alunni saranno in grado di:
  • descrivere come è possibile utilizzare le astrazioni per sviluppare ulteriori astrazioni
  • modellare diversi tipi di interazioni tra i personaggi.

Preparazione

  • Controlla il forum "Aula insegnanti" per insegnanti verificati per trovare strategie o risorse aggiuntive condivise dagli altri colleghi insegnanti
  • Se stai facendo una lezione virtuale, valuta la possibilità di controllare le nostre Modifiche alla lezione virtuale

Collegamenti

Attenzione! Fai una copia di tutti i documenti che intendi condividere con gli alunni.

Per gli insegnanti

Glossario

  • Astrazione - una rappresentazione semplificata di qualcosa di più complesso. Le astrazioni ti consentono di nascondere i dettagli per aiutarti a gestire la complessità, concentrarti su concetti pertinenti e ragionare sui problemi a un livello più alto.

Guida didattica

Preparazione (5 minuti)

Mostra l'immagine animata. È disponibile anche come esercizio in code studio.

Una a forma di giraffa si muove sullo schermo verso una faccina a forma di scimmia ferma. Quando tocchi la faccina della scimmia, sia la scimmia che la giraffa continuano a muoversi sullo schermo

Discussione: utilizzando i blocchi che già conosciamo, come possiamo creare l'interazione tra personaggi che possiamo vedere in questo programma?

Condivisione: dai modo agli studenti di condividere le proprie idee.

Scopo della discussione

Obiettivo: l'obiettivo di questa discussione è far riflettere gli studenti su come risolvere il problema di avere uno personaggio che spinge un altro sullo schermo. Non è necessario che gli studenti raggiungano un consenso, perché ognuno di loro avrà la possibilità di provare una soluzione nell'esercizio successivo in Code Studio. Gli studenti devono capire che è possibile utilizzare i blocchi per produrre il movimento desiderato solo con i blocchi che hanno già imparato.

Osservazioni

La prima parte del problema è capire quando i due personaggi si toccano, ma abbiamo già capito come farlo e ora possiamo usare il blocco `isTouching`(#f78183). Ciò significa che non abbiamo più bisogno di pensare a quei dettagli. Usando l'astrazione per nascondere i dettagli complicati in quella parte del problema, possiamo concentrarci sulla nuova parte.

Suggerimenti didattici

Gli studenti hanno già visto questa voce di glossario, ma data la sua importanza per il capitolo, viene nuovamente introdotto qui.

Ripasso del glossario:

  • astrazione - una rappresentazione semplificata di qualcosa di più complesso

Domanda del giorno: come possono i programmatori basarsi sulle astrazioni per creare ulteriori astrazioni?

Attività (35 minuti)

Discussione: si trattava di un problema impegnativo, ma siamo riusciti a risolverlo. Cosa ci ha aiutato a risolvere questo problema?

Opportunità di valutazione

Assicurati che gli studenti parlino dell'importanza dei blocchi di livello superiore, come iTouching, e che, sebbene questi blocchi non forniscano nuove funzionalità, nascondere la complessità del codice all'interno di un singolo blocco consente loro di affrontare problemi più complessi.

Questo è anche un buon momento per sottolineare i progressi compiuti dagli studenti nelle loro competenze dall'inizio dell'unità. Questo problema sarebbe sembrato quasi impossibile all'inizio dell'anno. Alcune cose che hanno reso il problema più facile da risolvere sono state:

  • Preparazione: gli studenti hanno fatto un brainstorming e hanno pensato alle soluzioni prima di provare il loro codice.
  • Cooperazione: gli studenti hanno lavorato in gruppo per trovare una soluzione
  • Astrazione: gli studenti sono stati in grado di utilizzare i blocchi `iTouching`(#f78183) e `VelocityY`(#f78183) per nascondere parte della complessità della soluzione.

Osservazioni

Tutte queste cose sono molto importanti e vengono spesso a galla nell'informatica. Una cosa particolarmente utile è stato il blocco `iTouching`(#f78183), che nascondeva il codice complicato che ci dice se i due personaggi si toccano. C'è anche un blocco `displace`(#f78183) che nasconde il codice che abbiamo appena scritto e altri blocchi che nascondono il codice per altri tipi di interazioni con i personaggi. Avrai la possibilità di provare questi blocchi nei prossimi esercizi.

Opportunità di valutazione

Valutazione formativa: questo esercizio può essere utilizzato come valutazione formativa. Nell'esercizio viene fornita una tabella con i criteri di valutazione e agli studenti può essere fornito un riscontro scritto. Clicca qui per saperne di più su come fornire riscontri agli studenti.

Conclusione (5 minuti)

Domanda del giorno: come possono i programmatori basarsi sulle astrazioni per creare ulteriori astrazioni?

Ripasso del glossario:

  • astrazione - una rappresentazione semplificata di qualcosa di più complesso

Discussione: In che modo disporre del blocco `iTouching`(#f78183) e il blocco `VelocityX`(#f78183) ha semplificato la risoluzione del problema di un personaggio che spinge un altro?

Opportunità di valutazione

Gli studenti devono capire che questi due blocchi rappresentano soluzioni parziali al problema di un personaggio che spinge l'altro e che, nascondendo i dettagli di quelle soluzioni parziali, possono concentrarsi più facilmente su come unire quelle soluzioni parziali per risolvere problemi più grandi e complessi.

Creative Commons License (CC BY-NC-SA 4.0).

Questo compito è disponibile previa Licenza Creative Commons (CC BY-NC-SA 4.0).

Se sei interessato ad utilizzare i materiali di Code.org per scopi commerciali, contattaci.