Recursive Flood Filler

Started by kevin, February 23, 2004, 07:39:09 PM

Previous topic - Next topic

kevin

This is a very basic flood filler using recursive function calls to the job for us.  While this can make the routine simpler for us, it does place a risk of overflowing our applications stack from all the recursion.

This code is for Dark Basic/Dark Basic Pro





Do
cls 0

ink rgb(255,255,255),0
Circle 50,50,20

ink rgb(255,0,255),0
line 30,30,rnd(100),rnd(100)

ink 255,0
RecursiveFill(50,50,0)

sync
loop
end


Function RecursiveFill(Xpos,Ypos,FillColour)

 ThisPixel=point(xpos,ypos)

 if ThisPixel<>FillColour
    dot Xpos,Ypos
    if Xpos>0
       if (point(xpos-1,ypos) and $ffffff)=FillColour then RecursiveFill(Xpos-1,Ypos,FillColour)
    endif

    if Xpos<100
       if (point(xpos+1,ypos) and $ffffff)=FillColour then RecursiveFill(Xpos+1,Ypos,FillColour)
    endif

    if Ypos>0
       if (point(xpos,ypos-1) and $ffffff)=FillColour then RecursiveFill(Xpos,Ypos-1,FillColour)
    endif

    if Ypos<100
       if (point(xpos,ypos+1) and $ffffff)=FillColour then RecursiveFill(Xpos,Ypos+1,FillColour)
    endif
endif

EndFunction