Different exam versions, randomly assigned
Sep 21, 2013
Hi, folks - this one is a doozy. I'm doing a sales certification exam for my sales field and channel partners. This is the culmination of 12 different product modules, and a passing grade will be required to do some other cool stuff. Thing is...I know sales guys. Unless they are new, they will not go through the educational modules...the will just try to take the test. So I want to make the exam itself educational. Here's what I want to do:
I have created 3 different versions of a 25 question test - test A, B or C. All are about the same difficulty. When a sales person comes in to take an exam, they should be assigned on of the three versions randomly (so they can't go through the exams together...they are sneaky). If they do not pass the exam, they can review what they missed and where to go for more information...so they can review weak points in their skill set. Then they can retake the test, but I need to be sure that they get one of the other 2 versions; that is, if they took test B first, they will get A or C if they fail B and want to retake.
2 questions: How do I ensure that they are randomly given one of the three tests AND how do ensure if they come back to retake the exam they do not get the same test? Any help appreciated!!!
11 Replies
I had a similar issue and I solved it by Execute Java Script. When you are on the slide before exam (A, B or C) you should draw one number from 1 to 3 (i'm not sure we're able to do it using only SL, I used JS and it works perfectly). And when you click next button, you check which number is drawn and according to this number you go to exam A, B and C. You have to know which exam is running and when you failed this exam, you should draw the next quiz without the quiz which was drawn. I think it is simply to implementation. If you still have problem I'm able to do it with you step by step or send the project with solving.
Hi Roslyn,
This is called a "Random Grab Bag". The process is a bit tricky, but here are the steps that will do this.
1) Create a text variable, say pool and assign the value "1 2 3".
2) Create a number variable, say test with initial value of 0.
3) On the slide that precedes the test(s) create a layer called redirector.
4) On that layer, create 3 triggers :
Go to slide "Test 1" when timeline starts if value of test==1
Go to slide "Test 2" when timeline starts if value of test==2
Go to slide "Test 3" when timeline starts if value of test==3
5) On the base layer of that slide,create a javascript trigger on the button and paste the following code :
var player = GetPlayer();
var myPool = player.GetVar("pool").split(" ");
var randomKey = Math.floor(Math.random() * myPool.length);
var randomValue = myPool.splice(randomKey,1);
var strToPool = myPool.join(" ");
player.SetVar("pool",strToPool);
player.SetVar("test",randomValue);
6) On the base layer of that slide, create a slide trigger to go to layer redirector when value of variable test changes.
7) At the end of each test, add a trigger to a button that will take the learner back to the slide that precedes the tests.
Additionally, you can create another trigger on the button that uses JS to change the value of Pool to No More Tests! if value of Pool=={blank}, and place this right below the JS trigger.
Hope this helps,
Alex
Thanks Alex!
Hi, Alex - thanks for the response...I got pulled out of the office, but I'm back now, and I have loads of stupid follow on questions.
1. Should all of the tests be in the same project? Right now, each test is a completely separate Storyline project...this looks like each is a scene in the same project.
2. My other questions are almost too muddled to ask...are there tutorials anywhere that will help me with this? rrr
Hi Roslyn,
You may want to also PM Alex as I'm not certain he's subscribed to this thread to get notifications.
In regards to the questions you've asked, it sounds like it should all be one Storyline project if you'd like them to interact with each other.
In regards to tutorials, there is a basic tutorial here on working with variables, although what Alex is suggesting is a bit more involved.
Hi everyone,
Apologies for the delay.
Yes, they should all be in the same story.
Alex
No apologies necessary Alex, and thanks for chiming back in!
Guys, I am so sorry to bug you, but the more I learn about variables, the more lost I am. Here is where I start getting confused, and it's completely because of my lack of knowledge on how to use this awesome tool:
My questions are in CAPS to delineate them from your instructions. For which I thank you and am close to naming my children in honor of.
On the base layer of that slide,create a javascript trigger on the button and paste the following code :
var player = GetPlayer();
var myPool = player.GetVar("pool").split(" ");
var randomKey = Math.floor(Math.random() * myPool.length);
var randomValue = myPool.splice(randomKey,1);
var strToPool = myPool.join(" ");
player.SetVar("pool",strToPool);
player.SetVar("test",randomValue);
ASSUME THIS IS THE BASE LAYER OF THE REDIRECTOR SLIDE? WHAT BUTTON ARE YOU TALKING ABOUT??
6) On the base layer of that slide, create a slide trigger to go to layer redirector when value of variable test changes.
THE BASE LAYER OF THE REDIRECTOR SLIDE? WHERE ALL THIS JS IS LIVING?
7) At the end of each test, add a trigger to a button that will take the learner back to the slide that precedes the tests.
OK, SO THAT WOULD LIVE ON THE RESULTS SLIDE...COULD CALL IT TRY AGAIN. bUT WHAT IF THE USER QUITS OUT OF THE SESSION AND COMES BACK LATER (AFTER STUDYING)?
Additionally, you can create another trigger on the button that uses JS to change the value of Pool to No More Tests! if value of Pool=={blank}, and place this right below the JS trigger.
ON WHICH BUTTON? SORRY DUDE...I'm BAFFLED BY THE BUTTONS!
Thank you for any help... rrr
Hey, Alex - please let me know the answer here if you can. Support will not take this call, so i'm literally on my own, with a very high profile issue that I need to solve ASAP. HELP! ignorantly yours - Roz
Hi Roslyn,
Please find my answers in bold, right below your questions.
Ok, lets see :
Pay attention to the initial value of the Pool variable. It should be "1 2 3" (including the spaces, excluding the quotes). It will not work otherwise!
Good luck and let us know how it goes!
Alex
Thanks Alex for helping out Roslyn here!
This discussion is closed. You can start a new discussion or contact Articulate Support.