# C4-S11 — Conception collaborative

import { AssessmentGrid } from "../../src/components/AssessmentGrid";
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";

<LessonHeader
  id="C4-S11"
  title="Conception logicielle collaborative : Répartition des rôles et intégration"
  cycle="4"
  levels="5e, 4e, 3e"
  duration="55 minutes"
  tool="Scratch"
  grouping="Groupes de 3 ou 4 élèves"
  expressPrep={{
    objective: "Découper un grand projet en sous-modules et travailler en équipe de 3 à 4 élèves.",
    material: "Contrat d'interface et tableau de répartition des rôles.",
    trap: "Incohérence dans les noms de variables globales et de messages partagés.",
    timing: "15' Contrat d'interface • 30' Développement modulaire • 10' Intégration",
  }}
/>

<LearningObjectives
  objectives={[
    "Rédiger un cahier des charges fonctionnel et technique en équipe.",
    "Répartir les responsabilités modulaires : Game Designer, Développeur Physique, Développeur IA/Ennemis, Graphiste/Sons.",
    "Fusionner et intégrer les différents lutins et scripts dans un projet Scratch commun sans conflit.",
  ]}
/>

---

## 🎒 Les 4 rôles au sein de l'équipe

1. **Chef de projet / Game Designer :** Garant des règles du jeu, des variables globales (`Score`, `Etat`, `Temps`) et du respect du planning.
2. **Développeur Joueur & Physique :** Responsable du lutin principal (mouvements, sauts, collisions, contrôles).
3. **Développeur Ennemis & Obstacles :** Responsable de l'intelligence artificielle, des clones et des pièges.
4. **Graphiste & Intégrateur sonore :** Responsable des décors, costumes, musiques et messages d'ambiance.

---

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

### 1. Cadrage et contrat d'interface (15 min)

Avant de coder séparément, l'équipe se met d'accord sur les **conventions de nommage** :

- Quels noms pour les variables partagées ? (`Score_Partie`, `Vies_Restantes`)
- Quels noms pour les messages ? (`start_game`, `degat_recu`, `victoire_finale`)

### 2. Développement modulaire séparé (25 min)

Chaque membre de l'équipe développe et teste son propre lutin sur un projet Scratch distinct.

### 3. Intégration dans le projet maître (15 min)

Technique d'exportation/importation de lutins dans Scratch :

- Clic droit sur un lutin → **Exporter** (télécharge le fichier `.sprite3` avec tous ses costumes, sons et scripts inclus).
- Importer le lutin dans le projet central du groupe.

<TeacherTip title="Gestion des conflits d'intégration">
  Si deux développeurs ont créé une variable portant le même nom mais avec une portée différente,
  montrez-leur comment harmoniser les variables lors de la fusion.
</TeacherTip>

---

## 📊 Grille d'évaluation

<AssessmentGrid
  criteria={[
    {
      label: "Respecte les conventions d'interface définies",
      withHelp: "Modifie les noms des messages sans prévenir ses partenaires",
      autonomous: "Utilise exactement les variables et messages convenus",
      transfer: "Anticipe les besoins d'interface de ses coéquipiers",
    },
    {
      label: "Coopère efficacement et intègre son module",
      withHelp: "Ne réussit pas à exporter/importer son lutin",
      autonomous: "Réalise la fusion des composants et résout les doublons",
      transfer: "Documente l'architecture générale du projet d'équipe",
    },
  ]}
/>


<LessonNavigation
  prevUrl="/cycle-4/c4-s10-tests"
  prevId="C4-S10"
  prevTitle="Plan de tests"
  nextUrl="/cycle-4/c4-s12-projet-final-et-soutenance"
  nextId="C4-S12"
  nextTitle="Soutenance et transition Python"
  cycleUrl="/cycle-4"
  cycleTitle="Vue d'ensemble du Cycle 4"
/>
