Forums - La Blocothèque - Affichage Score quiz (en cours de partie)

Mots-clés : 

Ce sujet a 8 réponses, 4 participants et a été mis à jour par   Noémie DELPHIN, il y a 1 mois. This post has been viewed 160 times

  • Noémie DELPHIN  | Posté le 23 août 2021 à 15 h 58 min

    Bonjour,
    J’ai une question sur le score et sauf erreur je n’ai pas trouvé mon cas de figure.

    Je créé une grosse formation avec plusieurs compétences listées dans les paramètres, pour ce score pas de souci, il s’affiche en fin de partie.
    J’ai également des scores pour des parties qui ne sont pas des compétences.

    Exemple:
    Compétence « PARLER » = Score PARLER à la fin OK.
    Quiz 1 = 5 questions = je mets un point à chaque bonne réponse dans le bloc quiz sur la compétence PARLER
    Quiz 2 = IDEM

    A la fin, j’ai un score sur 10. Jusqu’ici tout va bien.

    Maintenant j’aimerai avoir un score global pour le quiz 1 et un score pour le quiz 2.
    Je sais qu’on peut utiliser une variable « scorequiz1 = 0 » et DANS chaque bloc réponse je mets dans « Flag » un nom (Q1) ==> verif FLAG ==> si true = Variable « scorequiz1 = scorequiz1 + 1.

    Y a t-il une variable pour calculer les points de chaque questions de manière moins fastidieuse ? J’ai déjà préparé plein de Quiz (au moins 500question) et je ne me vois pas rajouter et modifier les blocs flag et variable à chaque fois.

    De plus, je souhaiterai, qu’à la fin de chaque quiz le score s’affiche (j’imagine que je dois mettre un message) mais il faut rajouter un bloc condition en plus?

    Merci de votre aide !
    Noémie.

    Pascal THÉRY  | Posté le 24 août 2021 à 10 h 03 min

    Bonjour Noémie,
    pour afficher le résultat en fin de quiz, je positionne un bloc « message » avec {variable} dans le message. Cela permet également de tester en cours de développement. Pourquoi un bloc condition?

    Par contre je ne comprends pas bien votre première préoccupation.
    Bien à vous

    Nicolas ROSSARD  | Posté le 24 août 2021 à 11 h 56 min

    Bonjour Noémie,

    Si j’ai bien compris, l’idée c’est de cumuler des scores de certaines compétences.
    Dans l’onglet Paramètres, là où tu peux définir tes compétences, il est possible d’y attribuer une variable.
    Je vais créer 2 compétences CompA et CompB et je vais leur attribuer une variable scoreA et scoreB.

    Voici un exemple pour illustrer mes propos :
    Attribution des variables

    Dans mon scénario, j’attribue des points à ces 2 compétences.
    Ensuite, je place un bloc Variables dans lequel je vais créer une variable qui me permettra d’avoir mon score cumulé pour ces 2 compétences spécifiquement.

    Exemple :
    Calcul du cumul des scores

    Petite parenthèse pour préciser que si tu souhaites avoir le score global toutes compétences confondues, il existe une variable interne à VTS qui permet de le récupérer directement : _score
    Tu trouveras à cette adresse, l’ensemble des variables internes : https://docs.seriousfactory.com/documentation/vts_5/variables_list

    Ensuite, il ne te reste plus qu’à afficher la variable de ton score cumulé, dans notre cas scoreG.
    Pour ce faire, tu dois placer ta variable entre accolades dans un champ texte.
    Par exemple dans le bloc Message :
    Ecriture dans le bloc Message

    et voici le résultat :
    Résultat du bloc Message

    En espérant t’avoir aidé !

    Si tu as des questions, n’hésites pas !
    Bonne journée,

    Noémie DELPHIN  | Posté le 25 août 2021 à 14 h 50 min

    Bonjour,

    Merci pour vos messages, pour la partie Affichage du score dans le message, cela va bien me servir.

    Pour le reste, j’ai déjà des variables Scores dans chacune de mes compétences. Mais je souhaite avec des scores qui ne sont pas reliés aux compétences + en faire le calcul final.
    J’ai énormément de modules et dans chaque module il y a beaucoup de mini-jeux. Je souhaite avoir un système de scoring efficace pour ces minijeux (mais pas pour les compétences).

    EX: COMP1 = SCORE1 = 5 modules
    et COMP2= SCORE2 = 5 modules
    Comme sur votre photo, les points seront calculés et affichés en fin de partie (ou dans un message si je décide de le mettre)

    Mais dans COMP1 = je créé 5 modules qui comprennent chacun 5 Quiz de 10 Questions. Dans chaque bloc je rajoute 1 point sur la comp1. Le total sera compté à la fin.
    Je souhaite pouvoir ajouter des points mais seulement pou chaque Quiz.
    Exemple de message: tu as obtenu 5/10 au Quiz 1 et 8/10 au quiz 2.

    La question c’est comment ajouter ces points pour chaque question, sans que cela soit lié aux compétences?

    Jusqu’ici je fais comme ceci:
    Variable Scorequiz1 = 0 puis question1 puis flag(bonneréponse) puis Variable scorequiz = scorequiz1 + 1 puis question2…Etc
    Si mauvaise réponse, il n’y a rien après = Question2

    après les 10 questions = bloc condition « Si scorequiz1 == 10 » == message BRAVO
    « Si scorequiz1 > 5 » ==Message = Tu peux mieux faire

    C’est très laborieux de mettre flag / score + 1 à chaque question et cela ne me permet pas de faire un calcul résultat pour les 10 questions.

    Pour faire simple: comment calculer le résultat d’un quiz sans que cela soit relié aux compétences?

    Merci beaucoup !
    Noémie.

    Julian Fremaux  | Posté le 25 août 2021 à 17 h 26 min

    Bonjour Noémie.

    Il y a plusieurs pistes à suivre pour simplifier tout cela. Je pense notamment à :

    – Utiliser une seule variable pour tous les types de quizz. Si vos catégories ne se mélangent pas et que les 10 quizz s’enchainent, il n’y a pas vraiment besoin d’avoir scoreQuiz1 et scoreQuiz2 alors qu’une seule variable scoreQuiz remise à 0 à chaque changement de groupe fait le même travail. Ainsi, il est plus facile de « dupliquer » le comportement flag / incrémentation du score dont vous parler.

    – Utiliser le bloc Séquence ou Aléatoire (en mode « Chaque sortie une seule fois »). De même façon, cela permet de fusionner la partie calcul du score en une seule partie qui sera appelée 10 fois de suite, à la suite de chaque quizz. Voilà un exemple pour 3 quizzs

    L’idée derrière ces deux idées, est de fusionner tout ce qui est fusionnable pour avoir le moins possible de choses à modifier dans les blocs. Cela demande parfois de concevoir tout un modèle de données un peu complexe et nous pourrions vous aider à le mettre en place si besoin. Typiquement, le module « Qui Veut Répondre Aux Questions ? » était basé sur ce principe. Il s’agit d’une suite de QCM à 4 réponses possibles et le projet est décomposé en deux parties. Une partie qui définit la liste des questions ainsi que de toutes les réponses possibles, en indiquant laquelle est la bonne ; et la partie « graphique » qui affichait les questions avec des zones cliquables. Les questions étaient alors piochées aléatoirement dans une liste de blocs Variables :

    Cette image peut faire peur au premier abord mais chaque bloc Variables correspond à une question, et définit les variables qui permettront de l’afficher par les formulations {maVariable} dans des Zones Cliquables un peu plus tard dans le graphe :

    Pour vous aider, vous pouvez parcourir ce projet dont le vtp est disponible ici :
    https://filesharing.seriousfactory.com/index.php/s/iS87wxttwvDmlK1
    Il est bien commenté pour mieux vous y retrouver afin d’appréhender le principe.

    Il est également possible de passer par un Dictionnaire et un système d’ID mais encore une fois, il faut bien concevoir la chose dès le début pour dissocier la partie mise en place des données (les questions), la sélection de ces questions ainsi que leur affichage.

    Enfin, vous pouvez également passer par des « templates ». Des blocs Quizz préremplis de vos variables que vous dupliqueriez à chaque fois. Le problème étant que si une modification doit alors être apportée quelque part, alors il faudra changer toutes les duplications, ce qui est effectivement bien fastidieux. C’est pourquoi fusionner tout ce qui est fusionnable est une excellente bonne pratique.

    En espérant que cela ait pu vous donner des pistes.
    Julian

    Noémie DELPHIN  | Posté le 25 août 2021 à 21 h 01 min

    Bonjour Julian,

    Merci pour vos réponses, effectivement pour le premier schéma, j’ai un système similaire mais avec des formulaires, je n’ai pas pensé à l’appliquer. Du coup ça me parle.
    Y a t-il une possibilité de remplacer le bloc condition par quelques choses qui nous donne le score exact? (au lieu de mettre scorequiz = 1, score quiz = 2..etc); une formule ou autre?
    Autre question, si j’utilise un bloc aléatoire (dans l’optique d’une rejouabilité), la sortie « calcul du score / conditions », sort toujours en dernier? Pas de risque qu’elle se mette entre 2 quiz?

    Qu’avez-vous mis dans le groupe score/incrémentation. (car vous avez relié Reponse A + B).

    Voici 2 photo que j’ai sur un memory.
    Merci de vos réponses !
    Noémie.

    scoring

    Noémie DELPHIN  | Posté le 26 août 2021 à 10 h 35 min

    Im1

    • Cette réponse a été modifiée le il y a 1 mois et 3 semaines par   Noémie DELPHIN.
    Julian Fremaux  | Posté le 26 août 2021 à 14 h 08 min

    – Remplacer le bloc Condition par le score exact ?
    Je ne comprend pas exactement la question mais si les blocs en sortie de ces différentes conditions ne sont que des formulations de texte différentes, sachez que dans les accolades, toute expression variable peut être incluse. On peut donc y utiliser notamment la fonction condition(flag, valeur si vrai, valeur si faux) afin de conditionner l’affichage de phrases ou non. Par exemple, ceci ne va afficher la phrase que si l’apprenant a eu un score de 2 :
    {condition(scoreQuiz==2, "Vous avez eu 2 points", "")}

    Il n’existe pas encore de bloc qui permette de « déclencher la sortie numéro X », X étant une valeur de variable.

    – Bloc aléatoire
    Lorsque ce bloc est configuré avec l’option « Chaque sortie une seule fois », il possède une sortie supplémentaire (la première tout en haut). Cette sortie est déclenchée si toutes les autres ont déjà été appelées une fois. Attention par contre, si vous repassez ensuite à nouveau par ce bloc, ce sera toujours cette sortie qui sera déclenchée. Il faut utiliser l’appel à la fonction variable resetAllBlocks() qui va réinitialiser le bloc et autoriser à nouveau la sortie vers les quizz. Par contre, cette fonction réinitialise tous les blocs Aléatoire, Compteur, Séquence ainsi que les choix déjà réalisés dans les Quizz ou les Choix de Phrase, ce qui vous intéresse ici.

    – Contenu du groupe score/incrémentation.
    Il y a plusieurs possibilités au contenu de ce groupe. Soit les réponses des Quizz ont un flag associé et celui-ci est vérifié avec un bloc Condition, en les comparant à une bonne réponse définie en amont. On peut également considérer que la réponse A est toujours bonne et que les quizz sont en « Mélanger les Choix » (si réponse unique). Il est enfin possible aussi de définir deux entrées à ce groupe, une dans le cas ou la réponse est bonne et l’autre dans le cas où la réponse est fausse. Dans ce cas, chaque sortie de quizz devra être reliée à la bonne entrée du groupe.
    Encore une fois, cela dépend de la conception et il y a souvent plusieurs façons de faire.

    En espérant avoir pu vous aider.
    Julian

    Noémie DELPHIN  | Posté le 17 septembre 2021 à 10 h 58 min

    Merci pour vos réponses, j’ai opté pour l’affichage dans le message, je ne savais pas qu’on pouvait mettre autant de choses.