Accueil Github ↗
Itération 3

Apprentissage — classes de base

Classes parentes et utilitaires partagés par tous les modes cognitifs : AnswerManager (héritage), GameManager_A, paramètres de données et système de miroir élève/prof.

Le dossier Gameplay/Apprentissage/ contient les classes de base et les utilitaires partagés par tous les modes cognitifs (APA, AS). La plupart sont dans un sous-dossier A trier/ — code de l’ancienne architecture.

[!NOTE] Ces classes utilisent un système d’héritage et d’événements pour synchroniser les écrans du professeur et de l’élève sans couplage fort.

Système de réponses — AnswerManager

Hiérarchie d’héritage : AnswerManager (base) → AnswerManager_Keyboard ou AnswerManager_QCM.

AnswerManager.cs — classe parente

Définit le contrat commun pour tout gestionnaire de réponses. N’implémente rien par elle-même (affiche des Debug.Log si les méthodes ne sont pas surchargées).

Méthode à surchargerDescription
VerifyAnswer(int index)Vérifie la réponse selon l’index du bouton cliqué (QCM)
VerifyAnswer(string answer)Vérifie la réponse tapée au clavier
Display(bool display)Affiche ou masque les éléments d’interface
CorrectAnswerAnimation()Déclenche les retours visuels pour une bonne réponse
SetAnswer(QuestionData questionListItem)Prépare le manager avec les données de la question courante

AnswerManager_Keyboard.cs — mode clavier

Compare le texte tapé avec la solution. Nettoie les balises de couleur HTML avant la comparaison pour éviter de compter faux une réponse correcte.

VariableDescription
_correctAnswerSolution attendue pour la question en cours
_isVerifyingAnswerVerrou empêchant de spammer Entrée pendant l’animation
colorGoodAnswer / colorBadAnswerCouleurs de feedback appliquées au fond
MéthodeDescription
VerifyAnswer(string answer)Utilise un Regex pour retirer les balises HTML avant la comparaison
CorrectAnswerAnimation()Son de réussite, fond vert, chrono pour passer à la suite
WrongAnswerAnimation()Fond rouge 1 s, puis affiche la correction en vert avant de continuer

AnswerManager_QCM.cs — mode QCM (ancienne architecture)

Pioche les mauvaises réponses dans le JSON, les mélange avec la bonne, assigne les textes aux boutons, et uniformise la taille de police pour que la réponse la plus longue ne paraisse pas différente.

VariableDescription
_nbrOfAnswerNombre de propositions affichées (défaut : 3)
_correctAnswerIndexIndex du bouton contenant la bonne réponse après mélange
MéthodeDescription
PickAnswer(...)Choisit aléatoirement N-1 fausses réponses, ajoute la solution, mélange et enregistre _correctAnswerIndex
ChangerAnswerText(...)Active l’AutoSizing sur tous les textes, trouve la taille minimale et force cette taille sur tous les boutons
VerifyAnswer(int index)Désactive les boutons, compare l’index cliqué à _correctAnswerIndex, lance l’animation

Système de questions — GameManager de base

GameManager_A.cs — classe parente

Garantit que tous les GameManagers dérivés exposent les mêmes points d’entrée.

Méthode à surchargerDescription
NextQuestion()Passe à la question suivante
StopQuestionning()Interrompt ou met en pause la pose de questions

GameManager_AS.cs — mode clavier interactif

Chef d’orchestre du mode AS Interactif Clavier. Récupère les paramètres, initialise les managers, pilote la barre de progression et gère la boucle jusqu’à atteindre le quota de questions.

MéthodeDescription
Start()Lance asPlaylist, remplit l’interface depuis ActivityDataManager, enregistre “AS-Interactif-Clavier” dans PlayerData
InitializeGameParameter()Affiche les textes du menu, transmet les JSON au QuestionManager, prépare la barre de progression
StartGameButton()Active le jeu, affiche la barre et lance la première question
NextQuestion()Vérifie si le quota est atteint. Si oui : fin de jeu. Sinon : question suivante, tirage élève, avance la barre.
HandleEndGame()Coroutine : stoppe la barre, affiche “Fin de l’activité !” 2 s, retourne au menu

Conteneurs de données — ParameterData

Deux structs/classes sérialisables qui transportent la configuration des menus vers les GameManagers après le chargement de scène.

APA_ParameterData.cs

VariableDescription
jsonDatabaseChemin du fichier JSON des questions
usePresenceActiver le tirage au sort depuis la liste de présence
isDifficultMode de difficulté accru
answerTimeTemps accordé pour répondre (défaut : 7 s)
gameDurationDurée totale de l’activité (défaut : 180 s)
numberOfAnswersShowedNombre de propositions QCM à afficher
modeDeJeuÉnumération du mode de jeu précis
title, subTitle, consigne, rappelTextes affichés dans l’interface

AS_ParameterData.cs

Structure similaire, allégée pour les modes cognitifs sans physique.

VariableDescription
answerTimeTemps imparti (défaut : 7 s)
answerToShowNombre de boutons de réponse (défaut : 3)
gameDurationDurée limite (défaut : 60 s)

Gestion des questions (ancienne architecture)

ScriptRôle
QuestionsData.csModèles sérialisables (QuestionDataList, QuestionData) + méthode Randomize()
JSONFusionner.csUtilitaire statique qui fusionne plusieurs fichiers JSON en une seule liste unifiée
QuestionManager_Apprentissage.csCharge les JSON, mélange, gère l’index courant, déclenche OnQuestionChangeEvent

Mode miroir professeur / élève

Synchronise en temps réel l’écran de l’élève avec celui du prof via des événements.

ScriptRôle
UIManager_Apprentissage.csCentralise les textes (titre, consigne, aide-mémoire). Déclenche OnGameRappelChangeEvent et OnQuestionTextChangeEvent à chaque changement.
StudentManager_APA.csGère la sélection des élèves, instancie leurs avatars, génère une icône 2D via RenderTexture. Envoie OnStudentSelectedEvent.
StudentPanel_APA_UnPourTous.csLe miroir. S’abonne à tous les événements des autres managers dans Awake(). Duplique instantanément toute modification visuelle sur l’écran de l’élève.

Configuration

ScriptRôle
ModeJeu_SO.csScriptableObject liant une valeur d’énumération à son prefab de menu, son titre et sa visibilité (Classe ou Maison)
APA_TypeEnum.csCatégorise si on est en phase d’Apprentissage ou d’Activite physique