to trunk :size if :size < 5 [stop] fd :size lt 30 trunk :size*.7 rt 60 trunk :size*.7 lt 30 bk :size end to rantrunk :size if :size < 5 [stop] fd :size lt 30 rantrunk :size*(((random 4)+5)/10) rt 60 rantrunk :size*(((random 4)+5)/10) lt 30 bk :size end to thicktrunk :size if :size < 5 [stop] setpensize (se :size/6 :size/6) fd :size lt 30 thicktrunk :size*(((random 4)+5)/10) rt 60 thicktrunk :size*(((random 4)+5)/10) lt 30 bk :size end to tree :size setpc 8 if :size < 5 [setpensize [1 1] leaf :size 2 stop] setpensize (se :size/6 :size/6) fd :size lt 30 tree :size*(((random 4)+5)/10) setpc 8 rt 60 tree :size*(((random 4)+5)/10) setpc 8 lt 30 bk :size end to falltree :size setpc 8 if :size < 5 [setpensize [1 1] leaf :size ((random 7)+1)*2 stop] setpensize (se :size/6 :size/6) fd :size lt 30 falltree :size*(((random 4)+5)/10) setpc 8 rt 60 falltree :size*(((random 4)+5)/10) setpc 8 lt 30 bk :size end to leaf :size :color localmake "old :color setpc :color ellipse :size/2 :size setfloodcolor :color fill setpc :old end to forest :num :size repeat :num [ penup setxy 100-(random 200) 100-(random 200) pendown falltree :size + (:size * (100 - ycor)/200) ] end