# C3-S05 — Conditions et capteurs

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-S05"
  title="Conditions et capteurs de détection"
  cycle="3"
  levels="CM1, CM2, 6e"
  duration="45 à 55 minutes"
  tool="Scratch"
  grouping="Binômes"
  expressPrep={{
    objective: "Tester en continu une collision avec [si <touche lutin ?> alors].",
    material: "Lutin joueur + lutin obstacle mobile.",
    trap: "Oublier d'englober le bloc [si] dans un [répéter indéfiniment].",
    timing: "10' Capteurs Scratch • 25' Jeu d'esquive • 10' Débogage",
  }}
  studentUrl="/activites/cycle-3/c3-a03-evite-les-obstacles"
  studentId="C3-A03"
/>

<LearningObjectives
  objectives={[
    "Comprendre le fonctionnement d'un test logique booléen (VRAI ou FAUX).",
    "Utiliser les blocs capteurs hexagonaux de détection (toucher un lutin, une couleur ou le pointeur de souris).",
    "Encapsuler la condition `si ... alors` à l'intérieur d'une boucle `répéter indéfiniment` pour une surveillance permanente.",
  ]}
/>

---

## 🎒 Matériel & Préparation

- 2 lutins : un joueur contrôlable et un obstacle/danger (ex : un requin ou un fantôme).

---

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

### 1. Le test logique en français (10 min)

_« Si le feu est rouge, alors je m'arrête, sinon j'avance. »_  
En Scratch, les conditions ont une forme hexagonale `<...>` et s'insèrent dans le bloc `si <...> alors`.

### 2. Atelier pratique : Détection de collision (25 min)

<ExerciseCard title="Mission : Le poisson et le requin" difficulty="Moyen">
  - Le poisson suit le pointeur de la souris. - Le requin patrouille sur la scène. - Si le poisson
  touche le requin → le poisson dit *« Aïe ! »*, change de costume et retourne à sa position de
  départ.
</ExerciseCard>

<Correction title="Architecture de la boucle de surveillance">

```text
[quand le drapeau vert est cliqué]
aller à x: (-180) y: (0)
montrer

répéter indéfiniment
    s'orienter vers [pointeur de souris v]
    avancer de 4 pas
    si <touche le [Requin v] ?> alors
        dire [Aïe !] pendant 1 secondes
        aller à x: (-180) y: (0)
```

</Correction>

### 3. L'erreur numéro 1 : La condition sans boucle infinie (10 min)

Si on écrit `[quand drapeau cliqué] -> [si touche requin alors...]` **sans** boucle infinie, Scratch ne vérifie la condition qu'une seule fraction de seconde au tout début du jeu, puis s'arrête !  
Pour surveiller en continu pendant toute la partie, la condition doit être **dans** un `répéter indéfiniment`.

<WatchOut title="Condition orpheline">
  Toujours poser la question aux élèves : « Ton bloc Si vérifie-t-il pendant TOUTE la partie ou
  seulement au début ? ».
</WatchOut>

---

## 📊 Grille d'évaluation

<AssessmentGrid
  criteria={[
    {
      label: "Intègre la condition dans une boucle de surveillance",
      withHelp: "Place le bloc `si` sans boucle infinie",
      autonomous: "Englobe le test dans un `répéter indéfiniment`",
      transfer: "Gère 2 conditions simultanées (toucher un bonus et toucher un piège)",
    },
    {
      label: "Choisit le capteur adapté",
      withHelp: "Confond `couleur touchée` et `lutin touché`",
      autonomous: "Sélectionne le bon lutin cible dans la liste déroulante",
      transfer: "Utilise la pipette de sélection pour échantillonner une couleur exacte",
    },
  ]}
/>


<LessonNavigation
  prevUrl="/cycle-3/c3-s04-coordonnees"
  prevId="C3-S04"
  prevTitle="Coordonnées (X, Y)"
  nextUrl="/cycle-3/c3-s06-variables"
  nextId="C3-S06"
  nextTitle="Variables"
  cycleUrl="/cycle-3"
  cycleTitle="Vue d'ensemble du Cycle 3"
/>
