This repository contains a trivial implementation of a turtle-graphics thing.
We've embedded a simple FORTH Interpreter and we use that to allow the user to run scripts to control the standard turtle.
Run the application with the path to a script:
./turtle ./foo.in
The generated output will be saved in turtle.png
, and an animation will be saved alongside it as turtle.gif
:
Rendered output of _examples/squares.4th:
Animated output of _examples/squares.4th, showing how it was created:
You can find example scripts beneath _examples/
The following words are defined in words.go (and connected to the interpreter in main.go
):
direction
- Pop one word from the stack, set the direction to that value.
forward
- Pop one word from the stack, move that much forward.
move
- Pop two words off the stack, move to the specified coordinates.
- Note
move
is like a teleport, there is no drawing involved.
pen
- Pope one word from the stack, if 0 lift the pen, else lower it.
- Drawing only occurs when the pen is down.
save
- Saves the current state of the paper, and the animation of how we got there.
turn
- Pop one word from the stack, increase the movement direction by that many degrees.
This repository is configured to run tests upon every commit, and when pull-requests are created/updated. The testing is carried out via .github/run-tests.sh which is used by the github-action-tester action.