Forum Discussion
Tracking the order of buttons being pushed
I have 4 buttons that must be clicked in a specific non-linear order to be correct. A message indicating correct or incorrect is displayed. How do I track the order of buttons being clicked using triggers and variables? Thanks!
- SamHillSuper Hero
Hi Greg, I'm sure there are a few ways to skin this cat, but one way I can think of is to have four variables, they could be type NUMBER and initialised as 0 (zero). For example:
step1
step2
step3
step4
In this example, each button represents a step in making and eating a boiled egg:Button 1: "add oil to the pan"
Button 2: "heat the pan"
Button 3: "crack egg into pan"
Button 4: "cook egg"Then, each of those steps, will be assigned a step order. So, if I select "Cook egg", this will assign a value of "4" to the current step, by checking each of the variables step1, step2, step3, step4 by using the following logic:
On click button "cook egg"
Set variable step1 = 4 if step1 is equal to 0 (zero)
Set variable step2 = 4 if step2 is equal to 0 (zero)
Set variable step3 = 4 if step3 is equal to 0 (zero)
Set variable step4 = 4 if step4 is equal to 0 (zero)
Set state "cook egg" disabled
Each of your buttons would have the same set of triggers, but just updating the number, for example:On click button "add oil to the pan"
Set variable step1 = 1 if step1 is equal to 0 (zero)
Set variable step2 = 1 if step2 is equal to 0 (zero)
Set variable step3 = 1 if step3 is equal to 0 (zero)
Set variable step4 = 1 if step4 is equal to 0 (zero)
Set state "add oil to pan" disabledEnsure that you set the button to disabled when it has been clicked so the user cannot assign the same number to multiple steps
Then, once the user has selected all of the buttons, in the order they chose, you would just need to check the value of the variables and ensure that step1 is equal to 1 and step2 is equal to 2 etc. This could be done using a Submit button that is enabled once Button 1 to 4 is disabled.
Cheers,
Sam - GreggLauer-82c2Community Member
Hey Sam,
Thanks so much for this! I really appreciate it!
Cheers,
Gregg
- WaltHamiltonSuper Hero
have four variables, they could be type NUMBER and initialised as 0 (zero). For example:
step1
step2
step3
step4
In this example, each button represents a step in making and eating a boiled egg:Button 1: "add oil to the pan"
Button 2: "heat the pan"
Button 3: "crack egg into pan"
Button 4: "cook egg"Then, each of those steps, will be assigned a step order. So, if I select "Cook egg", this will assign a value of "4" to the current step, by checking each of the variables step1, step2, step3, step4 by using the following logic:
On click button "cook egg"
Set variable step1 = 4 if step1 is equal to 0 (zero)
Set variable step2 = 4 if step2 is equal to 0 (zero)
Set variable step3 = 4 if step3 is equal to 0 (zero)
Set variable step4 = 4 if step4 is equal to 0 (zero)
Set state "cook egg" disabledI’m not right now in a position to test this, but if they all default to 0, then it seems as if clicking “cook egg” will set all of them to 4, because SL will execute all of the “cook egg” triggers when “cook egg” is clicked. Since they are now all “4”, none of the later clicks will change any of them..
- SamHillSuper Hero
You are right Walt, it would need more logic to determine if any of the variables have yet been set to the current value.
- NedimCommunity Member
If you want to show immediate feedback after each step/button is clicked, you may get away with creating additional variables. It takes only 8 triggers and some good logic. Check my video.
- NedimCommunity Member
It gets more complicated with the Submit button that would appear after all steps/buttons are clicked and disabled. Create a number variable that will track the button clicks. For instance:
1. Set the state of a button to disabled when the user clicks a button (4 triggers)
2. Add value 1 to "clickedSteps" variable when the user clicks a button (4 triggers).
3. Create another number variable that you can use to validate.
Example: add value 1 to "correctStep" variable when the user clicks "heat the pan" button (being the first correct step) if "clickedSteps" variable is equal to 1. Then, add value 1 to "correctStep" when the user clicks "add oil to the pan" button (being the second correct step) if "clickedSteps" variable is equal to 2, etc.
I attached another video showing this option in action. - SamHillSuper Hero
I think this logic would correct the issue.
Set variable step1 = 4
if step1 is equal to 0 (zero)
AND step2 is not equal to 4
AND step3 is not equal to 4
AND step4 is not equal to 4
Set variable step2 = 4
if step2 is equal to 0 (zero)
AND step1 is not equal to 4
AND step3 is not equal to 4
AND step4 is not equal to 4Set variable step3 = 4
if step3 is equal to 0 (zero)
AND step1 is not equal to 4
AND step2 is not equal to 4
AND step4 is not equal to 4Set variable step4 = 4
if step4 is equal to 0 (zero)
AND step1 is not equal to 4
AND step2 is not equal to 4
AND step3 is not equal to 4 - GreggLauer-82c2Community Member
Wow! You guys are great! Thank you!
- WaltHamiltonSuper Hero
There are two big problems here.
The first is addressed by Sam’s posts; not allowing multiple clicks of the same object to mess up the sequence. The other is to allow the learner to change their mind before submitting. Far too many projects, in both the authoring and testing phases, ignore that important possibility.
Here's a method I think may be the simplest way to handle both problems.