Link score to attempts in Custom questions

Intro

This time a Flemish colleague asked me to help with a Quiz that is very close to my original profession: I'm a civil engineer and this Quiz was about introducting students to technical drawing techniques, more specific, interpretation of Isometric Projection. Back to my roots!

In a recent article I talked about 'Beating the system', trying to make advanced actions easy to manage, to avoid tracking endless numbers of variables by reusing them intelligently (Be a Captivate Ecologist). And of course, I use my favourite shape buttons, either on Master slide or timed for the rest of the project to avoid having a multitude of objects and actions. Last year I presented a webinar about that subject, you can find the recording link in this blog post

Use case description

In the example, which you can watch below, there are two types of custom questions:

  1. Student has to type in a number, after screening a drawing. Originally colleague used a Short Answer Question. This was replaced by a custom question, that uses a Text Entry Box. And for 6.1 users: I limited the entry to the box to numbers only. All questions except the last use this type.
  2. Student has to identify an element in the drawing by clicking on it. Originall a hotspot question, in the custom question I used a click box. This type is used here only in the last question.

For all questions 3 attempts were provided, but the obtained score depends on the attempt:

  1. Correct on first atttempt: score = 3 points
  2. Correct on second attempt: score = 2 points
  3. Correct on last attempt: score = 1 point

Even with the new quizzing features in Captivate 6 this is not possible out of the box. That is the reason why I choose for Custom questions. The score has not to be reported to a LMS, it is more of knowledge check, but the score will be shown to the student at the end.

Colleague also asked to make it possible (for one sequence of questions) for the student to click on a button to have some Help. In this case it was a one-slide Powerpoint animation. I converted the animation to SWF and used it that way.

Moreover colleague wanted to be able to change the passing score. It was quite a challenge but fun as well.

Example

Play with this movie to have an idea about the result. I didn't change the used drawings, nor the imported animation. You'll have to answer 10 questions...

Slides - Master slides

I used the Blank theme, main master slide has a gradient background. For the questions I created 3 master slides, one for each drawing (because they can be used for all questions concerning that drawing).

The first sequence of questions has a Help button with a tooltip. Both button and tooltip are shapes on the master slide Quest1. The shape button navigates to slide 2, which is the Help-slide with the animation. The help-slide will not be visited before the questions, for that sake I configured the button on the Intro-slide to jump immediately to the 3rd slide, which is the first question slide.

On the Help-slide you have a similar duo of shapes: a button and a tooltip (rollover shape). The button gets the user back to Last Slide Visited, to the question slide from which he asked for help.

Objects Timed for Rest of Project

On the first question slide, a lot of objects are timed for the rest of the project because they are reused all the time. Because I needed to be able to control their visibility, they couldn't be put on the master slide. Here is a screenshot of the timeline of that slide, the Text Entry Box was selected and its Properties are visible as well (watch the associated variable v_answer):

From bottom to top you see these objects:

Group Question1: has a text Quest1 and the not to be validated TEBAnswer1. Those objects are timed for the rest of the slide. These objects are visible in output.

Group TxtContainers: with the three possible text containers TxtSuccess, TxtWrong and TxtRetry. Initially they are not visible. I grouped them because it is easier to hide them all together in an advanced action. Those objects are timed for the rest of the project since they can be reused on each question slide. This will also make it possible to use less advanced actions, since they keep always the same name, ID.

Group GrpNext: has a shape button NextBt and a text container TextClickNext; the goal of the text is not only to tell the user what to do, but also to cover up the TEB's, so that they cannot be clicked another time to get the same score again. Why did I choose this instead of disabling the TEB? To disable the TEB a separate advanced action would have been needed, since each TEB has a different name. Whereas my 'cover' workaround allows me to use the same advanced action for every TEB. This group is initially invisible, and timed for the rest of the project.

Total: the banner with the obtained score, visible and timed for the rest of the project.

 

Variable ecology

In this use case I didn't use any system variable, and also deleted all default variables associated with the multiple Text Entry Boxes (9 of them, one for each of the first 9 question slides). I ended up with using only 7 variables. To prove it, here is a screenshot of the variables dialog box:

