Hi Ben,

If it works, that's the main thing! For now anyway.

Do you plan to reuse the approach for other quizzes in the future? If so, you might consider using a design that doesn't require additional coding (adding and totaling new globals) when the number of questions changes.

Here's one different approach, and I'm sure there are others that would also work.


Assumptions:

- all groups in the stack are answer groups


The concepts:

- at openStack time, put all answer groups into the correct state.

- let all answer data be stored as native properties of the objects used to represent answers. That way you can replicate the group as many times as you like, edit the radio buttons as needed, and know that each group will store its own data correctly.

- At "show score" time, process all properties that contain answer data.


The implementation:

- set the NAMES of all radioButtons to the values you want them to add to the final score: 1, 0, -1. It doesn't matter of you have duplicate button names in a group.

- set the LABELS of the radioButtons to the answers they represent - the actual text of the answer.

- put no code in your card or group scripts.

- put this handler in your stack script (watch line wraps):

on openStack -- or preOpenStack if you like
  -- put all answer groups into correct initial state
  put the number of cds into xMax
  repeat with x = 1 to xMax
    put the groupIDs of cd x into tList
    repeat for each line tGroup in tList
      set the hilitedButtonName of grp id tGroup of cd x \
          to empty
    end repeat
  end repeat
end openStack


- put this handler in your "show score" button:

on mouseUp
  -- init (not really needed - just my habit)
  put zero into tFinalScore

  -- collect all answer data
  put the number of cds into xMax
  repeat with x = 1 to xMax
    put the groupIDs of cd x into tList
    repeat for each line tGroup in tList
      add (the hilitedButtonName of grp id tGroup of cd x) \
          to tFinalScore
    end repeat
  end repeat

  -- display score
  put tFinalScore into fld "score"
end mouseUp


I didn't test any of this, so there may be a bug or two; but I think it would give you optimum flexibility in the long term.

HTH -
Phil Davis


Ben Bock wrote:
I have a quiz that has 6 items per page, with 8 pages. The items are
grouped radio buttons.

When the "NEXT PAGE" btn is pressed, a card script is triggered:

global b1, b2, b3, b4, b5, b6

--I  used globals for holding the value of each item, 1 = correct, -1
= wrong, 0 = not answered

on closeCard

if the hilitedbutton of group "item1" = 1 then put "1" into b1

if the hilitedbutton of group "item1" = 2 then put "-1" into b1

if the hilitedbutton of group "item1" = 0 then put "0" into b1

--repeated for all items



at the end there is a field with a "show score" btn:

global b1,b2,b3,b4,b5,b6.....b45

--I have 45 items that each have a global variable

on mouseUp

put the sum (b1,b2,b3,b4,b5,b6...b45) into fld "b score"

end mouseUp



I've spent a good while getting it ready, and it works.  But...are
there hidden dangers in my chosen approach?

Thanks,

Ben _______________________________________________ use-revolution
mailing list [email protected] Please visit this url to
subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution


_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to