/** Mental rotation after Cooper & Shepard (1978). A rotated letter is shown either in original or in mirror inverted form. The subject's task is to decide whether the letter is original or in its mirror image version. Response is expected from the left or right mouse button. */
Experiment(){
Context(){
AssignmentGroup(){
ExperimentName = lang2("Mental Rotation (Cooper & Shepard, 1978)", "Mentale Rotation (Cooper & Shepard, 1978)");
DataFileTrialFormat = "%SubjectCode% %TrialCounter% %Trial.TextImage.Text% %Trial.TextImage.Mirror% %Trial.TextImage.ResponseCode% %Trial.Feedback.Response% %Trial.TextImage.Rotation% %Trial.TextImage.ResponseTime%";
TrialCounter = 1;
SubjectCode = "pxlab";
RepeatErrorTrials = 1;
new ErrorCode = 1;
}
Session(){
Instruction(){
Text = lang2(["Mental Rotation after Cooper & Shepard (1978)", " ", "In every trial we show you a single letter which may be rotated and may be a mirror image of its original form.", "Your task is to decide as fast as you can whether it is normal or is a mirror image.", "Please press the left mouse button if the letter is normal and press the right mouse button if a mirror image is shown.", " ", "Press any key now to start the experiment!"], ["Mentale Rotation nach Cooper & Shepard (1978)", " ", "Es wird Ihnen in jedem Durchgang ein Buchstabe dargeboten, der gedreht und möglicherweise gespiegelt ist.", "Ihre Aufgabe besteht darin, so schnell wie möglich zu entscheiden, ob der Buchstabe gespiegelt ist oder nicht.", "Ist er der Buchstabe normal, drücken Sie die linke Maustaste. Ist der Buchstabe gespiegelt, so drücken Sie die rechte Maustaste.", " ", "Zum Starten drücken Sie bitte eine beliebige Taste!"]);
}
}
SessionEnd(){
SessionEndMessage(){
}
}
Block( BlockCounter, StoreData, TrialFactor){
BlockStartMessage(){
}
}
BlockEnd(){
BlockEndMessage(){
}
}
Trial( TrialCounter, TextImage.Text, TextImage.Rotation, TextImage.Mirror, Feedback.CorrectCode, Feedback.Response, TextImage.ResponseTime){
ClearScreen:wait1(){
Duration = 300;
Timer = de.pxlab.pxl.TimerCodes.CLOCK_TIMER;
}
FixationMark(){
Timer = de.pxlab.pxl.TimerCodes.CLOCK_TIMER;
Duration = 400;
}
ClearScreen:wait2(){
Duration = 300;
Timer = de.pxlab.pxl.TimerCodes.CLOCK_TIMER;
}
TextImage(){
Timer = de.pxlab.pxl.TimerCodes.LIMITED_RESPONSE_TIMER;
Duration = 10000;
ResponseSet = [de.pxlab.pxl.KeyCodes.LEFT_BUTTON, de.pxlab.pxl.KeyCodes.RIGHT_BUTTON];
FontSize = 256;
}
Feedback(){
ResponseParameter = "Trial.TextImage.ResponseCode";
Evaluation = de.pxlab.pxl.EvaluationCodes.COMPARE_CODE;
Visible = 0;
Duration = 0;
}
}
// Command line assignments
AssignmentGroup();
}
Factors(){
IndependentFactor( Rotation, Trial.TextImage.Rotation){
FactorLevel( 0, 0);
FactorLevel( 30, 30);
FactorLevel( 60, 60);
FactorLevel( 90, 90);
FactorLevel( 120, 120);
FactorLevel( 150, 150);
FactorLevel( 180, 180);
}
IndependentFactor( Mirror, Trial.TextImage.Mirror){
FactorLevel( 0, 0);
FactorLevel( 1, 1);
}
DependentFactor( ErrorCode, Trial.Feedback.Response);
DependentFactor( ResponseTime, Trial.TextImage.ResponseTime);
}
Procedure(){
Session(){
Block( 1, 0, 1){
Trial( ?, "R", <0, 30, 60, 90, 120, 150, 180>, 0, 0, ?, ?);
Trial( ?, "R", <0, 30, 60, 90, 120, 150, 180>, 1, 1, ?, ?);
Trial( ?, "L", <0, 30, 60, 90, 120, 150, 180>, 0, 0, ?, ?);
Trial( ?, "L", <0, 30, 60, 90, 120, 150, 180>, 1, 1, ?, ?);
Trial( ?, "F", <0, 30, 60, 90, 120, 150, 180>, 0, 0, ?, ?);
Trial( ?, "F", <0, 30, 60, 90, 120, 150, 180>, 1, 1, ?, ?);
}
Block( 2, 1, 2){
Trial( ?, "R", <0, 30, 60, 90, 120, 150, 180>, 0, 0, ?, ?);
Trial( ?, "R", <0, 30, 60, 90, 120, 150, 180>, 1, 1, ?, ?);
Trial( ?, "L", <0, 30, 60, 90, 120, 150, 180>, 0, 0, ?, ?);
Trial( ?, "L", <0, 30, 60, 90, 120, 150, 180>, 1, 1, ?, ?);
Trial( ?, "F", <0, 30, 60, 90, 120, 150, 180>, 0, 0, ?, ?);
Trial( ?, "F", <0, 30, 60, 90, 120, 150, 180>, 1, 1, ?, ?);
}
Block( 3, 1, 2){
Trial( ?, "R", <0, 30, 60, 90, 120, 150, 180>, 0, 0, ?, ?);
Trial( ?, "R", <0, 30, 60, 90, 120, 150, 180>, 1, 1, ?, ?);
Trial( ?, "L", <0, 30, 60, 90, 120, 150, 180>, 0, 0, ?, ?);
Trial( ?, "L", <0, 30, 60, 90, 120, 150, 180>, 1, 1, ?, ?);
Trial( ?, "F", <0, 30, 60, 90, 120, 150, 180>, 0, 0, ?, ?);
Trial( ?, "F", <0, 30, 60, 90, 120, 150, 180>, 1, 1, ?, ?);
}
}
}
}