Skip to content
/ turtle Public

A simple turtle-implementation, using FORTH as a scripting-language

Notifications You must be signed in to change notification settings

skx/turtle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

turtle

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.

Usage

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:

Result

Animated output of _examples/squares.4th, showing how it was created:

Result Animated

You can find example scripts beneath _examples/

Words

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.

Github Setup

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.