link graphics, randomiz global color,nwcolor,secolor procedure main() local R,r,x,y,lightcolors,darkcolors,W,H W:=300 H:=300 randomize() WOpen("size="||3*W||","||3*H, "bg=black") | stop("can't open window") lightcolors:=[ "yellow","green","cyan", "white" ] midcolors:=["yellow","green","blue","magenta","red"] darkcolors:=[ "blue","black","red" ] Fg("black") every 1 to 40 & (x:=?W,y:=?H) do { R:=5+?(W/5) secolor := "very dark "||?darkcolors nwcolor := "very dark "||?lightcolors color := "very dark "||?midcolors #if ?0 < 0.5 then nwcolor else secolor every r := 0 to R by 1 & i:=0 to 2 & j:=0 to 2 do { ball(x+i*W,y+j*H,integer(sqrt(R*R-r*r))) } Fg("black") every 1 to H/50 & DrawPoint(W+(0 to W),H+?(H+1)-1) } every 1 to H/2 & DrawPoint(W+(0 to W),H+?(H+1)-1) CopyArea(W,H,W,H,0,0) WriteImage("balls.gif",0,0,W,H) WClose() end procedure ball(x,y,r) local nw,se static d initial d:=1 #r:=r-d nw:= nwcolor se:= secolor Fg(nw) FillCircle(x-d,y-d,r) Fg(se) FillCircle(x+d,y+d,r) Fg( color) FillCircle(x,y,r) return end