Intro
Bit puzzled by the title, and perhaps baffled by the fact that I produce a second article this week :-)
In this thread on the user forum, I got another challenge, quote: " If I have an assessment simulation with questions and a learner must attain 80%, is it possible to set up something that stops the assessment if the learner has no chance of passing? " Normally the user wants to navigate the learner outside of the assessment to review the course. In this post I will only explain the setup to get the user immediately to the score slide, when it gets impossible for him to reach the passing score. The action in this case is to advice to Retake the Quiz, but of course it would also be possible to navigate the user to other slides, as long as they are inside the quiz scope. The concept of quiz scope I explained already several times, and showed yesterday in another article.
Example
I tried to work out an example with simple Question slides that would be valid in most circumstances: total score is not fixed, number of questions is free, score/question can be different. In this screenshot of the Advanced Interactions Panel you see that I have 6 question slides, all with a different score and the total score is 25points. Quiz settings require at least 20 points (80%) to pass. Play with this quiz please. You have 3 possible attempts on Quiz Level. Review is not available (is possible, but in this case would have complicated the advanced actions and wanted to provide a 'simple' solution).
Slides - events - objects
On the score slide, an initially invisible polygon with text Message has been added that will pop up if the user is taken to this score slide without having been able to finish all the questions.
In this work flow I only use On Enter slide events:
- Slide Quest1 (first question slide) triggers an initializing standard advanced action EnterOne
- Slides Quest2-Quest6 trigger the same conditional advanced action EnterSlide
- Slide Score triggers a conditional advanced action EnterScore
Variables
Some Quizzing system variables are important, and beware: this scenario is only possible for Captivate 5.5 because in that version those variables are updated after each Question submit. It is also possible with 5.0 but bit more cumbersome. Let me know if you want me to explain
- cpQuizInfoTotalQuizPoints stores the maximum possible score (25points in example) - fixed value in CP5/5.5 and same as cpQuizInfoTotalProjectPoints
- cpQuizInfoPointsPerQuestionSlide stores the score attributed to the present question, will get its value when the question slide gets to its first frame, but has still the value of the previous question during the On Enter event
- cpQuizInfoPointsscored stores the result obtained by the trainee, will get its value in CP5.5 after the Submit action on a Question slide, so still has the value of the previous question when entering a question slide; but in CP5.0 this variable is not updated after each question! Workaround there is to add the score of cpQuizInfoLastSlidePointScored to a user variable to calculate the present score after each question.
- cpQuizInfoQuizPassPoints the number of points specified to pass the quiz
I created three user variables to do some calculations:
- v_MaxUntil: will get the maximum score that could have been acquired if the user had answered correctly every question up till now
- v_MaxRemain: will store the maximum score that can be acquired with the remaining questions; sum of v_MaxUntil and v_MaxRemain will be equal to the total score cpQuizInfoTotalQuizPoints
- v_Rest (sorry for the Dutch): maximum score that user could have if he answers every future question correctly, this will be compared with pass score
Advanced actions
EnterOne triggered on entering the first question slide
This is an uncomplicated standard advanced action that will reset the 3 user variables:
EnterSlide triggered on entering all question slides except the first
This conditional action has two decisions:
Maths: is a mimicked standard action (condition is always correct, so the THEN statements will always be executed)
- increments v_MaxUntil with the maximum score that was attributed to the previous quesiton, cpQuizInfoPointsPerQuestionSlide
- calculates from v_MaxUntil and cpQuizInfoTotalQuizPoints the value to be stored in v_MaxRemain
- calculates v_Rest by adding v_MaxRemain to the points already acquired, stored in cpQuizInfoPointsscored
CheckBranch: checks if the trainee is still able to get a passing score by comparing v_Rest to the system variable cpQuizInfoQuizPassPoints. If pass is no longer possible there is an immediate jump to the score slide. Both for THEN and ELSE there is a Continue statement (only statement for ELSE).
Note: perhaps you are wondering why I do not execute something similar after the last question? Reason is that, even if the user fails to pass by answering incorrectly the last question, he will always get to the score slide and see the Message.
EnterScore triggered on entering the score slide
This conditional action has only one decision, same as the second decision for EnterSlide. If the user was navigated to this slide or didn't pass (in case of answering all questions) the special Message will pop up.
Conclusion
This scenario, with the advanced actions that are versatile, can be used whatever the number of questions or the values of the individual scores/total score/passing score is well suited to be stored in a template. Just a suggestion :-)