# C3-S02 — Animation et parallélisme

import { AssessmentGrid } from "../../src/components/AssessmentGrid";
import { Correction } from "../../src/components/Correction";
import { ExerciseCard } from "../../src/components/ExerciseCard";
import { LearningObjectives } from "../../src/components/LearningObjectives";
import { LessonHeader } from "../../src/components/LessonHeader";
import { LessonNavigation } from "../../src/components/LessonNavigation";
import { TeacherTip } from "../../src/components/TeacherTip";
import { WatchOut } from "../../src/components/WatchOut";

<LessonHeader
  id="C3-S02"
  title="Animation fluide et scripts parallèles"
  cycle="3"
  levels="CM1, CM2, 6e"
  duration="45 à 55 minutes"
  tool="Scratch"
  grouping="Binômes"
  expressPrep={{
    objective: "Exécuter deux scripts en parallèle sous le même drapeau vert (mouvement + son/costumes).",
    material: "Lutin oiseau ou dragon avec ailes animées.",
    trap: "Bloquer un script infini dans une boucle sans séparer le script de dialogue.",
    timing: "10' Parallélisme • 25' Double script • 10' Bilan",
  }}
/>

<LearningObjectives
  objectives={[
    "Créer une animation cyclique fluide en alternant les costumes dans une boucle.",
    "Comprendre le concept de parallélisme : exécuter deux scripts indépendants simultanément sous le même drapeau vert.",
    "Séparer la logique de déplacement et la logique d'animation visuelle pour éviter les blocages.",
  ]}
/>

---

## 🎒 Matériel & Préparation

- Lutin multi-costumes (ex : le dinosaure qui marche ou le chat Scratch).
- Fiche mémo sur le parallélisme.

---

## ⏱️ Déroulé de la séance

### 1. Pourquoi le parallélisme ? (10 min)

Si on met dans le même script : `[Avancer 100 pas]` puis `[Changer de costume]`, le lutin glisse sans bouger les jambes, puis change de costume à l'arrêt !  
Solution : lancer **deux scripts en même temps** dès le clic sur le drapeau vert.

### 2. Atelier pratique (25 min)

<ExerciseCard title="Mission : Le dinosaure qui marche et rugit" difficulty="Moyen">
  - **Script 1 (Mouvement) :** Déplacer le dinosaure de gauche à droite sur l'écran en continu. -
  **Script 2 (Costumes) :** Faire battre ses pattes en alternant les costumes toutes les 0.15
  seconde. - **Script 3 (Son) :** Jouer un rugissement toutes les 3 secondes.
</ExerciseCard>

<Correction title="Architecture des 3 scripts parallèles">

```text
// Script 1 : Déplacement
[quand le drapeau vert est cliqué]
aller à x: -200 y: -50
répéter indéfiniment
    avancer de 5 pas
    si sur le bord, rebondir

// Script 2 : Animation des jambes
[quand le drapeau vert est cliqué]
répéter indéfiniment
    costume suivant
    attendre 0.15 secondes

// Script 3 : Son périodique
[quand le drapeau vert est cliqué]
répéter indéfiniment
    attendre 3 secondes
    jouer le son [Roar v]
```

</Correction>

### 3. Bilan (10 min)

Chaque script a une seule responsabilité. C'est le principe de décomposition en informatique.

<TeacherTip title="Style de rotation">
  Rappelez d'ajouter le bloc `fixer le sens de rotation [gauche-droite v]` pour éviter que le lutin
  se retourne à l'envers au rebond.
</TeacherTip>

---

## 📊 Grille d'évaluation

<AssessmentGrid
  criteria={[
    {
      label: "Construit deux scripts démarrant sur le même drapeau",
      withHelp: "Essaie de tout mettre dans un seul script séquentiel",
      autonomous: "Assemble 2 scripts indépendants fonctionnant en parallèle",
      transfer: "Synchronise un 3e script sonore avec temporisation",
    },
    {
      label: "Règle la vitesse d'animation",
      withHelp: "Les costumes défilent trop vite (sans bloc attendre)",
      autonomous: "Ajuste le bloc `attendre 0.15 s` pour un rendu réaliste",
      transfer: "Modifie la cadence en fonction de la vitesse de déplacement",
    },
  ]}
/>


<LessonNavigation
  prevUrl="/cycle-3/c3-s01-interface-et-premier-programme"
  prevId="C3-S01"
  prevTitle="Interface et premier programme"
  nextUrl="/cycle-3/c3-s03-boucles"
  nextId="C3-S03"
  nextTitle="Boucles"
  cycleUrl="/cycle-3"
  cycleTitle="Vue d'ensemble du Cycle 3"
/>
