[WARNING] WARNING: DO NOT EDIT THIS FILE DIRECTLY! Use only E-Studio to edit this file. Editing of this file from any other means is not supported and may corrupt the experiment design specification. Technical support will not be able to address any issue in regards to this file format. [Experiment] VersionMajor=1 VersionMinor=2 VersionInternal=1 VersionBuild=94 _VersionPersist=6 Root="RootProc" Author="Paul F.C. Groot, FPP-ITM (Vrije Universiteit Amsterdam)" Abstract="TOH by Paul Groot\r\n\r\nVrije Universiteit \r\nFac. Psychologie en Pedagogiek \r\nVan der Boechorststraat 1 \r\n1081 BT AMSTERDAM \r\n \r\n+31 20 5988931\r\npfc.groot@psy.vu.nl \r\nso@psy.vu.nl \r\n \r\nŠ 2004-2005, Vrije Universiteit van Amsterdam\r\n \r\ncreated 2004\r\n\r\nSlight correction by David K. McFarlane, Dept. Psychology,\r\nMichigan State University, E.Lansing, Michigan, USA.\r\n28 Apr 2011\r\n" Notes="" Creation=1304017699 [Device0] _VersionPersist=1 OpenDevice=1 Width=1024 Height=768 Bpp=32 Name="Display" Class="Display" [Device1] _VersionPersist=1 OpenDevice=0 Channels=2 Samples=22050 Bps=16 Name="Sound" Class="Sound" [Device2] _VersionPersist=1 OpenDevice=1 CollectionMode=1 EmulateDeviceName="" CapsLock=0 NumLock=1 Name="Keyboard" Class="Keyboard" [Device3] _VersionPersist=1 OpenDevice=1 CollectionMode=1 EmulateDeviceName="" OpenMode=0 ShowCursor=0 Name="Mouse" Class="Mouse" [DataFile] WarnBeforeOverwrite=1 WarnIfConvertFailed=1 RemoveERecoveryFile=0 ReceiveFeedbackDuringDataFileConversion=1 LogLevel(2).Name="Block" LogLevel(3).Name="Trial" LogLevel(4).Name="SubTrial" LogLevel(5).Name="LogLevel5" LogLevel(6).Name="LogLevel6" LogLevel(7).Name="LogLevel7" LogLevel(8).Name="LogLevel8" LogLevel(9).Name="LogLevel9" LogLevel(10).Name="LogLevel10" [StartupInfo] DisplaySummary=1 UseDefaults=0 [StartupInfo1] Name="Subject" Prompt="Please enter the Subject Number (1-32767, 0=No Data Logging):" DataType=0 Enabled=1 PromptEnabled=1 Default="1" Min=0 Max=32767 PrivateFlags=268435477 PrivateInfo=1 [StartupInfo2] Name="Session" Prompt="Please enter the Session Number (1-32767):" DataType=0 Enabled=1 PromptEnabled=1 Default="1" Min=1 Max=32767 PrivateFlags=268435477 PrivateInfo=1 [StartupInfo3] Name="Group" Prompt="Please enter Subject's Group (0-32767):" DataType=0 Enabled=0 PromptEnabled=0 Default="1" Min=0 Max=32767 [StartupInfo4] Name="Name" Prompt="Please enter Subject's Name:" DataType=1 Enabled=0 PromptEnabled=0 Default="" MaxLength=255 [StartupInfo5] Name="Age" Prompt="Please enter Subject's Age (0-150):" DataType=0 Enabled=0 PromptEnabled=0 Default="0" Min=0 Max=150 [StartupInfo6] Name="Sex" Prompt="Please enter Subject's Sex:" DataType=2 Enabled=0 PromptEnabled=0 Default="male" Choice(1).Value="male" Choice(2).Value="female" [StartupInfo7] Name="Handedness" Prompt="Enter Subject's Handedness:" DataType=2 Enabled=0 PromptEnabled=0 Default="left" Choice(1).Value="left" Choice(2).Value="right" [StartupInfo8] Name="ResearcherID" Prompt="Please enter Researcher's ID:" DataType=0 Enabled=0 PromptEnabled=0 Default="1" Min=0 Max=32767 [Object0] _Version=65536 _ExtentX=2646 _ExtentY=1323 _StockProps=0 VersionMajor=1 VersionMinor=2 VersionInternal=1 VersionBuild=67 Logging("Selected").Log=-1 Logging("Moved").Log=-1 Logging("CRod").Log=-1 _ItemList="MoveProc" _VersionPersist=1 VersionMajor=1 VersionMinor=2 VersionInternal=1 VersionBuild=67 Order=0 OrderBy=0 ResetEveryRun=1 HideLevelsWithZeroWeight=0 CycleDef=0 CycleValueSamples=0 CycleValueCondition="" ExitDef=0 ExitValueCycles=1 ExitValueSamples=1 ExitValueSeconds=0 ExitValueCondition="" LoadMethod=0 Filename="" UserAttributes=3 Attributes("Weight").DefaultValue="1" Attributes("Weight").Visible=1 Attributes("Weight").Width=75 Attributes("Weight").OrderIndex=0 Attributes("Nested").DefaultValue="" Attributes("Nested").Visible=1 Attributes("Nested").Width=98 Attributes("Nested").OrderIndex=1 Attributes("Procedure").DefaultValue="TrialProcedure" Attributes("Procedure").Visible=1 Attributes("Procedure").Width=125 Attributes("Procedure").OrderIndex=2 Attributes(1).Name="Selected" Attributes(1).DefaultValue="false" Attributes(1).VarType=8 Attributes(1).VarTypeInternal=8 Attributes(1).Visible=1 Attributes(1).Width=90 Attributes(2).Name="Moved" Attributes(2).DefaultValue="false" Attributes(2).VarType=8 Attributes(2).VarTypeInternal=8 Attributes(2).Visible=1 Attributes(2).Width=94 Attributes(3).Name="CRod" Attributes(3).DefaultValue="0" Attributes(3).VarType=8 Attributes(3).VarTypeInternal=8 Attributes(3).Visible=1 Attributes(3).Width=92 Levels=1 Levels(1).ValueString="1000\t\tMoveProc\t-1\t-1\t0\t" Name="ActionList" TypeName="List" Tag="repeat mouse events" Notes="" [Object1] _Version=65536 _ExtentX=2646 _ExtentY=1323 _StockProps=0 VersionMajor=1 VersionMinor=2 VersionInternal=1 VersionBuild=67 _ItemList="SetupTrial;DrawRods;ShowMouse;WaitForRespons;ReactOnRespons;HideMouse;Feedback;EndOfMove" _VersionPersist=1 FlowLines(0).Count=8 FlowLines(0).FlowItem(0).Name="SetupTrial" FlowLines(0).FlowItem(1).Name="DrawRods" FlowLines(0).FlowItem(2).Name="ShowMouse" FlowLines(0).FlowItem(3).Name="WaitForRespons" FlowLines(0).FlowItem(4).Name="ReactOnRespons" FlowLines(0).FlowItem(5).Name="HideMouse" FlowLines(0).FlowItem(6).Name="Feedback" FlowLines(0).FlowItem(7).Name="EndOfMove" LogData=1 Name="MoveProc" TypeName="Procedure" Tag="" Notes="" [Object2] _Version=65536 _ExtentX=2646 _ExtentY=1323 _StockProps=0 VersionMajor=1 VersionMinor=2 VersionInternal=1 VersionBuild=67 _ItemList="InitTrial;TrialIntro;DelayRespons;ActionList;SaveMoves;OK" _VersionPersist=1 FlowLines(0).Count=6 FlowLines(0).FlowItem(0).Name="InitTrial" FlowLines(0).FlowItem(1).Name="TrialIntro" FlowLines(0).FlowItem(2).Name="DelayRespons" FlowLines(0).FlowItem(3).Name="ActionList" FlowLines(0).FlowItem(4).Name="SaveMoves" FlowLines(0).FlowItem(5).Name="OK" LogData=1 Name="TrialProc" TypeName="Procedure" Tag="" Notes="" [Object3] _Version=131072 _ExtentX=2646 _ExtentY=1323 _StockProps=0 VersionMajor=1 VersionMinor=2 VersionInternal=1 VersionBuild=67 _VersionPersist=1 Code="\n'SetupTrial:\n\nif bResetTrial then\n\n\t' Set the references to the rods\n\tSelectedRod = NOROD\n\n\t' (re)Init the working disc stack\n\tInitTOH c.GetAttrib(\"InitDiscs\"), Subject, SubjectDiscCount\n\n\tiMove = 0\n\tiUpOrDown = UP\n'\tLastNumberOfMoves = 0\n\tbRestart = false\n\tbResetTrial = false\n\tlOnsetTime = 0\n'\tlLastFirstMoveTime = 0\nend if\n'\tc.SetAttrib \"CorrectMoveCount\", nRequiredMoves\n\n\n\n\n\n\n\n\n" Name="SetupTrial" TypeName="InLine" Tag="" Notes="" [Object4] _Version=131072 _ExtentX=2646 _ExtentY=1323 _StockProps=0 VersionMajor=1 VersionMinor=2 VersionInternal=1 VersionBuild=67 _VersionPersist=1 Code="\n' when we are using instructions, just continue\n'if (c.GetAttrib(\"Instruction\")=\"true\") then MoveUntilTarget.Terminate\n\n'dim theState as SlideState\ndim ptMouse as Point\ndim bHit as Boolean\ndim bMoved as boolean\ndim bSelected as boolean\ndim iCorrectRod%\n\nif WaitForRespons.RESP=\"{ESCAPE}\" then\n\tActionList.Terminate\n\tTrialList.Terminate\n\tgoto EndOfMove\nend if\n\n'set theState = DrawRods.States (\"Default\")\nMouse.GetCursorPos ptMouse.x, ptMouse.y\n'strHit = theState.HitTest(ptMouse.x, ptMouse.y)\n\n'dim bHit as boolean\niRod = ptMouse.x\niLevel = ptMouse.y\nbHit = HitTest(iRod, iLevel, SelectedRod<>NOROD) ' (iRod, iLevel) = (x,y) on input \n'if bHit then Debug.Print \"Hit \" & iRod & \" -> \" & iLevel\nif (SelectedRod=NOROD) then\n\t' nothing selected yet: accepts this selection\n\tbSelected = bHit\n\tSelectedRod = iRod\nelse\n\tif Not bHit Or iRod=SelectedRod then \n\t\tSelectedRod=NOROD ' move canceled\n\telse \n\t\tbMoved = MoveDisc(iRod)\n\tend if\nend if\n\n'EndInline:\n\t\t\nc.SetAttrib \"Rod\", CStr(iRod+1)\nc.SetAttrib \"Selected\", Iif(bSelected,\"1\",\"0\")\nc.SetAttrib \"Moved\", Iif(bMoved,\"1\",\"0\")\niCorrectRod = CorrectMoves(IIf(bSelected,UP,DOWN), iMove)\nc.SetAttrib \"CRod\", CStr(iCorrectRod+1)\nif bMoved then \n\tlLastDownTime = WaitForRespons.RTTime 'Clock.ReadMillisec\n\tif lFirstDownTime<=0 then lFirstDownTime = lLastDownTime\n\tif iRod<>iCorrectRod then bRestart = true else iMove = iMove+1\nelseif bSelected then\n'\tif lFirstMoveTime<=0 then lFirstMoveTime = WaitForRespons.RTTime' Clock.ReadMillisec\n\tif SelectedRod<>iCorrectRod then bRestart = true'MoveUntilTarget.Terminate\nelse\n\t' move canceled\n\tbRestart = false\nend if\n\n'xxx c.SetAttrib \"LastFirstMove\", lLastFirstMoveTime - lOnsetTime\n\n'Debug.Print \"Move = \" & iMove\n'Debug.Print \"Selected = \" & bSelected\n'Debug.Print \"Moved = \" & bMoved\n'Debug.Print \"Restart = \" & bRestart\n'Debug.Print \"CorrectRod = \" & iCorrectRod\n'Debug.Print \"iRod = \" & iRod\nif bRestart And bMoved then \n'\tMoveUntilTarget.Terminate ' only terminate during move\n\tc.SetAttrib \"Ready\", \"-1\"\n\tnErrors = nErrors + 1\n\tFeedback.ActiveState = \"Wrong\"\n\tbResetTrial = true\n'\tResetMoves\nelse\n\tif bMoved then\n\t\tcompleted = true\n\n\t\tdim rod as integer\n\t\tdim pos as integer\n\n\t\tfor rod = LEFTROD to RIGHTROD\n\t\t\tfor pos = 0 to N_DISCS-1\n\t\t\t\tif (Subject(rod, pos) <> Target(rod, pos)) then\n\t\t\t\t\tcompleted = false\n\t\t\t\tend if\n\t\t\tnext pos\n\t\tnext rod\n\n\tend if\n\tif (completed) then\n\t\tc.SetAttrib \"Ready\", \"1\" ' last correct move => continue with next\n'\t\tFeedback.ActiveState = \"Done\"\n'\t \tActionList.Terminate\n\t\tFeedback.ActiveState = \"Default\"\n\t\tgoto EndOfMove ' skip feedback\n\telse\n\t\tc.SetAttrib \"Ready\", \"0\" ' not finished => just continue\n\t\tFeedback.ActiveState = \"Default\"\n\t\tgoto EndOfMove ' skip feedback\n\tend if\nend if\n" Name="ReactOnRespons" TypeName="InLine" Tag="" Notes="" [Object5] _Version=65536 _ExtentX=2646 _ExtentY=1323 _StockProps=0 VersionMajor=1 VersionMinor=2 VersionInternal=1 VersionBuild=67 Logging("InitDiscs").Log=-1 Logging("TargetDiscs").Log=-1 Logging("Practice").Log=-1 Logging("CorrectMoves").Log=-1 Logging("TrialIntroState").Log=-1 _ItemList="TrialProc" _VersionPersist=1 VersionMajor=1 VersionMinor=2 VersionInternal=1 VersionBuild=67 Order=0 OrderBy=0 ResetEveryRun=0 HideLevelsWithZeroWeight=0 CycleDef=0 CycleValueSamples=0 CycleValueCondition="" ExitDef=0 ExitValueCycles=1 ExitValueSamples=1 ExitValueSeconds=0 ExitValueCondition="" LoadMethod=0 Filename="" UserAttributes=5 Attributes("Weight").DefaultValue="1" Attributes("Weight").Visible=1 Attributes("Weight").Width=75 Attributes("Weight").OrderIndex=0 Attributes("Nested").DefaultValue="" Attributes("Nested").Visible=1 Attributes("Nested").Width=75 Attributes("Nested").OrderIndex=1 Attributes("Procedure").DefaultValue="TOHTrialProc" Attributes("Procedure").Visible=1 Attributes("Procedure").Width=75 Attributes("Procedure").OrderIndex=2 Attributes(1).Name="InitDiscs" Attributes(1).DefaultValue="0_0_0" Attributes(1).VarType=8 Attributes(1).VarTypeInternal=8 Attributes(1).Visible=1 Attributes(1).Width=75 Attributes(2).Name="TargetDiscs" Attributes(2).DefaultValue="0_0_0" Attributes(2).VarType=8 Attributes(2).VarTypeInternal=8 Attributes(2).Visible=1 Attributes(2).Width=75 Attributes(3).Name="Practice" Attributes(3).DefaultValue="false" Attributes(3).VarType=8 Attributes(3).VarTypeInternal=8 Attributes(3).Visible=1 Attributes(3).Width=100 Attributes(4).Name="CorrectMoves" Attributes(4).DefaultValue="" Attributes(4).VarType=8 Attributes(4).VarTypeInternal=8 Attributes(4).Visible=1 Attributes(4).Width=138 Attributes(5).Name="TrialIntroState" Attributes(5).DefaultValue="Default" Attributes(5).VarType=8 Attributes(5).VarTypeInternal=8 Attributes(5).Visible=1 Attributes(5).Width=75 Levels=10 Levels(1).ValueString="1\t\tTrialProc\t3_0_0\t0_0_3\t1\t1-3\tPractice1\t" Levels(2).ValueString="1\t\tTrialProc\t43_0_21\t431_2_0\t1\t3-1,3-2\tPractice2\t" Levels(3).ValueString="1\t\tTrialProc\t4_321_0\t42_3_1\t0\t2-3,2-1\tDefault\t" Levels(4).ValueString="1\t\tTrialProc\t41_3_2\t0_321_4\t0\t3-2,1-2,1-3\tDefault\t" Levels(5).ValueString="1\t\tTrialProc\t4_0_321\t2_4_31\t0\t1-2,3-2,3-1,2-3\tDefault\t" Levels(6).ValueString="1\t\tTrialProc\t2_41_3\t0_4321_0\t0\t2-1,3-2,1-3,1-2,3-2\tDefault\t" Levels(7).ValueString="1\t\tTrialProc\t4_3_21\t42_1_3\t0\t3-2,3-1,2-1,2-3,1-2\tDefault\t" Levels(8).ValueString="1\t\tTrialProc\t0_31_42\t1_0_432\t0\t3-1,2-1,2-3,1-2,1-3,2-1\tDefault\t" Levels(9).ValueString="1\t\tTrialProc\t4321_0_0\t41_0_32\t0\t1-3,1-2,3-2,1-3,2-1,2-3\tDefault\t" Levels(10).ValueString="1\t\tTrialProc\t1_4_32\t1_43_2\t0\t1-2,3-1,2-1,3-2,1-2,1-3,2-1\tDefault\t" Name="TrialList" TypeName="List" Tag="" Notes="" [Object6] _Version=65536 _ExtentX=2646 _ExtentY=1323 _StockProps=0 VersionMajor=1 VersionMinor=2 VersionInternal=1 VersionBuild=67 _ItemList="InitExp;ClearScreen;Title;DelayRespons;TrialList;EndTOHExp;GoodbeyText" _VersionPersist=1 FlowLines(0).Count=7 FlowLines(0).FlowItem(0).Name="InitExp" FlowLines(0).FlowItem(1).Name="ClearScreen" FlowLines(0).FlowItem(2).Name="Title" FlowLines(0).FlowItem(3).Name="DelayRespons" FlowLines(0).FlowItem(4).Name="TrialList" FlowLines(0).FlowItem(5).Name="EndTOHExp" FlowLines(0).FlowItem(6).Name="GoodbeyText" LogData=1 Name="RootProc" TypeName="Procedure" Tag="" Notes="" [Object7] _Version=131072 _ExtentX=2646 _ExtentY=1323 _StockProps=0 VersionMajor=1 VersionMinor=2 VersionInternal=1 VersionBuild=67 _VersionPersist=1 Code="\n' initialization for complete series of moeves (including resets after errors)\n'lFirstMoveTime = 0\nlFirstDownTime = 0\nlFirstOnsetTime = 0\nNumberOfMoves = 0\nnErrors = 0\ncompleted = false\n\n\n\t' Init the disc stacks\n'\tInitTOH c.GetAttrib(\"InitDiscs\"), Subject, SubjectDiscCount ' must be inside 'loop'\n\tInitTOH c.GetAttrib(\"TargetDiscs\"), Target, TargetDiscCount ' just once\n\n\t' store correct moves in CorrectMove() array \n\tdim strMoves as string\n\tdim strChar as string\n\tdim iPos as integer\n\tstrMoves = c.GetAttrib(\"CorrectMoves\")\n\tiMove = 0\n\tiUpOrDown = UP\n\tfor iPos=1 to len(strMoves)\n\t\tstrChar = mid$(strMoves,iPos,1)\n\t\tSelect Case strChar\n\t\t\tcase \"1\",\"2\",\"3\"\n\t\t\t\tCorrectMoves(iUpOrDown, iMove) = CStr(CInt(strChar)-1)\n\t\t\t\tDebug.Assert iMove=1 then DiscColors(1) = \"255,153,204\"\nif N_DISCS>=2 then DiscColors(2) = \"255,255,0\"\nif N_DISCS>=3 then DiscColors(3) = \"0,204,255\"\nif N_DISCS>=4 then DiscColors(4) = \"51,204,51\"" Name="InitExp" TypeName="InLine" Tag="" Notes="" [Object15] _Version=131072 _ExtentX=2646 _ExtentY=1323 _StockProps=0 VersionMajor=1 VersionMinor=2 VersionInternal=1 VersionBuild=67 _VersionPersist=1 Code="Mouse.ShowCursor false\n\nc.SetAttrib \"SumErrors\", nTotalErrors\nc.SetAttrib \"SumThinkTime1\", lTotalTT1\nc.SetAttrib \"SumThinkTime\", lTotalTT\n" Name="EndTOHExp" TypeName="InLine" Tag="" Notes="" [Object16] _Version=131072 _ExtentX=2646 _ExtentY=1323 _StockProps=0 VersionMajor=1 VersionMinor=2 VersionInternal=1 VersionBuild=67 _VersionPersist=1 Code="\nDim cnvs As Canvas\nSet cnvs = Display.Canvas\n'cnvs.FillColor = CColor (\"white\")\n'Display.WaitForVerticalBlank\n'cnvs.Clear\n\n'Create off-screen canvas\nDim offScreenCnvs As Canvas\nSet offScreenCnvs = Display.CreateCanvas\noffScreenCnvs.FillColor = CColor (\"white\")\noffScreenCnvs.Clear\n\nDim r As Rect\nr.Left = 0\nr.Right = Display.XRes\nr.Top = 0\nr.Bottom = Display.YRes\n\ndim x%, y%, w%, h%\n\noffScreenCnvs.FillColor = CColor (\"White\")\noffScreenCnvs.Clear\n\nw = Display.XRes/6\nx = Display.XRes/2 - 1.5*w\nh = Display.YRes/4.5\ny = h/3\nDrawTOH offScreenCnvs, x, y, w, h, True\n\ndim strMsg as String\nif iMove0 then Debug.Assert iLevel 0) then if ( Subject(destRod, SubjectDiscCount(destRod) -1 ) < SizeOfDisc) then exit Function end if NumberOfMoves = NumberOfMoves + 1 ' Add to destination Subject(destRod, SubjectDiscCount(destRod)) = SizeOfDisc SubjectDiscCount(destRod) = SubjectDiscCount(destRod) + 1 ' Remove from source Subject(SelectedRod, SubjectDiscCount(SelectedRod) - 1) = NODISC SubjectDiscCount(SelectedRod) = SubjectDiscCount(SelectedRod) - 1 SelectedRod = NOROD MoveDisc = True end Function 'sub ResetMoves() ' NumberOfMoves = 0 ' iMove = 0 ' bRestart = False 'end sub