forcing to choose only two object by click

liwenna liwenna at gmail.com
Fri Mar 2 11:54:21 UTC 2012


Hello Güzin,

I more or less agree with David. Nonetheless I tried to conjure up
something. This is written without e-prime, so it probably won't work
right away and perhaps it will not work at all... but it might get you
going again and point towards the solution to your problem.

I've rewriten your code. You need to make a few new things elsewhere
in the program too.
On the usertab of the script window (bottom lef of the script window)
you need to declare a variable called 'clicknumber', that will keep
track of whether the number of clicks made. This is needed to store
two consecutive answers separately. Write " dim clicknumber as integer
" on the usertab to declare it.

At the begining of the script the variable clicknumber is increased by
1 so that it keeps cound of the clicks (it's 0+1 = 1 after click1, 1+1
=2 after click 2 etc). Then a large part of your own script follows.

I started modifying again following the part where the chechbox image
is changes.

Here I create two new variables Checkodd and Checkeven. In the next
part clicknumber is checked to see whether the 'current click' (click
number) is an odd or an even number (based on mod 2, see explanations
elsewhere). If the clicknumber is odd, the given response is stored in
the variable 'CheckOdd', if it's even it is stored under 'CheckEven'.

For the next part of the script you'll need to make two attributes (in
your lists) called correcresponse1 and correctresponse2. These should
contain the right answers (i.e. check4 and check5). If the answer that
is currently given and the previous given answer (both stored under
checkodd and checkeven) are both found in correctresponse1 and
correctresponse2, the program is send to a label called endlabel (goto
endlabel, first clicknumber, checkodd and checkeven are reset for the
next trial). You should make this label after the inline script. If
the two last answers are not the answers in corectresponse1 and
correctresponse2, then the program is send back to the label called
ChooseAgain.

The script doesn't store answers yet, nor does it keep an accuracy
count. You could still add those if you need them (or store
clicknumber to have a count of the total answers given before the
correct answers were given).

Hope this helps.

Best,

AW

'AW note: clickbnumber should be declared on the usertab, it keeps
count of the number of clicks made
clicknumber = clicknumber + 1

'existing script

'Designate "theState" as the Default Slide State, which is the
current, ActiveState
'on the Slide object "Stimulus"
Dim theState as SlideState
Set theState = Stimulus.States("Default")

'Variable for holding the name of the sub-object clicked by the
subject.
Dim strHit As String

'Variable for holding the subject's response information.
Dim theMouseResponseData As MouseResponseData

'Was a response made?
If Stimulus.InputMasks.Responses.Count > 0 Then

        Set theMouseResponseData =
CMouseResponseData(Stimulus.InputMasks.Responses(1))

        strHit = theState.HitTest(theMouseResponseData.CursorX,
theMouseResponseData.CursorY)

        'If a check box was clicked, check or uncheck it based on its
current
state.
        If Mid(strHit, 1, 5) = "Check" Then

                'Store the number of the checkbox clicked.


                nCheck = CInt(Mid(strHit, 6, 1))
                Debug.Print nCheck

                If c.GetAttrib("Check" & nCheck & "Image") =
"checkempty.bmp" Then

                 c.SetAttrib "Check" & nCheck & "Image",
"checkfull.bmp"


                End If

'AW note: CheckEven and CheckOdd will contain the answers (checkx)
given on the last odd and the last even (thus the last two) clicks
dim CheckEven as string
dim CheckOdd as string

