APA — Mode QCM
Activité Physiquement Actif : trois sous-modes (Architecte, Interactif, Vidéo) dans une seule scène, système de questions QCM partagé.
Le mode QCM est le mode principal de l’APA. Trois sous-modes partagent la même scène Unity — SelectMode.cs active le bon GameManager au chargement selon ActivityDataManager.Mode.
Sous-modes
| Mode | Description |
|---|---|
| Architecte | Un élève est désigné “architecte” : il choisit 4 mouvements, la classe les exécute, puis il répond aux questions QCM. |
| Interactif (Professeur) | L’enseignant note les réponses orales des élèves tirés au sort pendant les cycles physiques. |
| Interactif (Élève) | Version adaptée pour jouer seul à la maison : 30 s d’effort (2 × APMV de 15 s), puis 30 s de questions sans phase APL. |
| Vidéo | Mode passif, aucun clic pendant le jeu — voir APA — Mode Vidéo. |
SelectMode.cs — routeur de scène
Lit ActivityDataManager.Mode au chargement et active uniquement le GameObject du mode correspondant, en laissant les autres désactivés.
| Champ | Type | Description |
|---|---|---|
modeVideoGo | GameObject | Conteneur du mode Vidéo |
modeInteractifGo | GameObject | Mode Interactif Professeur |
modeInteractifEleveGo | GameObject | Mode Interactif Élève |
modeArchitecteGo | GameObject | Mode Architecte |
Mode Architecte — GameManager
Boucle de jeu : un élève est tiré au sort (l’architecte), il choisit 4 mouvements via DialogVO2Panel, la classe exécute la routine (AP comptabilisée), puis l’architecte répond aux questions QCM. Le cycle se répète pour le nombre d’architectes configuré.
| Variable | Description |
|---|---|
currentEleve | L’élève sélectionné — utilisé pour ses cosmétiques et son nom |
_animationsEleveList | Les 4 mouvements choisis par l’architecte |
vo2Panel | Panneau de dialogue interactif |
isAPMVPhase / isQuestionPhase | Indiquent l’étape courante |
| Méthode | Description |
|---|---|
EleveIsSelected(Student student) | Active l’avatar avec les bons cosmétiques et lance le dialogue |
StartModeArchitecte_Coroutine() | Boucle principale : 4 mouvements (20 s effort / 10 s repos), envoi AP, boucle QCM |
GetMouvement(...) | Pioche des animations aléatoires pour les proposer sur le panneau |
EndActivityBeforeTheEnd() | Calcule le temps écoulé (Time.time - _startTime) pour sauvegarder les secondes d’AP déjà effectuées si on quitte en cours de route |
DialogVO2Panel.cs
Panneau interactif guidant l’architecte : d’abord pour choisir ses 4 mouvements, puis pour répondre aux questions.
| Méthode | Description |
|---|---|
PrintDialog01() à PrintDialog08() | Machine à états : chaque méthode correspond à une étape du dialogue (choix APMV 1, choix APL 1, etc.) |
OnButtonAnimationClick(int index) | Envoie le mouvement cliqué au GameManager |
SendQuestionsToVo2Panel(...) | Recycle l’interface pour afficher les choix de réponses QCM au lieu des mouvements |
Mode Interactif — GameManager
Boucle : chrono de 30 s, appel d’un mouvement, affichage du nom de l’élève tiré au sort (si présence activée), puis attente des réponses.
| Méthode | Description |
|---|---|
StartModeInteractif_Coroutine() | Boucle principale : chrono, mouvement, tirage au sort, QCM |
SetMouvement(...) | Pioche le prochain mouvement, l’envoie aux personnages, met à jour l’UI et l’audio |
ChatWithProgressBar(int indexSegment) | Met la barre en pause quand un segment physique se termine, le temps que la classe réponde |
EndActivityBeforeTheEnd() | Calcule le temps écoulé pour sauvegarder les secondes d’AP avant de quitter |
Système QCM — QuestionManager et QuestionDisplayer
Ces deux scripts fonctionnent en tandem : le Manager gère les données, le Displayer gère l’affichage.
QuestionManager.cs
Gère la base de données du QCM. Charge les JSON, les convertit en listes, distribue les questions dans un ordre aléatoire sans répétition.
Structure JSON attendue :
Question:question(string),solution(string),reponsesFausses(List)QuestionList:Items(List deQuestion)
| Méthode | Description |
|---|---|
SetJsonAndLoadQuestions(params TextAsset[] jsonFiles) | Charge un ou plusieurs JSON, combine toutes les questions et mélange la liste |
GetNextQuestion() | Retourne la prochaine question (avec fausses réponses mélangées). Remélange tout si la liste est épuisée. |
QuestionDisplayer.cs
Gère tout ce que le joueur voit et entend pour le QCM : textes, boutons, coloration et réactions du robot.
| Événement | Description |
|---|---|
OnAnswerRevealed | Déclenché quand une réponse est validée. Renvoie true si correcte, false sinon. |
| Méthode | Description |
|---|---|
DisplayQuestion(Question, int numberOfAnswers, bool isInteractable) | Affiche la question, mélange et assigne les réponses aux boutons, masque les boutons inutilisés |
OnAnswerSelected(string selectedAnswer, Button selectedButton) | Vérifie la réponse : vert + son victoire + robot content si juste ; rouge + son erreur + robot surpris si faux |
RevealCorrectAnswer(bool shouldPlaySound) | Colore en vert le bouton contenant la bonne réponse. Utilisé après une erreur ou en mode Vidéo. |
ResetButtons(bool isInteractable) | Remet les boutons en bleu, gère leur interactivité pour la prochaine question |
SetBoutonManagerActive(bool isActive) | Active/désactive la saisie clavier physique (touches 1, 2, 3) |