# C3-S08 — Messages et scènes

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-S08"
  title="Messages de diffusion et transitions d'arrière-plans"
  cycle="3"
  levels="CM1, CM2, 6e"
  duration="45 à 55 minutes"
  tool="Scratch"
  grouping="Binômes"
  expressPrep={{
    objective: "Changer d'arrière-plan et réinitialiser les lutins lors du passage de niveau.",
    material: "Scène avec 2 décors (Niveau 1, Niveau 2, Écran Victoire).",
    trap: "Les anciens lutins restent affichés sur le nouvel arrière-plan.",
    timing: "10' Gestion scènes • 25' Transition de niveau • 10' Bilan",
  }}
/>

<LearningObjectives
  objectives={[
    "Organiser une application en plusieurs phases (Écran titre → Niveau de jeu → Écran de fin).",
    "Utiliser les messages `envoyer à tous` pour coordonner le changement d'arrière-plan et la visibilité des lutins (`montrer` / `cacher`).",
    "Découvrir la programmation événementielle distribuée.",
  ]}
/>

---

## 🎒 Matériel & Préparation

- 3 arrière-plans dans le projet : `Accueil`, `Jeu`, `Victoire`.
- 1 bouton `Jouer` (lutin cliquable).

---

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

### 1. Les états d'un jeu vidéo (10 min)

Un jeu propre ne démarre pas immédiatement : il possède un menu d'accueil, une phase de jeu, et un écran de victoire ou de défaite.

### 2. Atelier pratique (25 min)

<ExerciseCard title="Mission : Le bouton Commencer et le changement de décor" difficulty="Moyen">
  1. Au démarrage : afficher l'arrière-plan `Accueil`. Le bouton `Jouer` est visible ; le joueur et
  les ennemis sont cachés. 2. Quand on clique sur le bouton `Jouer` : le bouton envoie le message
  `debut_partie` et se cache. 3. À la réception de `debut_partie` : la scène bascule sur `Jeu` et
  les lutins de jeu apparaissent (`montrer`).
</ExerciseCard>

<Correction title="Architecture des scripts par lutin">

```text
// Sur le Bouton "Jouer"
[quand le drapeau vert est cliqué]
montrer
aller à x: (0) y: (-50)

[quand ce lutin est cliqué]
cacher
envoyer à tous [debut_partie v]

// Sur la Scène (Arrière-plan)
[quand le drapeau vert est cliqué]
basculer sur l'arrière-plan [Accueil v]

[quand je reçois [debut_partie v]]
basculer sur l'arrière-plan [Jeu v]

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

[quand je reçois [debut_partie v]]
montrer
aller à x: (-180) y: (0)
```

</Correction>

### 3. Piège classique : Les lutins qui restent affichés sur l'écran d'accueil (10 min)

Règle d'or : chaque lutin doit définir son état au drapeau vert (`montrer` ou `cacher`).

<WatchOut title="Lutins fantômes">
  Si un lutin n'a pas de bloc `cacher` sous le drapeau vert, il restera visible par-dessus l'écran
  titre.
</WatchOut>

---

## 📊 Grille d'évaluation

<AssessmentGrid
  criteria={[
    {
      label: "Gère les transitions d'écrans avec des messages",
      withHelp: "Bascule les décors manuellement en mode conception",
      autonomous: "Utilise l'envoi et la réception de messages nommés",
      transfer: "Ajoute un écran de fin `Game Over` déclenché sur un message `defaite`",
    },
    {
      label: "Initialise la visibilité des lutins (montrer/cacher)",
      withHelp: "Oublie de cacher les éléments du jeu sur l'écran d'accueil",
      autonomous: "Associe correctement `cacher` au drapeau et `montrer` au message",
      transfer: "Gère une séquence complète : Accueil → Jeu → Fin",
    },
  ]}
/>


<LessonNavigation
  prevUrl="/cycle-3/c3-s07-questions-et-operateurs"
  prevId="C3-S07"
  prevTitle="Questions et opérateurs"
  nextUrl="/cycle-3/c3-s09-aleatoire"
  nextId="C3-S09"
  nextTitle="Aléatoire"
  cycleUrl="/cycle-3"
  cycleTitle="Vue d'ensemble du Cycle 3"
/>
