aUCBLogo Demos and Tests / score_a_test


be score_a_test
   
f=(Frame [][MyFrame] 
      
wxFrame_Tool_Window+wxCaption+wxClose_Box
      
+wxSystem_Menu+wxResize_Border+wxTab_traversal+wxStay_on_Top
      
[400 300][--1])
   
FrameSetBackgroundColor [.9 .9 .85]
   
FrameSetClientSize 400 300
   
running=true
   
quit=false
   
FrameOnClose [running=false quit=true]

   
questions=
   
{   {   [Who led the British colonies in North America not including Canada?]
         
{   [Issac Newton]
            
[John Adams]
            
[Samuel Adams]
            
[George Washington]
         
}
         
{0 0 0 100}
      
}
      
{   [Which is closest to the value of Pi?]
         
{   3         
            
3.141592654
            
2.718281828
            
3.146436455
         
}
         
{-1 100 -100 -10}
      
}
      
{   [Which is closest to the value of Euler'number?]
         
{   3         
            
3.141592654
            
2.718281828
            
3.146436455
         
}
         
{-30 -30 100 -30}
      
}
   
}
   
results=mdarray List count questions 6
   
   
nr=1
   
while [and nr <= count questions not quit]
   
[   quest 
         
questions.nr.1 
         
questions.nr.2 
      
GC
   
]
   
Report
   
   
be quest question answers
      
local [tc0 tc bnext bprev n cb bs bspn]
      
n=count answers
      
tc0=(StaticText ")
      
tc=(StaticText f question wxalign_centre)
      
      
bnext=Button [&Next]    
      
[   nr=nr+1 
         
running=false
      
]
      
bprev=Button [&Previous]
      
[   if nr [nr=nr-1] 
         
running=false
      
]
      
      
cb=Array n
      
for [n]
      
[   cb.j=
         
(CheckBox f answers.j 
            
(Sentence "setItem j 
               
[item nr results 
               
not item[item nr results]))
         
if empty? results.nr.[results.nr.j=false]
         
CheckBoxSet cb.j results.nr.j==true
      
]
      
bs=BoxSizer wxVertical
      
BoxSizerAdd bs tc0 50 wxexpand 0
      
BoxSizerAdd bs tc 100 
         
wxexpand+wxalign_center+wxalign_center_vertical 0
      
repeat n
      
[   BoxSizerAdd bs cb.repcount 100 wxExpand 0
      
]
      
bspn=BoxSizer wxHorizontal
      
BoxSizerAdd bspn bprev 100 wxExpand 0
      
BoxSizerAdd bspn bnext 100 wxExpand 0
      
BoxSizerAdd bs bspn 100 wxExpand 0
      
FrameSetSizer f bs
      
running=true
      
while [running]
      
[   dispatchMessages
         
waitMS 100
      
]
   
end
   
   
be Report
      
local [v p]
      
nrs=count questions
      
p=0
      
for [nr nrs]
      
[   (foreach questions.nr.2 results.nr questions.nr.3
         
[   p=p+ifelse ?2 [?3][0]
         
])
      
]
      
tc=TextControl [Score:p
   
end
end