aUCBLogo Demos and Tests / ant2


be ant2
   
cs ht
   
t=timefine
   
start=100
   
finish=200
   
d=finish
   
field=mdArray list d d
   
n=20000
   
antx=(start+finish)/2
   
anty=(start+finish)/2
   
jump=5
   
stepcount=0
   
framedelay=20
;   setactivearea [-260 -260 260 260]
   
append=false
   
for [n] 
   
[   ifelse (or antx<start anty<start antx>finish anty>finish) 
      
[   print [ant went be far] 
         
(pr timefine-"sec)
         
stop
      
]
      
[move]
      
if (mod a 20)==0
      
[   updateGraph
      
]
   
]
   
(pr timefine-"sec)

   
be move
      
ifelse (field.antx).anty==0 
      
[   setfc 0
         
square jump 
         
rt 90 fd jump
         
setitem anty field.antx 1
      
][   setfc 7 
         
square jump 
         
lt 90 fd jump 
         
setItem anty field.antx 0
      
]
      
ifelse or heading==90 heading==270 
      
[   ifelse heading==90
         
[   antx=antx+1
         
][   antx=antx-1
         
]
      
][   ifelse heading==0 
         
[   anty=anty+1
         
][   anty=anty-1
         
]
      
]
   
end
   
   
be square size
      
pd
      
local [sh]
      
sh=size/2+0.5
      
fillRect list -sh -sh  list sh sh
      
penup
      
stepcount=stepcount+1
   
;   if stepcount==framedelay 
   ;   [   (gifsave "ant.gif 0 append 0) 
   ;      stepcount=0 
   ;      append=true
   ;   ]
   
end
end