screen 0,640,480,1,0,0 randomize dim dix,4 dim diy,4 dix.0=0,1,0,-1 diy.0=-1,0,1,0 dim rx,32000 dim ry,32000 dim ra,32000 redraw 2 color 0,255,255 boxf 0,0,639,479 color 0,0,0 boxf 2,2,635,471 color 0,255,255 repeat 117 j=cnt*4+4 repeat 158 i=cnt*4+4 x=i+1 y=j+1 boxf i,j,x,y repeat rnd a,4-(i>4) x=dix.a*2+i y=diy.a*2+j pget x,y if bval!0 : continue boxf x,y,x+1,y+1 break loop loop await 1 loop redraw 1 ;color 0,0,0 ;repeat 4000 ; rnd x,318 ; rnd y,235 ; x=x+1*2 ; y=y+1*2 ; boxf x,y,x+1,y+1 ;loop repeat rnd gx,160 rnd gy,120 gx=gx*2 gy=gy*2 pget gx,gy if gval=0 : color 255,0,0:boxf gx,gy,gx+2,gy+2:break loop repeat rnd x,160 rnd y,120 pget x*2,y*2 if gval=0 : break loop *main ;サーチ repeat 32000 rx.cnt=0 ry.cnt=0 ra.cnt=0 loop rx.0=x ry.0=y ra.0=2 robos=1 finsw=0 newrb=1 repeat repeat 32000 i=cnt if ra.i=0 : break if ra.i=3 : continue if ra.i=1 : ra.i=2:continue mov=0 xx=rx.i yy=ry.i die=0 color 0,0,128 boxf xx*2,yy*2,xx*2+1,yy*2+1 color 128,128,0 boxf x*2,y*2,x*2+1,y*2+1 color 0,255,0 repeat 4 j=cnt v=xx+dix.j w=yy+diy.j pget v*2,w*2 if rval=255 : dialog"ゴールを発見しました",0,"自動迷路":end if gval+bval>0 : die++:continue mov++ if mov=1 : rx.i=v:ry.i=w:boxf v*2,w*2,v*2+1,w*2+1:continue if newrb=32000 : dialog "メモリが足りません",1,"自動迷路":end robos++ finsw=1 rx.newrb=v ry.newrb=w ra.newrb=1 boxf v*2,w*2,v*2+1,w*2+1 newrb++ loop if die=4 : ra.i=3:robos-- loop await 5 if (robos=1)&(finsw=1) : break loop repeat 32000 i=cnt if ra.i=0 : break if ra.i=3 : continue x=rx.i y=ry.i break loop goto *main stop