# C2-A04 — Aide le chat à sortir du labyrinthe

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="C2-A04"
  title="Aide le chat à sortir du labyrinthe"
  cycle="2"
  level="CE1, CE2"
  duration="40 min"
  tool="Scratch"
  difficulty="Entraînement"
  needsAdult={false}
  mission="Le chat est perdu dans un labyrinthe ! Programme les 4 touches fléchées de ton clavier pour le piloter jusqu'au bol de lait sans traverser les murs noirs."
/>

<PrintableVersion
  pdfColorUrl="/downloads/c2-a04-aide-le-chat-a-sortir.pdf"
  pdfColorName="Fiche mission : Piloter dans le labyrinthe (A4)"
/>

<StarterProject
  title="Projet Scratch de départ"
  type="scratch"
  downloadUrl="/projects/c2-a04-labyrinthe-depart.sb3"
  filename="c2-a04-labyrinthe-depart.sb3"
  size="0.5 KB"
  preparedItems={[
    "Arrière-plan avec les couloirs du labyrinthe tracés en noir",
    "Le chat Scratchy miniaturisé à l'entrée en haut à gauche",
    "Le bol de lait à la sortie en bas à droite",
  ]}
/>

---

## 🪜 Les étapes de pilotage

<StudentStep
  number={1}
  title="Initialise la position de départ du chat"
  check="Le chat démarre toujours à l'entrée (x: -180, y: 140)."
>
  Sous le drapeau vert, place :
  <BlockImage category="motion" text="aller à x: -180 y: 140" />
  <BlockImage category="motion" text="s'orienter à 90" />
</StudentStep>

<StudentStep
  number={2}
  title="Programme les 4 touches de direction"
  check="Les 4 flèches du clavier déplacent le chat dans les 4 directions."
>
  Crée 4 scripts distincts : - **Flèche droite :** `s'orienter à 90` → `avancer de 10 pas` -
  **Flèche gauche :** `s'orienter à -90` → `avancer de 10 pas` - **Flèche haut :** `s'orienter à 0`
  → `avancer de 10 pas` - **Flèche bas :** `s'orienter à 180` → `avancer de 10 pas`
</StudentStep>

<StudentStep number={3} title="Empêche le chat de traverser les murs noirs" check="Si le chat touche la couleur noire, il recule immédiatement.">
  Ajoute une règle de rebond dans une boucle :
  ```text
  quand le drapeau vert est cliqué
  répéter indéfiniment
      si <couleur noire touchée ?> alors
          avancer de (-10) pas
          jouer le son [Boing v]
  ```
</StudentStep>

---

## 🧪 Teste ton jeu

<TryIt expected="Tu peux déplacer le chat avec ton clavier. S'il touche un mur noir, il rebondit en arrière sans pouvoir tricher. Quand il touche le bol de lait, il dit 'Miam !'.">
  Joue une partie complète et essaie de sortir du labyrinthe en moins de 20 secondes !
</TryIt>

---

## 💡 Indices progressifs

<Hint
  hints={[
    {
      level: 1,
      title: "Indice 1 — La tête à l'envers",
      content: (
        <p>
          Pour que le chat ne se retrouve pas la tête en bas quand il va à gauche, ajoute le bloc{" "}
          <code>fixer le sens de rotation [gauche-droite v]</code>.
        </p>
      ),
    },
    {
      level: 2,
      title: "Indice 2 — La couleur exacte du mur",
      content: (
        <p>
          Clique sur le rond de couleur dans le bloc <code>couleur touchée</code>, puis utilise la
          petite pipette pour cliquer directement sur un mur noir de la scène.
        </p>
      ),
    },
    {
      level: 3,
      title: "Indice 3 — La détection de victoire",
      content: (
        <p>
          Ajoute dans la boucle :{" "}
          <code>
            si &lt;touche le [Bol de lait v] ?&gt; alors [dire "Gagné !" pendant 2s] [stop tout]
          </code>
          .
        </p>
      ),
    },
  ]}
/>

---

## 🔍 Solution et explications

<ActivitySolution
  title="Voir les scripts complets du labyrinthe"
  downloadUrl="/projects/c2-a04-labyrinthe-corrige.sb3"
  filename="c2-a04-labyrinthe-corrige.sb3"
  size="0.5 KB"
>

```text
// 1. Initialisation et surveillance des collisions
[quand le drapeau vert est cliqué]
aller à x: (-180) y: (140)
s'orienter à 90
fixer le sens de rotation [gauche-droite v]

répéter indéfiniment
    si <couleur [#000000] touchée ?> alors
        avancer de (-10) pas
    si <touche le [Lait v] ?> alors
        dire [Miam ! Tu as gagné !] pendant 2 secondes
        stop [tout v]

// 2. Contrôles au clavier
[quand la touche [flèche droite v] est pressée] → [s'orienter à 90] → [avancer de 10 pas]
[quand la touche [flèche gauche v] est pressée] → [s'orienter à -90] → [avancer de 10 pas]
[quand la touche [flèche haut v] est pressée] → [s'orienter à 0] → [avancer de 10 pas]
[quand la touche [flèche bas v] est pressée] → [s'orienter à 180] → [avancer de 10 pas]
```

</ActivitySolution>

---

## 🌟 Défi bonus

<BonusChallenge title="Défi bonus : Ajoute un fantôme qui patrouille !">
  Ajoute un petit fantôme qui fait des allers-retours dans un couloir. Si le chat le touche, il
  retourne à la case départ !
</BonusChallenge>

---

<CompletionCheck
  activityId="C2-A04"
  nextActivityUrl="/activites/cycle-2/c2-a05-construis-un-quiz"
  nextActivityTitle="C2-A05 — Construis un mini-quiz"
  cycleUrl="/activites/cycle-2"
/>

<TeacherAccess
  lessonId="C2-S07"
  lessonTitle="Première interaction"
  lessonUrl="/cycle-2/c2-s07-premiere-interaction"
/>
