# C4-S08 — Clones et systèmes de particules

import { AssessmentGrid } from "../../src/components/AssessmentGrid";
import { Correction } from "../../src/components/Correction";
import { DownloadCard } from "../../src/components/DownloadCard";
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="C4-S08"
  title="Clones : Instanciation dynamique et systèmes de particules"
  cycle="4"
  levels="5e, 4e, 3e"
  duration="55 minutes"
  tool="Scratch"
  grouping="Binômes"
  expressPrep={{
    objective: "Gérer le cycle de vie des clones : créer, animer individuellement et supprimer pour libérer la mémoire.",
    material: "Projet de tirs lasers ou système de particules de pluie.",
    trap: "Oublier [supprimer ce clone] quand le sprite touche le bord (saturation à 300 clones).",
    timing: "15' Cycle de vie clone • 25' Vague d'ennemis • 15' Optimisation",
  }}
  studentUrl="/activites/cycle-4/c4-a04-cree-des-clones"
  studentId="C4-A04"
  pdfUrl="/downloads/c4-s08-fiche-clones-particules-v1.pdf"
/>

<LearningObjectives
  objectives={[
    "Comprendre le cycle de vie d'un clone : Création (`créer un clone de`), Initialisation (`quand je commence comme un clone`) et Destruction (`supprimer ce clone`).",
    "Créer une pluie d'obstacles ou un système de tirs/projectiles infinis avec un seul lutin d'origine.",
    "Gérer la mémoire et éviter la saturation du moteur Scratch (limite de 300 clones simultanés).",
  ]}
/>

---

## 🎒 Matériel & Préparation

- 1 lutin canon / joueur et 1 lutin projectile (ex : une bille ou une flèche).

---

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

### 1. Duplication manuelle vs Clones (10 min)

Pourquoi ne pas dupliquer 50 fois un lutin dans la liste ? Parce que c'est ingérable à modifier et que les tirs doivent être créés et détruits à la volée pendant la partie.

### 2. Atelier pratique : Le canon à billes (30 min)

<ExerciseCard title="Mission : Le système de tirs continus" difficulty="Moyen">
  - Le lutin **Canon** pivote vers la souris. Quand la touche **Espace** est pressée, il génère un
  clone de la **Bille**. - La bille d'origine est cachée. - Dès qu'un clone apparaît : il se
  positionne sur le canon, s'oriente dans sa direction, s'affiche, avance jusqu'à toucher le bord ou
  une cible, puis se détruit immédiatement.
</ExerciseCard>

<Correction title="Architecture du canon à clones">

```text
// Sur le Lutin Original "Bille"
[quand le drapeau vert est cliqué]
cacher

// Déclencheur sur le Canon (Génération de clone)
[quand la touche [espace v] est pressée]
créer un clone de [Bille v]
attendre 0.2 secondes // cadence de tir

// Comportement du Clone "Bille"
[quand je commence comme un clone]
aller à [Canon v]
s'orienter vers [pointeur de souris v]
montrer
répéter jusqu'à <<touche le [bord v] ?> ou <touche le [Cible v] ?>>
    avancer de 15 pas
supprimer ce clone
```

</Correction>

### 3. La règle vitale : `supprimer ce clone` (15 min)

Si on oublie de supprimer les clones qui sortent de l'écran, Scratch atteint sa limite maximale de 300 clones et bloque toute nouvelle création de tir !

<WatchOut title="Le clone fantôme">
  Le sprite original doit TOUJOURS être caché (`cacher` au drapeau vert) pour que seul le clone en
  action soit visible à l'écran.
</WatchOut>

---

## 📊 Grille d'évaluation

<AssessmentGrid
  criteria={[
    {
      label: "Maîtrise les 3 blocs fondamentaux des clones",
      withHelp: "Crée des clones sans leur associer de script `quand je commence comme un clone`",
      autonomous: "Programme création, trajectoire et destruction propre",
      transfer: "Associe une variable locale pour que chaque clone ait une vitesse aléatoire",
    },
    {
      label: "Gère la mémoire et la destruction",
      withHelp: "Laisse les clones s'accumuler indéfiniment sur les bords",
      autonomous: "Détruit systématiquement le clone à l'impact ou en sortie d'écran",
      transfer: "Crée un effet de feu d'artifice avec explosion de particules",
    },
  ]}
/>

---

## 📥 Téléchargements

<DownloadCard
  title="Fiche clones et systèmes de particules (C4-S08)"
  filename="c4-s08-fiche-clones-particules-v1.pdf"
  format="pdf"
  size="1.2 KB"
  version="1.0"
  license="CC-BY-SA 4.0"
  href="/downloads/c4-s08-fiche-clones-particules-v1.pdf"
/>

<DownloadCard
  title="Projet Scratch : Système de tirs et clones (.sb3)"
  filename="c4-s08-clones-particules.sb3"
  format="sb3"
  size="0.5 KB"
  version="1.0"
  license="CC-BY-SA 4.0"
  href="/projects/c4-s08-clones-particules.sb3"
/>


<LessonNavigation
  prevUrl="/cycle-4/c4-s07-blocs-personnalises"
  prevId="C4-S07"
  prevTitle="Blocs personnalisés"
  nextUrl="/cycle-4/c4-s09-simulation-et-aleatoire"
  nextId="C4-S09"
  nextTitle="Modélisation et simulation"
  cycleUrl="/cycle-4"
  cycleTitle="Vue d'ensemble du Cycle 4"
/>
