# Microbit Turtles

Turtle graphics are a time-honoured way to teach algorithmic thinking and are supported in regular python.

Here’s a small implementation of a turtle, complete with animation speed and pen support, for the microbit.

``````
from microbit import *

Direction_Up = 0
Direction_Down = 1
Direction_Left = 2
Direction_Right = 3

class Turtle:

def __init__(self):
self.direction = Direction_Up
self.x = 2
self.y = 2
self.speed = 500
self.pen = False

def home(self):
self.goto(2, 2)

def forward(self, steps = 1):

x_delta, y_delta = 0, 0

if self.direction == Direction_Up:
y_delta = -1
elif self.direction == Direction_Down:
y_delta = 1
elif self.direction == Direction_Left:
x_delta = -1
else:
x_delta = 1

for i in range(steps):
self.goto(self.x + x_delta, self.y + y_delta)
sleep(self.speed)

def goto(self, x, y):

if not self.pen:
display.set_pixel(self.x, self.y, 0)

self.x = min(max(0, x), 4)
self.y = min(max(0, y), 4)

display.set_pixel(self.x, self.y, 9)

def left(self):
if self.direction == Direction_Up:
self.direction = Direction_Left
elif self.direction == Direction_Left:
self.direction = Direction_Down
elif self.direction == Direction_Down:
self.direction = Direction_Right
else:
self.direction = Direction_Up

def right(self):
if self.direction == Direction_Up:
self.direction = Direction_Right
elif self.direction == Direction_Right:
self.direction = Direction_Down
elif self.direction == Direction_Down:
self.direction = Direction_Left
else:
self.direction = Direction_Up

def pendown(self):
self.pen = True

def penup(self):
self.pen = False

``````

The turtle always starts off in the centre of the screen, facing up. We can draw a tiny 1 pixel square using dots that disappear when a new one appears:

``````
turtle = Turtle()

# square

for i in range(4):
turtle.forward(1)
turtle.right()

``````

Or we can use the pen to draw an outline around the screen from the top left corner.

``````
turtle = Turtle()

turtle.goto(0, 0)
turtle.right()

turtle.pen_down()

for index in range(4):
turtle.forward(4)
turtle.right()

``````