2 Value Turtles
The value turtles are a variation on traditional turtles. Rather than
having just a single window where each operation changes the state of
that window, in the graphics/value-turtles library, the
entire turtles window is treated as a value. This means that each of
the primitive operations accepts, in addition to the usual arguments,
a turtles-window value; instead of returning nothing, each returns a
turtles-window value.
(turtles | | width | | | | | | | height | | | | | | [ | init-x | | | | | | | init-y | | | | | | | init-angle]) | | → | | turtles-window? |
|
width : real? |
height : real? |
init-x : real? = (/ width 2) |
init-y : real? = (/ height 2) |
init-angle : real? = 0 |
Creates a new turtles window with the given width and
height. The remaining arguments specify position of the
initial turtle and the direction in radians (where 0 is to
the right).
(move n turtles) → turtles-window? |
n : real? |
turtles : turtles-window? |
Moves the turtle n pixels, returning a new turtles window.
(draw n turtles) → turtles-window? |
n : real? |
turtles : turtles-window? |
Moves the turtle n pixels and draws a line along the path,
returning a new turtles window.
(erase n turtles) → turtles-window? |
n : real? |
turtles : turtles-window? |
Moves the turtle n pixels and erases a line along the path,
returning a new turtles window.
(move-offset h v turtles) → turtles-window? | h : real? | v : real? | turtles : turtles-window? |
|
(draw-offset h v turtles) → turtles-window? | h : real? | v : real? | turtles : turtles-window? |
|
(erase-offset h v turtles) → turtles-window? | h : real? | v : real? | turtles : turtles-window? |
|
Like
move,
draw, and
erase, but using a
horizontal and vertical offset from the turtle’s current position.
(turn theta turtles) → turtles-window? |
theta : real? |
turtles : turtles-window? |
Turns the turtle theta degrees counter-clockwise, returning a
new turtles window.
(turn/radians theta turtles) → turtles-window? |
theta : real? |
turtles : turtles-window? |
Turns the turtle theta radians counter-clockwise, returning a
new turtles window.
(merge turtles1 turtles2) → turtles-window? |
turtles1 : turtles-window? |
turtles2 : turtles-window? |
Instead, the merge accepts two turtles windows and combines
the state of the two turtles windows into a single window. The new
window contains all of the turtles of the previous two windows, but
only the line drawings of the first turtles argument.
2.1 Examples
The graphics/value-turtles-examples library is similar
to graphics/turtle-examples, but using
graphics/value-turtles instead of
graphics/turtles.