This question recently appeared on the forum (thread):
"I'd like to customize the results page at the end of a quiz to display the numbers 1 to 20 (representing the 20 questions in the quiz) and indicate if each question was answered correctly or incorrectly."
Although I posted an answer, the user never returned to check it. Since I have spent some time to work out that solution, I also discovered that it could be very useful in two situations that are often mentioned as failing in the normal Captivate design:
- To show the user an overview of answers on a test with Knowledge Check slides: which anwsers were correct/incorrect? If you are not sure about the differences between KC slides and normal quiz slides, have a look at this article.
- To create a Review slide, where the learner would see the same information for normal quiz slides. Captivate has a great Review feature for quiz slides (not for KC slides) but it has some shortcomings. It will not only show the answers by the learner but also the correct answers. Moreover, clicking the Review button will cancel all remaining attempts on Quiz level for apparent reasons. With the solution I propose the user would not see the correct answers, only which questions were answered correctly or incorrectly, and the Retake attempts would still be available.
The work flow is based on a couple of simple shared actions, use of multistate objects (for the feedback checkmarks) and some advanced actions.
Watch this embedded movie or use any device to open this link (it is a rescalable, non-responsive HTML5 project).
You will first see a test with two Knowledge Check slides, followed by a 'Review' slide. You will be able to retake this test, or to continue.
Second part is a realy quiz, with 5 question slides. Question slides are followed by a Review slide. In Quiz Preferences I provided 3 attempts. When the attempts are exhausted or you succeeded passing the test, the Next button (was formerly a Retake button) will take you to the official Score slide.
Checkmark - multistate object
The checkmarks, both on the Review slide for the KC question and for the real quiz, are shapes with 3 custom states:
Normal state: shape is invisible because Alpha for Fill and Stroke for Width are both set to 0.
Correct state: shape is filled with a PNG representing a green tick symbol. This can of course be all you want: text, text + image, text + image + audio. I kept it simple.
Wrong state: shape is filled with a PNG that is the Cross symbol.
Here is a screenshot of the Object styles for the checkmark:
The checkmarks are labeled: Check_KC1 - Check_KC2 for the KC slides, and Check_1, Check_2.... Check_5 for the Quiz slides. The numbers make it easier to select them by filtering in the Parameters dialog box, because they are used in the shared actions.
Retake button Quiz Review - multistate object
That button on the Review slide for the Quiz, is used to start a new attempt because the user will not see the Score slide. I had to reproduce he functionality of that Score slide, where the Retake button automatically disappears in two situations: either the learner has passed the quiz, or the Quiz attempts are exhausted. I solved that by adding a custom state to the Retake button, where the label changes to 'Next'. To have a non-confusing Rollover and Down state, which would be valid for both the Retake and Next button, I used the text '>>'. This is the Object state panel of this button, type Transparent button like the Quiz buttons and buttons on the Score slide: The advanced action (see below) EnterReview will take care of switchnng beteen the Normal and Passed state.
The Review slide for the KC questions doesn't need that type of button. It has two buttons: Retake for those who want to retry the KC test (answers are always reset for KC slides when leaving them) and a Continue button.
KC/Question Slides - variable v_KC
I changed the default setup to only one attempt for the KC-slides (default = Infinite attempts). That change made the Last Attempt event availalbe. Contrary to Quiz slides the results of the KC-slides are not stored in exposed system variable. I wanted to show a 'trophy' on the Review slide to learners who correctly anwered all KC-questions. To track the correct answers, I created a user variable, labeled v_KC which starts with a default value of 0 and is incremented for each correct answer. For the same reason, the shared action triggered by the Success event is different from the one used for normal quiz slides. If you import the shared action to another project, the variable will automatically be created.
Quiz slides kept the default setup: only one attempt allowed.
Events for Actions
On KC-slides Success event (Quiz Properties) is used for Shared Action 'CorrectAnswerKC'
On KC-slides Last Attempt event (Quiz Properties) is used for Shared Action 'WrongAnswer'
ReviewKC slide On Enter event triggers Advanced Action 'EnterReviewKC'
Continue button Success event (on ReviewKC slide) is set to simple action 'Go to Next Slide'
Retake button Success event (on ReviewKC slide) is set to simple action 'Jump to slide KC1' (first KC slide)
On Question slides Success event (Quiz Properties) is used for Shared Action 'CorrectAnswer'
On Question slides Last Attempt event (Quiz Properties) is used for Shared Action 'WrongAnswer'
Review slide On Enter event triggers Advanced Action 'EnterReview'
Retake button Success event (on Review slide) is set to simple action 'Go to Next Slide'
Score Slide On Enter event triggers Advanced Action 'EnterScore'
WrongAnswer triggered by Last Attempt event (KC slides and Quiz slides)
It is a very simple action with two commands: changing the state of the associated checkmark to the Wrong state and going to the next slide. There are two parameters: the checkmark (which is different for each slides) and the state. Although the state always has the same name (Wrong), there is no way to turn it into a 'fixed' parameter (one of my feature requesnts). Here is the action with filled in parameters
I like the way it is possible to track shared actions in the Library, look at the Usage panel for this action/ You see that this shared action is used both for the two KC slides and for the 5 Quiz slides.
CorrectAnswer triggered by Success event Quiz slides
It is a similar action, now showing the state Correct in the first command:
CorrectAnswerKC triggered by Success event KC slides
I used the CorrectAnswer from Quiz slides as template to add an extra command that will increment the variable v_KC.
EnterReviewKC triggered by the On Enter event of the ReviewKC slide
This is a simple conditional action, to decide if the trophy will show up or not.
EnterReview triggered by the On Enter event of the Review slide
This conditional action has two decisions. The first decision will change the state of the Retake button to have a Next button if the quiz has been passed or the Quiz attempts are exhausted. The second decision is about showing an image if the quiz has been passed. It also shows or hides the text mentioning the number of the present attempt.
EnterScore triggered by the On Enter event of the Score slide
This is the 'trick'. To have the functionality of a Retake button on the previous slide, which is the Review slide, the playhead visits to the score slide, but will immediately jump back to the first question slide. All quizzing system variables are reset in that case. Only when all attempts are exhausted or the learner passed the quiz, will the score slide become visible to the learner.
More is possible...
Several enhancements are possible based on this approach:
- You can have multiple review slides, if there is not enough space on one slide
- You can have a review side after a chapter which has some question slides or KC slides; in that case you'll have to tweak the advanced actions; if you want to track different bunches of KC slides you can either reuse the variable v_KC or use several variables. In the last scenario you'll have to turn the variable in the shared action into a real parameter.
- I used a simple checkmark to indicate correct/wrong answers. It is not limited to that: in custom states you can also have audio, text etc...
More ideas? Suggestions?