# C3-A03 — Évite les obstacles

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="C3-A03"
  title="Évite les ennemis et gère tes vies"
  cycle="3"
  levels="CM1, CM2, 6e"
  duration="45 min"
  tool="Scratch"
  difficulty="Entraînement"
  needsAdult={false}
  mission="Un crabe géant patrouille sur la plage ! Guide ton personnage pour ramasser les coquillages. Mais attention : si le crabe te touche, tu perds une vie et tu repars du départ !"
/>

<PrintableVersion
  pdfColorUrl="/downloads/c3-a03-evite-les-obstacles.pdf"
  pdfColorName="Fiche mission élève : Vies et collisions (A4)"
/>

<StarterProject
  title="Projet Scratch de départ"
  type="scratch"
  downloadUrl="/projects/c3-a03-obstacles-depart.sb3"
  filename="c3-a03-obstacles-depart.sb3"
  size="0.5 KB"
  preparedItems={[
    "Lutin Joueur 'Diver' (le plongeur)",
    "Lutin Ennemi 'Crab' (le crabe patrouilleur)",
    "Variable 'Vies' déjà créée et prête à l'emploi",
    "Arrière-plan sous-marin 'Underwater'",
  ]}
/>

---

## 🪜 Les étapes de ton jeu de survie

<StudentStep
  number={1}
  title="Initialise les vies à 3"
  check="Le compteur Vies affiche 3 au début de la partie."
>
  Sur le **Plongeur**, au clic sur le drapeau vert :
  <BlockImage category="variables" text="mettre [Vies v] à 3" />
  <BlockImage category="motion" text="aller à x: -180 y: 0" />
</StudentStep>

<StudentStep
  number={2}
  title="Fais patrouiller le crabe en continu"
  check="Le crabe fait des allers-retours réguliers entre le haut et le bas."
>
  Sur le **Crabe**, ajoute : ```text quand le drapeau vert est cliqué aller à x: (50) y: (120)
  répéter indéfiniment glisser en (1.5) secondes à x: (50) y: (-120) glisser en (1.5) secondes à x:
  (50) y: (120) ```
</StudentStep>

<StudentStep number={3} title="Détecte la collision et perds une vie" check="Le plongeur perd 1 vie à chaque contact et recule au départ.">
  Sur le **Plongeur**, dans la boucle de surveillance :
  ```text
  si <touche le [Crab v] ?> alors
      ajouter (-1) à [Vies v]
      jouer le son [Ouch v]
      aller à x: (-180) y: (0)
      attendre (1) secondes
  ```
</StudentStep>

---

## 🧪 Teste ton jeu

<TryIt expected="Touche le crabe : tes vies passent de 3 à 2, puis à 1. Si tu atteins 0 vies, le jeu s'arrête avec le message Game Over.">
  Essaie de traverser 5 fois sans te faire toucher par le crabe !
</TryIt>

---

## 💡 Indices progressifs

<Hint
  hints={[
    {
      level: 1,
      title: "Indice 1 — Pourquoi je perds 3 vies d'un coup ?",
      content: (
        <p>
          N'oublie pas de téléporter le plongeur immédiatement au départ (
          <code>aller à x: -180 y: 0</code>) et d'ajouter <code>attendre 1 seconde</code> après
          l'impact, sinon il touche le crabe plusieurs fois d'affilée !
        </p>
      ),
    },
    {
      level: 2,
      title: "Indice 2 — La fin de partie à 0 vie",
      content: (
        <p>
          Ajoute dans la boucle :{" "}
          <code>si &lt;(Vies) &lt; 1&gt; alors [dire "GAME OVER" pendant 2s] [stop tout]</code>.
        </p>
      ),
    },
    {
      level: 3,
      title: "Indice 3 — Déplacer le plongeur",
      content: (
        <p>
          Utilise les 4 touches fléchées ou <code>s'orienter vers pointeur de souris</code> +{" "}
          <code>avancer de 5 pas</code>.
        </p>
      ),
    },
  ]}
/>

---

## 🔍 Solution et explications

<ActivitySolution
  title="Voir les scripts complets du joueur et du crabe"
  downloadUrl="/projects/c3-a03-obstacles-corrige.sb3"
  filename="c3-a03-obstacles-corrige.sb3"
  size="0.5 KB"
>

```text
// Sur le Plongeur
[quand le drapeau vert est cliqué]
mettre [Vies v] à 3
aller à x: (-180) y: (0)
montrer

répéter indéfiniment
    si <touche la [flèche droite v] pressée ?> alors [ajouter (8) à x]
    si <touche la [flèche gauche v] pressée ?> alors [ajouter (-8) à x]
    si <touche la [flèche haut v] pressée ?>   alors [ajouter (8) à y]
    si <touche la [flèche bas v] pressée ?>    alors [ajouter (-8) à y]

    si <touche le [Crab v] ?> alors
        ajouter (-1) à [Vies v]
        jouer le son [Oops v]
        aller à x: (-180) y: (0)
        attendre (0.5) secondes

    si <(Vies) < 1> alors
        dire [GAME OVER !] pendant 2 secondes
        stop [tout v]
```

</ActivitySolution>

---

## 🌟 Défi bonus

<BonusChallenge title="Défi bonus : Ajoute un bouclier d'invincibilité temporaire !">
  Ajoute une étoile dorée qui donne 5 secondes d'invincibilité (le crabe ne te fait plus aucun dégât
  pendant 5 secondes) !
</BonusChallenge>

---

<CompletionCheck
  activityId="C3-A03"
  nextActivityUrl="/activites/cycle-3/c3-a04-dessine-un-polygone"
  nextActivityTitle="C3-A04 — Dessine des polygones au stylo"
  cycleUrl="/activites/cycle-3"
/>

<TeacherAccess
  lessonId="C3-S05"
  lessonTitle="Conditions et capteurs"
  lessonUrl="/cycle-3/c3-s05-conditions-et-capteurs"
/>
