# C4-A04 — Crée des clones et projectiles

import { ActivityHero } from "../../../src/components/ActivityHero";
import { ActivitySolution } from "../../../src/components/ActivitySolution";
import { BlockImage } from "../../../src/components/BlockImage";
import { BonusChallenge } from "../../../src/components/BonusChallenge";
import { CompletionCheck } from "../../../src/components/CompletionCheck";
import { Hint } from "../../../src/components/Hint";
import { PrintableVersion } from "../../../src/components/PrintableVersion";
import { StarterProject } from "../../../src/components/StarterProject";
import { StudentStep } from "../../../src/components/StudentStep";
import { TeacherAccess } from "../../../src/components/TeacherAccess";
import { TryIt } from "../../../src/components/TryIt";

<ActivityHero
  id="C4-A04"
  title="Génère des tirs et des clones dynamiques"
  cycle="4"
  level="5e, 4e, 3e"
  duration="50 min"
  tool="Scratch avancé"
  difficulty="Défi"
  needsAdult={false}
  mission="Programme un système de tir continu : ton vaisseau pivote vers la souris et tire des lasers à chaque pression sur Espace en clonant le projectile et en le détruisant à l'impact."
/>

<PrintableVersion
  pdfColorUrl="/downloads/c4-a04-cree-des-clones.pdf"
  pdfColorName="Fiche mission élève : Clones et instanciation dynamique (A4)"
/>

<StarterProject
  title="Projet Scratch de départ"
  type="scratch"
  downloadUrl="/projects/c4-a04-clones-tirs-depart.sb3"
  filename="c4-a04-clones-tirs-depart.sb3"
  size="0.5 KB"
  preparedItems={[
    "Lutin Vaisseau 'Spaceship' qui pivote vers la souris",
    "Lutin Laser 'Laser' caché au départ",
    "Lutin Astéroïde 'Asteroid' cible",
  ]}
/>

---

## 🪜 Les étapes de ton système de clones

<StudentStep number={1} title="Le vaisseau fabrique des clones au clavier" check="Appuyer sur Espace crée un clone du laser sans bloquer le vaisseau.">
  Sur le **Vaisseau** :
  ```text
  quand le drapeau vert est cliqué
  répéter indéfiniment
      s'orienter vers [pointeur de souris v]
      si <touche [espace v] pressée ?> alors
          créer un clone de [Laser v]
          attendre (0.15) secondes // cadence de tir
  ```
</StudentStep>

<StudentStep
  number={2}
  title="Cache le laser original au démarrage"
  check="Le laser original n'est jamais visible sur la scène."
>
  Sur le **Laser** :
  <BlockImage category="events" text="quand le drapeau vert est cliqué" /> →{" "}
  <BlockImage category="looks" text="cacher" />
</StudentStep>

<StudentStep number={3} title="Donne vie au clone et détruis-le à la fin" check="Le clone avance en ligne droite et disparaît dès qu'il touche un astéroïde ou le bord.">
  Sur le **Laser** :
  ```text
  quand je commence comme un clone
  aller à [Spaceship v]
  s'orienter vers [pointeur de souris v]
  montrer
  répéter jusqu'à <<touche le [bord v] ?> ou <touche le [Asteroid v] ?>>
      avancer de (15) pas
  supprimer ce clone
  ```
</StudentStep>

---

## 🧪 Teste ton tir laser

<TryIt expected="Maintiens la barre Espace : une rafale de tirs laser jaillit de ton vaisseau en direction du pointeur. Chaque laser qui sort de l'écran ou touche l'astéroïde disparaît proprement sans ralentir le jeu.">
  Vise et détruis 5 astéroïdes d'affilée !
</TryIt>

---

## 💡 Indices progressifs

<Hint
  hints={[
    {
      level: 1,
      title: "Indice 1 — La règle de destruction",
      content: (
        <p>
          N'oublie jamais le bloc <code>supprimer ce clone</code> à la fin du déplacement, sinon les
          clones s'accumulent et bloquent le jeu après 300 tirs !
        </p>
      ),
    },
    {
      level: 2,
      title: "Indice 2 — Le point de départ du laser",
      content: (
        <p>
          Place <code>aller à [Spaceship]</code> <em>avant</em> le bloc <code>montrer</code> pour
          que le laser parte bien du centre du vaisseau.
        </p>
      ),
    },
    {
      level: 3,
      title: "Indice 3 — Faire exploser l'astéroïde",
      content: (
        <p>
          Sur l'astéroïde :{" "}
          <code>
            si &lt;touche le Laser ?&gt; -&gt; [jouer son Explosion, aller à position aléatoire]
          </code>
          .
        </p>
      ),
    },
  ]}
/>

---

## 🔍 Solution et explications

<ActivitySolution
  title="Voir les scripts complets du vaisseau et des clones"
  downloadUrl="/projects/c4-a04-clones-tirs-corrige.sb3"
  filename="c4-a04-clones-tirs-corrige.sb3"
  size="0.5 KB"
>

```text
// Sur le Vaisseau (Spaceship)
[quand le drapeau vert est cliqué]
aller à x: (0) y: (0)
répéter indéfiniment
    s'orienter vers [pointeur de souris v]
    si <touche la [espace v] pressée ?> alors
        créer un clone de [Laser v]
        jouer le son [Laser Shoot v]
        attendre (0.15) secondes

// Sur le Laser
[quand le drapeau vert est cliqué]
cacher

[quand je commence comme un clone]
aller à [Spaceship v]
s'orienter vers [pointeur de souris v]
montrer
répéter jusqu'à <<touche le [bord v] ?> ou <touche le [Asteroid v] ?>>
    avancer de (18) pas
supprimer ce clone
```

</ActivitySolution>

---

## 🌟 Défi bonus

<BonusChallenge title="Défi bonus : Crée des clones d'astéroïdes ennemis !">
  Applique la même méthode aux astéroïdes : génère 1 clone d'astéroïde toutes les 2 secondes avec
  une vitesse et une taille aléatoires !
</BonusChallenge>

---

<CompletionCheck
  activityId="C4-A04"
  nextActivityUrl="/activites/cycle-4/c4-a05-construis-une-simulation"
  nextActivityTitle="C4-A05 — Construis une simulation"
  cycleUrl="/activites/cycle-4"
/>

<TeacherAccess lessonId="C4-S08" lessonTitle="Clones" lessonUrl="/cycle-4/c4-s08-clones" />