if clicknumber mod 2 = 1 then checkodd = ("Check" & nCheck")
if clicknumber mod 2 = 0 then checkeven = ("Check" &
nCheck")


'AW note: compare the answers in CheckOdd and CheckEven to the correct
answers stored in the attributes correctresponse1 and
'correctresponse1. If both are found, then resent the check and click
variables and terminate by goto endlabel
' else goto the label called ChooseAgain

If checkodd = c.getattrib ("correctresponse1") and checkeven =
c.getattrib (correctresponse2") then
checkodd = empty
checkeven = empty
clicknumber = 0
goto endlabel

If checkodd = c.getattrib ("correctresponse2") and checkeven =
c.getattrib (correctresponse1") then
checkeven = empty
clicknumber = 0
goto endlabel

else

Goto ChooseAgain

end if

On 1 mrt, 18:35, David McFarlane <mcfar... at msu.edu> wrote:
> Güzin,
>
> I think the reason you do not get a response to
> this question is because it is just too complex
> for this type of forum.  The short answer is, to
> do what you want will take some careful, complex,
> and intricate coding, which you will need to
> figure out for yourself based on all the working
> elements that you already have on hand (or hire
> someone else to do it, if you could find such a
> person).  To take an analogy, if this were a
> music writing forum, you might reasonably ask how
> to transpose "Mary Had a Little Lamb" from
> C-major to G-major.  But aking how to rewrite
> Beethoven's "Moonlight Sonata" in the style of
> Rachmaninoff might not get a response.
>
> But PST Web Support sometimes helps out with
> complex projects like this, so you might try
> contacting them athttp://support.pstnet.com/e%2Dprime/support/login.asp.
>
> ---
> David McFarlane
> E-Prime training
> online:  http://psychology.msu.edu/Workshops_Courses/eprime.aspx
> Twitter:  @EPrimeMaster (twitter.com/EPrimeMaster)
>
> At 3/1/2012 07:09 AM Thursday, you wrote:
>
> >Hi, I have written before the same problem but I could not get any
> >reply neither in pst forum (http://support.pstnet.com/forum/
> >Topic5781-23-1.aspx) nor in googlegroups.  I think I wrote a bit
> >complicated with my limited English. I am writing again i a simple
> >way.
>
> >I have 8 checkboxes on a slide (checkboxes are an empty square image
> >on the slide and named, Check1, Check2….. Check8).
> >Participants must choose two of them for each trial by clicking on the
> >checkboxes. When they click on a checkbox, it fill with black to show
> >as it is checked. There are two correct checkboxes out of eight for
> >each trial. But I want that participant must choose only two of the
> >checkboxes and not being allowed to choose a third one. If they click
> >on a third one their last selection will be disappear and replace with
> >third click.
> >How can I limit checking checkboxes to two while they could change
> >their selections without exceeding two limit? My code is below;
>
> >'Designate "theState" as the Default Slide State, which is the
> >current, ActiveState
> >'on the Slide object "Stimulus"
> >Dim theState as SlideState
> >Set theState = Stimulus.States("Default")
>
> >'Variable for holding the name of the sub-object clicked by the
> >subject.
> >Dim strHit As String
>
> >'Variable for holding the subject's response information.
> >Dim theMouseResponseData As MouseResponseData
>
> >'Was a response made?
> >If Stimulus.InputMasks.Responses.Count > 0 Then
>
> >         Set theMouseResponseData =
> >CMouseResponseData(Stimulus.InputMasks.Responses(1))
>
> >         strHit = theState.HitTest(theMouseResponseData.CursorX,
> >theMouseResponseData.CursorY)
>
> >         'If a check box was clicked, check or uncheck it based on its current
> >state.
> >         If Mid(strHit, 1, 5) = "Check" Then
>
> >                 'Store the number of the checkbox clicked.
> >                 Dim nCheck As Integer
> >                 nCheck = CInt(Mid(strHit, 6, 1))
> >                 Debug.Print nCheck
>
> >                 If c.GetAttrib("Check" & nCheck
> > & "Image") = "checkempty.bmp" Then
>
> >                         c.SetAttrib "Check" &
> > nCheck & "Image", "checkfull.bmp"
>
> >                                 'If a box has
> > been checked, log the RT and RESP.
>
> >                                 Else
>
> >                         c.SetAttrib "Check" &
> > nCheck & "Image", "checkempty.bmp"
> >                         c.Setattrib "Check" & nCheck & "RESP", ""
>
> >                 End If
> >                                 End If
>
> >                         if c.GetAttrib("Check4Image")="checkfull.bmp" and
> >c.GetAttrib("Check5Image")="checkfull.bmp" and
> >c.GetAttrib("Check1Image")="checkempty.bmp" and
> >c.GetAttrib("Check2Image")="checkempty.bmp" and
> >c.GetAttrib("Check3Image")="checkempty.bmp" and
> >c.GetAttrib("Check6Image")="checkempty.bmp" and
> >c.GetAttrib("Check7Image")="checkempty.bmp" and
> >c.GetAttrib("Check8Image")="checkempty.bmp" Then
> >                      'if strHit = "Check5" and strHit = "Check4" Then
> >                                 Stimulus.ACC = 1
>
> >                         else Stimulus.ACC = 0
> >                         End if
> >         If strHit <> "Next" Then
> >                 Goto ChooseAgain
>
> >         End If
>
> >End If
>
> >Thank you
> >Güzin

-- 
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