And the code below works in MSWLogo. Looks great! Dale
to carpet :side :level
if :level < 1 [stop]
repeat 4 [carpet :side/3 :level-1 fd :side/3
carpet :side/3 :level-1 fd 2*:side/3 rt 90]
end
to carpetfill :side :level
if :level < 2 [stop]
if :level = 2 [setfc [250 0 0]]
if :level = 3 [setfc [0 250 0]]
if :level = 4 [setfc [0 0 250]]
if :level = 5 [setfc [250 250 0]]
pu rt 45
fd 2*(:side/3) pd fill pu bk 2*(:side/3) lt 45
fd :side/3
carpetfill :side/3 :level-1
fd :side/3
carpetfill :side/3 :level-1
fd :side/3 rt 90 fd :side/3
carpetfill :side/3 :level-1
fd :side/3
carpetfill :side/3 :level-1
fd :side/3 rt 90 fd :side/3
carpetfill :side/3 :level-1
fd :side/3
carpetfill :side/3 :level-1
fd :side/3 rt 90 fd :side/3
carpetfill :side/3 :level-1
fd :side/3
fd :side/3 rt 90
carpetfill :side/3 :level-1
end
to sq_seirp :side :level
;window
setpc 0
cs pu setxy -50 -150 pd
;print [input the side length and recursion level]
;make "side readword
;make "level readword
;fs
carpet :side :level
carpetfill :side :level
end
Hi Dale,
I think that carpetfill can be written somewhat simpler.
Here's a slightly different implementation for the carpet, in MSWLogo:
==========================
to main
cs ht setpc 0
pu setxy -121 -121 pd
carpet 243 4
end
to carpet :side :level
if :level<1[stop]
repeat 4[shape rt 90]
carpetfill
end
to shape
carpet :side/3 :level-1
fd :side/3
carpet :side/3 :level-1
fd 2*:side/3
end
to carpetfill
pu rt 45 fd :side/2
setfc 9-:level fill
bk :side/2 lt 45 pd
end
==========================
Regards...
[[Yehuda]]
_/
_/ _/ _/_/_/_/_/ _/_/_/_/
_/
_/ _/_/ _/
_/
_/_/_/
_/ _/ _/ _/
_/ _/
_/_/_/_/ _/ _/
_/
_/_/ _/ _/ _/_/_/_/
http://www.geocities.com/CollegePark/lab/2276/
e-mail: yehuka@softhome.net
Global SchoolNet Foundation -
Linking Kids Around the World!
Copyright GSN - All Rights Reserved
- Comments
& Questions
Visit GSN's
Global
Schoolhouse for more exciting learning resources!
Search our Site
-
Home