Change the SlideObject Correct Response based on Attribute

liwenna liwenna at gmail.com
Wed Jan 12 11:00:44 UTC 2011


Hi Caleb,

Thank's for your explanation!

I'd like to add another way to implement pretty much the same thing in
a different way for those that for some reason or another want to cut
on their use of inlines.

http://images.redial.net/crespbasedonversion.jpg

See the image linked above.
This list contains (among others) the attributes cresp, crespa, and
crespb . The slideobject should be refered to the attribute cresp for
the correctresponse (in the slide object properties fill in [cresp]
for correct response). As one can see cresp is then referred further
to [cresp[version]] . The attribute version can have either value A or
B, so that [cresp[version]] actually means either [crespA] or [crespB]
and thus for cresp the value of either attribute crespa or crespb will
be implemented. The attribute "version" can be a startup
variable(create this in the menu that is found under the e-prime logo
at the top of your experiment tree). Another option, for a simple odd/
even randomisation, is to add an inline with the following two lines
at the start of your experiment:

if c.getattrib ("subject") mod 2 = 1 then c.setattrib "version", "A"
if c.getattrib ("subject") mod 2 = 0 then c.setattrib "version", "B"

This inline will assign value A to the attribute "version" for all odd
subject numbers and version B to all even subject numbers so that you
don't have to manually assign a version at start up.

In addition: when using this the way I did (randomizing the response
buttons, i.e. button 1 for answer a and 2 for answer b in half the
participants and vice versa in the other half) you'll also need to
adjust the instructions based on the assigned version. This is easily
done by creating two states in your instructionslide(s). One state
should be named A and the other state B and contain the according
instructions. In the instruction slide properties fill in [version] in
the box activestate and the program will show either state A or state
B according to the value of "version".

Best,

AW

On Jan 12, 3:02 am, "Caleb J. Picker" <dbzgtfan4e... at gmail.com> wrote:
> Hello all,
>
> I would just like to post a solution to this problem because I had
> difficulty finding it.
>
> Just to clarify, the problem is this.  You have a slide object that collects
> input responses (e.g. TestSlide) with allowable response 'F' and 'J'.  Based
> on your List object (this presumably houses your stimuli and the correct
> responses), you have an attribute for correct responses (let's say
> "CorrectResp").  However, now let's say you have two similar experiments
> with two different Correct Responses.  In your List object, you might then
> have two attributes (CorrectResp1 and CorrectResp2).  Each attribute
> corresponds to a different experiment (say, Expt1 and Expt2).
>
> In an inline (placed before the TestSlide runs), you need to change your
> 'Correct:' property of your TestSlide based upon which experiment is
> selected at startup.  One solution I came up with is as follows:
>
> Select Case c.getattrib("Group")
>     Case "Expt1"
>         TestSlide.InputMasks.Add Keyboard.CreateInputMask("fj", *
> c.GetAttrib("CorrectResp1"*),_
>         CLng(TestSlide.Duration), CLng("1"), ebEndResponseActionTerminate,
> CLogical("Yes"),_
>         "", "", "ResponseMode:All ProcessBackspace:Yes")
>     Case "Expt2"
>         TestSlide.InputMasks.Add Keyboard.CreateInputMask("fj", *
> c.GetAttrib("CorrectResp2"*),_
>         CLng(TestSlide.Duration), CLng("1"), ebEndResponseActionTerminate,
> CLogical("Yes"),_
>         "", "", "ResponseMode:All ProcessBackspace:Yes")
>     Case Else
>         MsgBox "Set correct response Error!"
> End Select
>
> The only way I found out how to do to this was by inputing an attribute
> within the 'Correct: ' field on the TestSlide object.  I then generated the
> script, and searched for the line where E-Prime 'sets up' the Slide Object.
>  From my understanding, what this line actually does is create allowable
> responses (in this case a keyboard with keys 'f' and 'j'), correct
> attribute, sets the duration, and then sets up the rest of the properties.
>  This list is pretty much all of the properties for any given slide object.
>  The only way to change these properties directly is by using this inline,
> figuring out which property is which, and then making the adjustments
> accordingly.
>
> There is also another way.  Instead of creating two attributes, you can have
> one "CorrectResp" attribute (this way, you will not need to use the above
> inline).  Then you will need an inline that says the following:
>
> dim y as integer
>
> For y = 1 to List1.Size
> Select Case c.getattrib ("Group")
>     Case "Expt1"
>         If List1.getattrib("Stimulus") = "Property1" then
>             List1.setattrib(y, "CorrectResp"), "F"
>         Elseif List1.getattrib("Stimulus")="Property2" then
>             List1.setattrib(y, "CorrectResp")="J"
>         Else
>             MsgBox "Set Correct Response Error Expt 1"
>
> Then just repeat this for Case "Expt2"
>
> You just need to place this before you run your testing procedure and set
> the TestSlide 'Correct: ' Property field to [CorrectResp].
>
> I hope this helps.  If anyone else has more elegant solutions than this
> (this is admittedly basic), please feel free to post.
>
> Caleb J. Picker

-- 
You received this message because you are subscribed to the Google Groups "E-Prime" group.
To post to this group, send email to e-prime at googlegroups.com.
To unsubscribe from this group, send email to e-prime+unsubscribe at googlegroups.com.
For more options, visit this group at http://groups.google.com/group/e-prime?hl=en.



More information about the Eprime mailing list