draws in red;
fd 100
moves forward; and rt 72
turns
right by 72°.
pen red # Start drawing in red. fd 100 # Move forward by 100 pixels. rt 72 # Turn right by 72 degrees. fd 100 # Move forward by 100 again.
The command rt 72
turns the turtle, but it does not
slide it. To draw an angle, move forward after turning.
rt 5
?
2. The angle that measures a turtle turn is called an exterior angle. The following special line of code will load a script "/lib/angles.cs" that puts the turtle in a mode that shows all exterior angles when the turtle turns. It waits to finish loading the script before running the rest of your program.
await loadscript '/lib/angles.cs', defer() pen red # Start drawing in red. fd 100 # Move forward by 100 pixels. rt 72 # Turn right by 72 degrees. fd 100 # Move forward by 100 again. rt 72 # Turn right by 72 degrees. fd 100 # Move forward by 100 again.
You could copy-and-paste the code five times to repeat it five times. Or you can have the program repeat the steps automatically, using a loop.
3. Make a loop. Unlike LOGO, which used
"repeat" to make a loop, CoffeeScript uses the word for
.
Indent the block of code and then
write for [1..5]
above it, to loop 5 times.
await loadscript '/lib/angles.cs', defer() pen red # Start drawing in red. for [1..5] # Repeat 5 times fd 100 # Move forward by 100 pixels. rt 72 # Turn right by 72 degrees.
It is important to line up indented lines neatly in CoffeeScript:
the language uses indenting to know which block of lines to repeat
under a for
.
4. Finally, experiment with variables. We will use s
as the length of a side, and n
as the number of sides,
and a
as the measure of an exterior angle.
await loadscript '/lib/angles.cs', defer() s = 80 # s is the side length. n = 6 # n is the number of sides. a = 60 # a is the exterior angle size. pen red # Start drawing in red. for [1..n] # Repeat n times fd s # Move forward by s pixels. rt a # Turn right by a degrees.
5. Exercises:
s
down to a size smaller than 10.
a
need to be to make a polygon when
n
is 3?
a
be when n
is 10?
a
in terms of n
.
Change your program to use the formula.
s = 200 n = 9 a = 360 * 4 / 9 bk 100 pen blue for [1..n] fd s rt a pen null jump(-500, 100) await loadscript '/lib/angles.cs', defer() s = 10 n = 6 a = 60 pen red for [1..n] fd s rt a
6. Extra Credit:
n
to 5 and
a
to 144,
and make s
80.
Why do you get the shape that you get?