Group: Forum Members
Posts: 51,
Visits: 189
|
Moreover, there was always the same feedback presented. How can i make three kinds of feedbacks present alternately? for example, A feedback presents after 1st press, B feedback presents after 2nd press, etc.
|
Group: Administrators
Posts: 13K,
Visits: 104K
|
#1: You can have multiple /responsemessage attributes tied to the same response. #2: You present different feedback images just like you always do: Have multiple items in the <picture> element and select them sequentially or via a variable (a <values> entry):
<picture peerfeedback> / items = ("peerfeedback.jpg", "perfeedback2.jpg", "perfeedback3.jpg") / hposition = 50% / vposition = 50% / select = sequence </picture>
or, more flexibly,
<picture peerfeedback> / items = ("peerfeedback.jpg", "perfeedback2.jpg", "perfeedback3.jpg") / hposition = 50% / vposition = 50% / select = values.feedbackitem </picture>
where you set the feedbackitem value via conditional logic as needed.
#3: If you want to display the feedback after turn-over, you need to display it via the <trial>'s /stimulustimes *before* displaying the cards or via a dedicated feedback <trial> invoked via /branch.
|
Group: Forum Members
Posts: 51,
Visits: 189
|
Thanks for your instruction. I hae another problem, that is, I set timeout to 10s in <trial pickcard1> in CCT_cold, but it is lasting 20s. Could you help me point out what is the problem in my script? Thank you.
|
Group: Administrators
Posts: 13K,
Visits: 104K
|
If you want the trial to have a fixed duration, do <trial pickcard1>
/ stimulusframes = [1=roundinfo1, debuginfo, CR1C1_cold, CR1C2_cold, CR1C3_cold, CR1C4_cold, CR1C5_cold, CR1C6_cold, 00,01,02,03,04,05,06]
/ validresponse = (2,3,4,5,7,8,9)
/ ontrialend = [if(startswith(trial.pickcard1.response,"0"))values.ncards1=substring(trial.pickcard1.response,1,1) else values.ncards1=trial.pickcard1.response]
/ branch = [if(values.gameround1=="8")trial.mean] / ontrialend = [values.totalscore1+=values.score1]
/ responsemessage = (2, number00, 1) / responsemessage = (3, number01, 1) / responsemessage = (4, number02, 1) / responsemessage = (5, number03, 1) / responsemessage = (7, number04, 1) / responsemessage = (8, number05, 1) / responsemessage = (9, number06, 1) / trialduration= 10000
</trial>
instead of
<trial pickcard1>
/ stimulusframes = [1=roundinfo1, debuginfo, CR1C1_cold, CR1C2_cold, CR1C3_cold, CR1C4_cold, CR1C5_cold, CR1C6_cold, 00,01,02,03,04,05,06]
/ validresponse = (2,3,4,5,7,8,9)
/ ontrialend = [if(startswith(trial.pickcard1.response,"0"))values.ncards1=substring(trial.pickcard1.response,1,1) else values.ncards1=trial.pickcard1.response]
/ branch = [if(values.gameround1=="8")trial.mean] / ontrialend = [values.totalscore1+=values.score1]
/ responsemessage = (2, number00, 1) / responsemessage = (3, number01, 1) / responsemessage = (4, number02, 1) / responsemessage = (5, number03, 1) / responsemessage = (7, number04, 1) / responsemessage = (8, number05, 1) / responsemessage = (9, number06, 1) / timeout = 10000 / posttrialpause = trial.pickcard1.timeout-trial.pickcard1.elapsedtime </trial>
Your getcondition trial has also has a fixed duration of 10s:
<trial getcondition1> / ontrialbegin = [values.trialtype1=list.trialtype1.nextvalue; values.score1=0; values.gameround1+=1; values.ncards1=0; reset(list.cardnumber1)] / ontrialbegin = [if(values.trialtype1==1)values.losscards1=list.losscards1.nextvalue else values.losscards1=noreplace(1)] / ontrialbegin = [if(values.trialtype1==1)values.gainamount1=list.gainamount1.nextvalue else values.gainamount1=noreplace(12)] / ontrialbegin = [if(values.trialtype1==1)values.lossamount1=list.lossamount1.nextvalue else values.lossamount1=noreplace(250,750)] / ontrialbegin = [if(values.trialtype1==1)values.score1=40] / ontrialbegin = [if(values.trialtype1==1)values.nsafecards1=6-values.losscards1] / stimulusframes = [1=BlankScreen, roundinfo1]
/ validresponse = (noresponse) / trialduration = 10000 / recorddata = false / branch = [trial.pickcard1] / showmousecursor = false </trial>
That adds up to 20 seconds per round.
|
Group: Forum Members
Posts: 51,
Visits: 189
|
Thanks for your help. In addition, I have another question about BARTY (Youth Balloon Analogue Risk Task). My question is I would like to change trials to 12 rather than 30, so I revise <values> totalballoons to 12, but the program closed after 1 trial (please see attachment).
|
Group: Administrators
Posts: 13K,
Visits: 104K
|
The script works as expected for me. A partial data file is attached. As you can see by looking at the values.ballooncount column, it does not stop after the 1st "trial" (i.e. balloon).
|
Group: Administrators
Posts: 13K,
Visits: 104K
|
I should add that there *is* one condition that will lead to the script terminating *prior* to completing 12 balloons. This is due to a flaw in your programming logic. You've set a fixed /trialduration in <trial choice>. This of course means that a participant can opt to *not respond* at all -- the trial will terminate after 15 seconds anyway. Your /branch attributes, however, don't cover that case. I.e., the script has nowhere to go from there and will terminate (that's what you instructed it to do, intentionally or not).
<trial choice> / ontrialbegin = [values.countchoice += 1]
/ stimulustimes = [0=balloon, rewardmeter,rewardmeter_fill, smallprize, middleprize, bigprize, bonus, fillmeter, pumpballoon, pumpcount, countballoon] / validresponse = (8, 7) /responsemessage = (8,fillmeter_chosen, 200) /responsemessage = (7, pumpballoon_selected, 200)
/ ontrialend = [if (trial.choice.response == "7" && values.countchoice == 1) values.timebefore1stpump = trial.choice.latency ] / ontrialend = [if (trial.choice.response == "7" && values.countchoice > 1) {values.timebtwpumps = trial.choice.latency; values.sum_timebtwpumps += values.timebtwpumps }] / ontrialend = [if (trial.choice.response == "8" && values.countchoice == 1) values.timebeforecollectwithoutpump = trial.choice.latency ] / ontrialend = [if (trial.choice.response == "8" && values.countchoice > 1) values.timebtwlastpumpandcollect = trial.choice.latency ]
/ ontrialend = [if (trial.choice.response == "7") picture.balloon.width += values.balloonsizeincrement] / ontrialend = [if (trial.choice.response == "7")picture.balloon.height += values.balloonsizeincrement] / ontrialend = [if (trial.choice.response == "7")shape.blank.width = picture.balloon.width] / ontrialend = [if (trial.choice.response == "7")shape.blank.height = picture.balloon.height] / ontrialend = [if (trial.choice.response == "7")values.pumpcount += 1]
/ ontrialend = [if (trial.choice.response == "7")values.totalpumpcount += 1] / ontrialend = [if (trial.choice.response == "7" && values.ballooncount < 11) values.totalpumpcount_10 += 1] / ontrialend = [if (trial.choice.response == "7" && values.ballooncount > 10 && values.ballooncount <21 ) values.totalpumpcount_20 += 1] / ontrialend = [if (trial.choice.response == "7" && values.ballooncount > 20 && values.ballooncount <31 ) values.totalpumpcount_30 += 1]
/ ontrialend = [if (trial.choice.response == "7" && values.pumpcount >1) values.mean_timebtwpumps = values.sum_timebtwpumps / (values.pumpcount-1) ]
/ ontrialend = [trial.choice.resetstimulusframes()] / branch = [if (values.pumpcount == values.explosionpoint && trial.choice.response == "7") trial.pop] / branch = [if ( trial.choice.response == "7") {trial.choice}] / branch = [if ( trial.choice.response == "8") trial.collect] / trialduration = 15000
</trial>
So, you ought to specify the *no response* case. Where do you want the script to go from there? To trial.collect? Then do
<trial choice> ... / branch = [if (values.pumpcount == values.explosionpoint && trial.choice.response == "7") trial.pop] / branch = [if ( trial.choice.response == "7") {trial.choice}] / branch = [if ( trial.choice.response == "8" || trial.choice.response == "0") trial.collect] / trialduration = 15000
</trial>
If you want it to do something else, specify that accordingly instead.
|
Group: Forum Members
Posts: 51,
Visits: 189
|
It seems resulting in 15s wait after each press (pumpballoon). If i want that participants can press any times they want to within fixed 15s duration (for a balloon) before they press "collect" or balloon explored. How can I do it?
|
Group: Administrators
Posts: 13K,
Visits: 104K
|
> It seems resulting in 15s wait after each press (pumpballoon).
Yes. That's what you instructed the script to do.
> If i want that participants can press any times they want to within fixed 15s duration (for a balloon) before they press "collect" or > balloon explored. How can I do it?
Create a new <values> entry. Set it to 15000 in <trial init>. Use it in <trial choice>'s /timeout attribute. At the end of <trial choice> subtract the trial's latency from it.
|
Group: Forum Members
Posts: 51,
Visits: 189
|
I set choicetimeout=15000 in <values> and set it (values.choicetimeout) in <trial.init>'s /timeout attribute then subtract the trial's latency from it at the end of <trial choice> (/ timeout = values.choicetimeout-trial.choice.latency). But, it still didn't work (please see attachment).
|