sync on width=200 height=200 dim area(width,height) for x=20 to 180 area(x,20)=1 area(x,180)=1 next x for y=20 to 180 area(20,y)=1 area(180,y)=1 next y for i=1 to 200 area(rnd(width-1)+1,rnd(height-1)+1)=1 next i a=timer() floodfill(width,height,100,100,2) b=timer()-a set cursor 0,200 print "Time Taken: "b for x=1 to width for y=1 to height ink area(x,y)*127,0 dot x,y next y next x sync end function floodfill(width,height,x,y,newtype) currtype=area(x,y) dim fillx(width*height) dim filly(width*height) dim fill(width,height) fills=1 fillx(1)=x filly(1)=y fill(x,y)=1 endfill=0 while endfill=0 endfill=1 fill2=fills for i=1 to fills fillx=fillx(i) filly=filly(i) if fillx<width if fill(fillx+1,filly)=0 : rem Right if area(fillx+1,filly)=currtype fill2=fill2+1 fillx(fill2)=fillx+1 filly(fill2)=filly fill(fillx+1,filly)=1 endfill=0 endif endif endif if fillx>1 if fill(fillx-1,filly)=0 : rem Left if area(fillx-1,filly)=currtype fill2=fill2+1 fillx(fill2)=fillx-1 filly(fill2)=filly fill(fillx-1,filly)=1 endfill=0 endif endif endif if filly>1 if fill(fillx,filly-1)=0 : rem Up if area(fillx,filly-1)=currtype fill2=fill2+1 fillx(fill2)=fillx filly(fill2)=filly-1 fill(fillx,filly-1)=1 endfill=0 endif endif endif if filly<height if fill(fillx,filly+1)=0 : rem Down if area(fillx,filly+1)=currtype fill2=fill2+1 fillx(fill2)=fillx filly(fill2)=filly+1 fill(fillx,filly+1)=1 endfill=0 endif endif endif next i fills=fill2 if fills>=width*height then endfill=1 endwhile for i=1 to fills fillx=fillx(i) filly=filly(i) area(fillx,filly)=newtype next i undim fillx(width*height) undim filly(width*height) undim fill(width,height) endfunction