# (lisppad turtle)

This is a library implementing a simple graphics window for displaying turtle graphics. The library supports one graphics window per LispPad session which gets initialized by invoking `init-turtle`. `init-turtle` will create a new turtle and display its drawing on a graphics window. If there is already an existing graphics window with the given title, it will be reused.

Once `init-turtle` was called, the following functions can be used to move the turtle across the plane:

* `(pen-up)`: Lifts the turtle
* `(pen-down)`: Drops the turtle
* `(pen-color color)`: Sets the current color of the turtle
* `(pen-size size)`: Sets the size of the turtle pen
* `(home)`: Moves the turtle back to the origin
* `(move x y)`: Moves the turtle to position `(x, y)`
* `(heading angle)`: Sets the angle of the turtle (in radians)
* `(turn angle)`: Turns the turtle by the given angle (in radians)
* `(left angle)`: Turn left by the given angle (in radians)
* `(right angle)`: Turn right by the given angle (in radians)
* `(forward distance)`: Moves forward by `distance` units drawing a line if the pen is down
* `(backward distance)`: Moves backward by `distance` units drawing a line if the pen is down

This library provides a simplified, interactive version of the API provided by library `(lispkit draw turtle)`.

***

**(init-turtle)** <img src="/files/STqjiJsrexexyFklGQwH" alt="" data-size="line">\
\&#xNAN;**(init-turtle scale)**\
\&#xNAN;**(init-turtle scale title)**

Initializes a new turtle and displays its drawing in a graphics window. `init-turtle` gets two optional arguments: `scale` and `title`. `scale` is a scaling factor which determines the size of the turtle drawing. `title` is a string that defines the window name of the turtle graphics. It also acts as the identify of the turtle graphics window; i.e. it won't be possible to have two sessions with the same name but a different graphics window.

**(close-turtle-window)** <img src="/files/STqjiJsrexexyFklGQwH" alt="" data-size="line">

Closes the turtle window and resets the turtle library.

**(turtle-drawing)** <img src="/files/STqjiJsrexexyFklGQwH" alt="" data-size="line">

Returns the drawing associated with the current turtle.

**(pen-up)** <img src="/files/STqjiJsrexexyFklGQwH" alt="" data-size="line">

Lifts the turtle from the plane. Subsequent `forward` and `backward` operations don't lead to lines being drawn. Only the current coordinates are getting updated.

**(pen-down)** <img src="/files/STqjiJsrexexyFklGQwH" alt="" data-size="line">

Drops the turtle onto the plane. Subsequent `forward` and `backward` operations will lead to lines being drawn.

**(pen-color&#x20;*****color*****)** <img src="/files/STqjiJsrexexyFklGQwH" alt="" data-size="line">

Sets the drawing color of the turtle to *color*. *color* is a color object as defined by library `(lispkit draw)`.

**(pen-size&#x20;*****size*****)** <img src="/files/STqjiJsrexexyFklGQwH" alt="" data-size="line">

Sets the pen size of the turtle to *size*. The pen size corresponds to the width of lines drawn by `forward` and `backward`.

**(home)** <img src="/files/STqjiJsrexexyFklGQwH" alt="" data-size="line">

Moves the turtle to its home position.

**(move&#x20;*****x y*****)** <img src="/files/STqjiJsrexexyFklGQwH" alt="" data-size="line">

Moves the turtle to the position described by the coordinates *x* and *y*.

**(heading&#x20;*****angle*****)** <img src="/files/STqjiJsrexexyFklGQwH" alt="" data-size="line">

Sets the heading of the turtle to *angle*. *angle* is expressed in terms of degrees.

**(turn&#x20;*****angle*****)** <img src="/files/STqjiJsrexexyFklGQwH" alt="" data-size="line">

Adjusts the heading of the turtle by *angle* degrees.

**(right&#x20;*****angle*****)** <img src="/files/STqjiJsrexexyFklGQwH" alt="" data-size="line">

Adjusts the heading of the turtle by *angle* degrees.

**(left&#x20;*****angle*****)** <img src="/files/STqjiJsrexexyFklGQwH" alt="" data-size="line">

Adjusts the heading of the turtle by *-angle* degrees.

**(forward&#x20;*****distance*****)** <img src="/files/STqjiJsrexexyFklGQwH" alt="" data-size="line">

Moves the turtle forward by *distance* units drawing a line if the pen is down.

**(backward&#x20;*****distance*****)** <img src="/files/STqjiJsrexexyFklGQwH" alt="" data-size="line">

Moves the turtle backward by *distance* units drawing a line if the pen is down.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://www.lisppad.app/libraries/lisppad/turtle.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