v_PassScore: will store the minimum percentage required to pass; I assigned a value on entering the first slide, the intro slide, with a simple action. Remember that the colleague requested to be able to change the value.

v_answer: will store the value entered in the TEB's, and is reused on each slide. This means that you have to associate this variable to each TEB to replace the default variable that normally gets the same name as the TEB (Text_Entry_Box_n). A good check: try to delete those default variables in the variable dialog box:  if removing a variable is denied, that means that you forgot to replace it by v_answer. If you are using version 6.1, you can use 'More Options' in the General accordion to limit the entry to Numbers.

v_attempts: reused on each question slide with a default value of 3, will be decremented with each attempt and also serve as question score.

v_correct: will be reused on each question slide, and populated with the correct answer on entering that question slide

v_max: starts with value = 0, not really necessary, but for lazy mathematicians, will be populated with the maximum score that can be obtained. You could also replace it by a literal, a number...

v_perc: starts with value = 0, will be used only on entering the score slide to calculate the percentage based on v_score and v_max

v_score: starts with value = 0, will store the score obtained, and will be incremented after each correct answer, taking into account the number of attempts used for the answer.

Events and Advanced actions

On Enter Slide events

are used both for the Question slides and for the Score slide.
  • Question slides: used to reset and hide what is needed, to calculate the new value of v_max and (only for the TEB-slides) to populate the variable v_answer with the correct number for the TEB-based questions. Here is an example of such a standard advanced action (for the second Question slide). Only the first statement has to be adapted for each TEB-slide.

For the click box slide (hotspot), this action is little bit different, no need to populate v_answer, but the click box has to be enabled (labeled Spot1):

  • Score slide: here a conditional action is needed which has two decisions; the first (Always) will hide unnecessary objects that were displayed for the rest of the project, and will calculate the percentage to be stored in v_perc
    Second decision (Checkup) will check the percentage and show the appropriate group (text + banner) based on that checkup:

     

Success event for Text Entry Boxes  triggers 'NotValidated'

All TEB's, which are not validated and have only one attempt will trigger the same advanced action, the conditional action NotValidated that has three decisions. The sequence of the decisions is important!

  1. Fout (Dutch for 'Wrong'): this situation occurs when the student has tried to answer 3 times, and didn't succeed to give the correct answer. 

    The correct feedback will appear, the group with the Next button and the coverup text will be made visible and the answer is reset (not really necessary, will also be reset on entering the next slide).
     
  2. Opnieuw (Dutch for Retry): will occur if the user has already given at least once an incorrect answer but the attempts are not yet exhausted.
     Correct feedback is made visible, variable v_attempts is decremented and v_answer is reset to 0. The last statement is meant to rewind the playhead to appear again before the pausing point of the TEB in its active part so that the student can answer again (see post about micro-navigation)
      
  3. Correct: whenever the student gives a correct answer. 
    Besides showing the correct feedback and the group GrpNext, you see that I calculated the new score that is immediately shown in the Total shape. Because of the sequence, the number of attempts left at that moment is identical to the score left for the slide.

Success event for Click Box triggers HotspotCorrect

For the hotspot question, I used both the Success and the Failure events for the click box (Spot1). Success event triggers this standard action, that is similar to the last decision Correct in the TEB-action; but here I disabled the click box to avoid the user clicking on it again :

Failure event for Click Box triggers HotspotNOK

The other situations, covered by the two decisions Fout and Opnieuw in the conditional action for the TEB's are now done by this conditional action attached to the Failure event. It has two decisions (since the third is now done by the Success action):

  • Fout (Wrong): if attempts are exhausted and the answer is wrong; very similar to the decision that is labeled the same way for the TEB's, no answer has to be checked here, only the attempts.
     
  • Opnieuw (Retry): after an incorrect answer, when there is at least one attempt left:

 

Conclusion

Pretty long article, I'm sorry. But wanted to offer this use case because of the the way I reused both variables and advanced actions. If I had plunged in without any preparation (or with an old version of Captivate) this probably would have led to a multitude of variables and actions.

Would really appreciate any comment, feedback.