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

Lezione 19 - Rilevamento delle collisioni

45 minuti

Panoramica

Domanda del giorno: in che modo la programmazione può aiutare a semplificare problemi complicati?

Gli studenti vengono a conoscenza del rilevamento delle collisioni sul computer. Lavorando in coppia, esplorano come un computer potrebbe utilizzare le proprietà di posizione e dimensione del personaggio e la matematica per rilevare se due personaggi si toccano. Quindi usano il blocco `isTouching()`(#f78183) per creare effetti diversi quando i personaggi si scontrano e si esercitano a usare i blocchi delle istruzioni per modellare varie interazioni.

Traguardo di apprendimento

Questa lezione introduce formalmente l'uso delle astrazioni, semplici modi di rappresentare la complessità sottostante.

Nell'ultima lezione, gli studenti sono stati introdotti all'idea di utilizzare un blocco di istruzione per rappresentare codice complesso. Gli studenti esplorano ulteriormente questa idea nel contesto della sfida matematica intenzionalmente complessa di determinare se due personaggi si toccano. Utilizzando un singolo blocco per rappresentare questa complessità, in questo caso il blocco iTouching, diventa molto più facile scrivere e ragionare sul codice e gli studenti possono apprezzare il valore dell'uso delle astrazioni. Nelle lezioni successive, gli studenti continueranno a basarsi sull'astrazione `istouching ()`(#f78183) per creare delle interazioni più complesse tra pesonaggi.

Opportunità di valutazione

  1. Rilevare quando i personaggi si toccano o si sovrappongono e modificare il programma in risposta a tali eventi.

    Vedi l'esercizio 7 su Code Studio.

  2. Descrivere come le astrazioni aiutano a gestire la complessità del codice

    Nella discussione di riepilogo, assicurati che gli studenti possano identificare in che modo blocchi più astratti possono aiutare a creare programmi più grandi o 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.

Pianificazione

Obiettivi

Gli alunni saranno in grado di:
  • descrivere come le astrazioni aiutano a gestire la complessità del codice
  • rilevare quando i personaggi si toccano o si sovrappongono e modificare il programma in risposta a tali eventi.

Preparazione

  • Stampa copie della guida alle attività in modo che ogni coppia di studenti abbia una parte A e una parte B
  • 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
Per gli studenti

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: su un proiettore o sullo schermo di un computer, mostra il gioco che appare nel primo esercizio di Code Studio per questa lezione.

Suggerimenti didattici

Mostra il gioco: a questo punto non far iscrivere gli studenti a Code Studio per giocare da soli. Subito dopo svolgono un'attività tradizionale piuttosto significativa e probabilmente ciò comporterà difficoltà nella transizione.

Suggerimento: un aspetto interessante di questa animazione è che i personaggi cambiano quando si toccano. Riesci a pensare a un modo in cui il computer possa usare le proprietà dei personaggi per capire se si toccano?

Discussione: consenti agli studenti di raccogliere idee su come il computer potrebbe determinare se i due personaggi si stanno toccando. Elenca le loro idee alla lavagna e dì loro che avranno la possibilità di provare le loro teorie in un attimo.

Scopo della discussione

Obiettivo: lo scopo di questa discussione è solo quello di raccogliere alcune idee alla lavagna che gli studenti possano utilizzare nella prossima attività. Non è necessario valutarli o provarli effettivamente, perché gli studenti lavoreranno insieme per farlo subito dopo la discussione.

Osservazioni

Questo è un problema difficile e lo approfondiremo oggi. Mentre ci lavoriamo, esamineremo anche i modi in cui il computer può aiutarci a semplificare questi problemi difficili e complessi.

Domanda del giorno: In che modo la programmazione può aiutare a semplificare problemi complicati?

Attività (35 minuti)

Collisioni - Attività tradizionale

Forma i gruppi: disponi in coppia gli studenti.

Osservazioni

Ora avrai la possibilità di provare le strategie che hai escogitato in gruppo. Ogni guida alle attività è composta da quattro fogli di carta. Un compagno dovrebbe prendere i fogli con la «A» in alto e l'altro dovrebbe prendere i fogli con la «B» in alto. Ognuno di voi disegnerà due personaggi segreti sul grafico e il vostro compagno cercherà di capire se si stanno toccando o meno, sulla base delle stesse informazioni che il computer avrà sulle proprietà di ogni personaggio. Non lasciare che il tuo compagno veda cosa stai disegnando.

Distribuisci le guide alle attività a ciascun gruppo di compagni. Assicurati che un compagno abbia preso la versione A e l'altro abbia preso la versione B.

Ogni studente avrà una linea su cui disegnare due quadrati. Lo studente sceglie la posizione e la dimensione di ciascuno dei quadrati, quindi registra le informazioni sui quadrati in una tabella. Quindi cambiano tabella (non i disegni) e cercano di determinare se i due personaggi si toccano o meno in base alla larghezza di ciascun personaggio e alla distanza tra loro.

La matematica per determinare se i personaggi si stanno toccando è la seguente:

  1. Sottrai le posizioni x (o y) dei personaggi per trovare la distanza tra i loro centri.
  2. Dividi la larghezza (o l'altezza) di ogni quadrato per 2 per ottenere la distanza dal centro al bordo.
  3. Se la distanza tra i centri dei personaggi è maggiore della somma delle distanze dai loro centri ai bordi, i personaggi non si toccano.
  4. Se la distanza tra i centri dei personaggi è uguale alla somma delle distanze dai loro centri ai bordi, i personaggi si toccano appena.
  5. Se la distanza tra i centri dei personaggi è inferiore alla somma delle distanze dai centri ai bordi, i personaggi si sovrappongono.

Girando tra i banchi: supporta gli studenti mentre completano il foglio di lavoro. Se gli studenti non sono sicuri di come determinare se i personaggi si toccano, incoraggiali a utilizzare una delle idee alla lavagna. Ricorda loro che non vengono valutati in base al fatto che abbiano ragione o torto, ma in base alla loro capacità di utilizzare il processo di risoluzione dei problemi. Se qualche studente ha finito prima, sfidalo a trovare un metodo che funzioni per i personaggi ovunque sulla griglia, non solo sulla stessa linea.

Condividi: dopo che tutti gli studenti hanno avuto la possibilità di testare le loro soluzioni, chiedi loro di condividere ciò che hanno scoperto.

Osservazioni

Le persone possono usare molte strategie diverse per risolvere un problema come questo. Poiché i computer non possono «vedere» i disegni allo stesso modo delle persone, devono usare la matematica per capire se due cose si toccano. Abbiamo esaminato come funziona, ma possiamo combinare questi metodi per funzionare in qualsiasi punto della schermata di gioco.

isTouching()

Transizione: fai andare gli studenti su Code Studio.

Suggerimenti didattici

Esercizio 2: Il programma in questo esercizio è travolgente. Il punto non è che gli studenti capiscano ogni riga, ma che vedano che è possibile verificare se i personaggi si toccano semplicemente usando le loro posizioni. Dovrebbero capire che il blocco `iTouching`(#f78183) usato nell'esercizio successivo esegue automaticamente il programma complicato che vedono qui, ma è nascosto all'interno del blocco per facilitare la programmazione.

Questo programma non include le proprietà y e height perché i due personaggi interagiscono sulla stessa linea orizzontale. Se il coniglio potesse muoversi in diagonale, il programma sarebbe ancora più complicato.

Esercizio 5: questo esercizio non chiede agli studenti di correggere il bug nel programma, cosa che deve essere eseguita nella scheda animazione. Affinché la collisione funzioni correttamente, gli studenti dovranno ritagliare lo spazio vuoto attorno alla parte visibile dell'immagine. Il modo più semplice per farlo è fare clic una volta sull'icona «ritaglia» nella scheda animazione, che verrà ritagliata strettamente fino al rettangolo più piccolo attorno alle parti visibili dell'immagine. Gli studenti possono anche utilizzare lo strumento di selezione rettangolare per specificare cosa deve essere ritagliato.

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: In che modo la programmazione può aiutare a semplificare problemi complicati?

Discussione: all'inizio della lezione, hai visto che è possibile fare tutto ciò che fa il blocco `iTouching`(#f78183) senza usare affatto il blocco. Cos'è che rende utile questo blocco?

Opportunità di valutazione

Gli studenti devono tenere presente che, anche se possono programmare il codice per rilevare se i personaggi si toccano ogni volta, è soggetto a errori e richiederebbe più tempo ed energia rispetto a un blocco che esegue automaticamente lo stesso codice. Il nuovo blocco li aiuta ad affrontare sfide più difficili riducendo il rischio di errori e lasciandoli liberi di pensare al quadro più ampio.

Osservazioni

Una delle cose migliori della programmazione è che una volta trovata la soluzione a un problema, spesso è possibile programmarla nel computer per essere riutilizzata più e più volte. Quando non devi preoccuparti dei dettagli di quel particolare problema, puoi affrontare sfide più grandi, come hai fatto oggi. L'uso di una rappresentazione semplificata di qualcosa per nascondere i dettagli in modo da poter pensare al quadro generale si chiama «astrazione» ed è uno strumento chiave utilizzato dai programmatori per aiutarli a scrivere programmi complicati.

Glossario delle parole chiave:

  • Astrazione - una rappresentazione semplificata di qualcosa di più complesso.
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.