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.
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.
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º.
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.
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. Follow @stummjr



Você precisa fazer login para comentar.