Turtle é um módulo Python que oferece funcionalidades para fazermos desenhos na tela, com comandos muito simples. Esse módulo segue a idéia da linguagem de programação Logo, que é muito utilizada em escolas como apoio ao ensino de disciplinas regulares e também para introdução a programação para crianças. A linguagem Logo segue a ideia de um robô (representado na tela por uma tartaruga) que o usuário pode controlar através de comandos simples de movimentação.
Vou apresentar aqui alguns dos recursos básicos do módulo turtle e mostrar como fazer alguns desenhos simples na tela.
Instalação no Ubuntu
Usando o sistema operacional Ubuntu, é preciso instalar o pacote python-tk, além do python.
sudo apt-get install python-tk
Iniciando
Em primeiro lugar, é necessário importar o módulo turtle.
import turtle
Depois disso, é necessário obter uma caneta (Pen).
pen = turtle.Pen()
Em seguida, teremos uma tela em branco, com um ponteiro posicionado no centro, apontando para o lado direito. OK, agora temos que mandar a caneta ser movimentada. Para isso temos dois comandos principais:
- turtle.forward(n) → Faz com que a caneta se movimente na tela, para frente, n posições
- turtle.backward(n) → Faz com que a caneta se movimente na tela, para trás, n posições
Mas e existe algum comando para fazer com que a caneta (ponteiro) vire para os lados? A resposta é sim! São os comandos:
- turtle.left(ang) → gira o ponteiro em ang graus para a esquerda
- turtle.right(ang) → gira o ponteiro em ang graus para a direita
OK, mas e na prática? Considere o exemplo a seguir:
import turtle
pen = turtle.Pen() # Constrói um objeto caneta (Pen)
pen.forward(100) # anda 100 posições para a frente
pen.right(45) # gira o ponteiro em 45 graus para a direita
pen.forward(100) # anda mais 100 posições para a frente
O resultado de sua execução pode ser visto na Figura 1.

Figura 1. Tela de desenho do turtle
O que o código fez foi mandar a caneta se movimentar 100 posições para a frente, virar o sentido da caneta em 45 graus para a direita e mandar a caneta se movimentar mais 100 posições para a frente.
Algumas Formas Geométricas
Agora que já vimos como desenhar uma linha na tela e como fazer com que o ponteiro gire, podemos usar a criatividade para compor algumas formas geométricas conhecidas. Vamos começar pela mais simples de todas: o quadrado.
O Quadrado
Considere que você é o ponteiro que aparece no centro da tela e que a tela é uma grande área de areia onde você está (na praia, por exemplo). Se você quiser desenhar um grande quadrado de 4m de lado na areia usando um graveto, o que terá que fazer?
- Caminhar em frente por 4m, arrastando um graveto na areia
- Girar o corpo 90º para a esquerda
- Caminhar em frente por 4m, arrastando o graveto na areia
- Girar o corpo 90º para a esquerda
- Caminhar em frente por 4m, arrastando o graveto na areia
- Girar o corpo 90º para a esquerda
- Caminhar em frente por 4m, arrastando o graveto na areia
- Nesse momento você volta ao ponto de origem, correto?
Pronto, o quadrado está desenhado no chão. Para desenhar usando o módulo turtle, você deverá usar a mesma lógica.
import turtle
pen = turtle.Pen()
pen.forward(100)
pen.left(90)
pen.forward(100)
pen.left(90)
pen.forward(100)
pen.left(90)
pen.forward(100)
A Figura 2 mostra o resultado da execução do código acima.

Figura 2. Um quadrado
O Triângulo
Imagine o mesmo cenário da areia. Agora você precisa desenhar um triângulo equilátero. Na Figura 3 percebemos que em um triângulo equilátero duas retas sempre são separadas por um ângulo de 60º.

Figura 3. Um triângulo *
Isso quer dizer que, após desenharmos uma reta de tamanho a, devemos girar 120º para um lado e então desenhar outra reta de tamanho a, girar mais 120º para o mesmo lado e desenhar outra reta de tamanho a. Mas por que 120º?
Considere a Figura 4. Nela, vemos uma reta vermelha passando sobre um dos lados e se extendendo para além do fim do triângulo. Nessa reta está identificado um ângulo de 180º, que nada mais é do que meia rotação. Isso significa que, se rotacionarmos o ponteiro em 180º, este irá somente inverter o sentido (experimente isso no turtle). Mas não é isso o que queremos. Queremos posicionar nosso ponteiro em um ângulo de 60º com relação à direção atual. Para isso, temos que rotacionar o ponteiro em 120º (180º-60º), que é o que falta para alcançarmos o ângulo de 60º, como mostra a área vermelha na Figura 4.

Figura 4. Um triângulo equilátero *
import turtle
pen = turtle.Pen()
pen.forward(100)
pen.left(120)
pen.forward(100)
pen.left(120)
pen.forward(100)
Assim sendo, o código abaixo desenha um triângulo equilátero de lado 100 na tela.
O Círculo
O módulo turtle já oferece um método pronto para o desenho de círculos. O método circle, disponível em objetos do tipo Pen, desenha um círculo de acordo com o valor do raio, passado a ele como entrada.
import turtle
pen = turtle.Pen()
pen.circle(100)
O exemplo acima desenha um círculo de raio 100.
Métodos Adicionais
Além dos já conhecidos métodos para movimentação e rotação do ponteiro, também contamos com alguns métodos que mudam características do turtle. A seguir, temos alguns deles:
- turtle.speed(): modifica a velocidade do ponteiro. Possui as seguintes opções de velocidade: ‘fastest’, ‘fast’, ‘normal’, ‘slow’, ‘slowest’ (do mais veloz para o menos veloz)
- Pen.color(): modifica cor dos desenhos a serem feitos.
import turtle
pen = turtle.Pen()
turtle.speed('fastest')
pen.color('red')
pen.circle(100)
Exemplos Interessantes
Um círculo sem utilizar o método circle():
import turtle
pen = turtle.Pen()
turtle.speed('fastest')
for i in range(0, 360):
pen.forward(1)
pen.right(1)
Vários círculos, usando o método circle():
import turtle
pen = turtle.Pen()
turtle.speed('fastest')
for i in range(0, 180):
pen.circle(40)
pen.right(5)
É isso, agora basta praticar, usando bastante a criatividade para fazer alguns desenhos legais usando o turtle. 🙂
* As Figuras 3 e 4 são derivadas de http://pt.wikipedia.org/wiki/Ficheiro:Triangolo-Equilatero.png e são distribuídas sob a mesma licença do original.
Você precisa fazer login para comentar.