Change the SlideObject Correct Response based on Attribute
Caleb J. Picker
dbzgtfan4ever at gmail.com
Wed Jan 12 21:32:18 UTC 2011
Liwenna,
That is actually quite clever! So I want to see if I understand this. See
below.
On Wednesday, January 12, 2011 3:00:44 AM UTC-8, liwenna wrote:
>
> 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).
So E-Prime does the following:
1) Select a Trial.
2) Collect a response.
3) Compare the response to [cresp] attribute. [cresp] is set to the
"Correct: " property field of the SlideObject.
4) The [cresp] attribute references [cresp[version]].
5) [version] is resolved based on the startup attribute "version"
(c.getattrib("version"), with choices of either 'A' or 'B'.
6) Thus, based on the version, the SlideObject references either [crespa] or
[crespb], within the same List1 Object.
> 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.
So E-Prime will take the remainder of the Ss# divided by 2. If the
remainder is 1, then assign version A. If the remainder is 0, assign
version B.
Again, very clever!
>
> 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".
>
In the past, I've always created two separate Instruction SlideObjects, but
this solution seems less messy and easier to handle. Thanks!
>
> Best,
>
> AW
>
> On Jan 12, 3:02 am, "Caleb J. Picker" <dbzgtf... 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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listserv.linguistlist.org/pipermail/eprime/attachments/20110112/18098778/attachment.htm>
More information about the Eprime
mailing list