O Módulo Turtle¶
Turtle é um módulo embutido (built-in) do Python que tem por objetivo ensinar programação à crianças.
Com este módulo temos essencialmente duas classes: Screen() e Turtle().
Aqui estão alguns exemplos do que é possível fazer com a Tartaruga. Estes exemplos foram retirados do Portal Acervo Lima, que por sua vez são traduções do portal GeeksforGeeks. Todos exemplos estão sob licença CreativeCommons.
Relógio Digital¶
import time
import datetime as dt
import turtle
# cria duas instâncias do objeto turtle
t = turtle.Turtle() # para a hora em si
t1 = turtle.Turtle() # para a borda
# cria a tela (SCREEN)
s = turtle.Screen()
# escolhe a cor de fundo da tela
s.bgcolor("green")
# cria três variáveis que armazenam a hora atual
segundos = dt.datetime.now().second
minutos = dt.datetime.now().minute
hora = dt.datetime.now().hour
# define a grossura (width) e a cor da caneta da borda para a instância t1
t1.pensize(3)
t1.color('black')
t1.penup()
t1.goto(-20, 0)
t1.pendown()
# desenha a borda
for i in range(2):
t1.forward(200) # distância horizontal
t1.left(90) # graus para a esquerda
t1.forward(70) # distância vertical
t1.left(90) # retorna para direita
# esconde a tartaruga t1
t1.hideturtle()
# cria um loop infinito que mantém a hora atualizada
while True:
# mantém escondida a tartaruga t
t.hideturtle()
t.clear()
# usa o método write() passando as horas, minutos e segundo
# usa-se o zfill() para que sempre tenham duas casas, p.ex. quando for "2 horas" mostrará "02 horas"
# e define o parâmetro font=()
t.write(str(hora).zfill(2)
+ ":" + str(minutos).zfill(2) + ":"
+ str(segundos).zfill(2),
font=("Arial Narrow", 35, "bold"))
# pausa o programa por 01 segundo
time.sleep(1)
# aumenta manualmente os segundos
segundos += 1
# lógica de um relógio digital
if segundos == 60:
segundos = 0
minutos += 1
if minutos == 60:
minutos = 0
hora += 1
if hora == 24:
hora = 1
Arco-íris¶
import turtle
import time
sc = turtle.Screen()
pen = turtle.Turtle()
def semi_circle(col, rad, val):
# atribui cor à caneta
pen.color(col)
# desenha um semicirculo com o método circle()
# no caso, -180 é um parâmetro opcional, por default circle() desenha um circulo completo.
pen.circle(rad, -180)
# levanta a caneta, ou seja, NÃO desenha enquanto se move
pen.up()
# reposiciona a caneta
pen.setpos(val, 0)
# abaixa a caneta e reposiciona o ângulo
pen.down()
pen.right(180)
col = ['violet', 'indigo', 'blue',
'green', 'yellow', 'orange', 'red']
# tamanho da tela
sc.setup(600, 600)
# cor de fundo
sc.bgcolor('#d6ffff')
pen.right(90) # angulo a direita
pen.width(10) # espessura do contorno
pen.speed(7) # velocidade do desenho
# cria um laço iterativo que irá ser executadoi 07 vezes
# para cada iteração será selecionado uma cor diferente e
# a caneta será reposicionada
for i in range(7):
semi_circle(col[i], 10 * (
i + 8), -10 * (i + 1))
time.sleep(1)
pen.hideturtle()
Octógono¶
import turtle
import time
ws = turtle.Screen()
t = turtle.Turtle()
t.pencolor("blue")
t.speed(3)
t.pensize(5)
# o loop abaixo será executado 08 vezes
# a cada iteração a caneta andará 100 e depois girará 45º à esquerda
for i in range(8):
t.forward(100)
t.left(45)
time.sleep(2)
Teia de aranha¶
""""
O laço interno se preocupa com a construção de uma única espiral em espiral e com as camadas da teia,
enquanto o laço externo controla o número de espirais a serem construídas.
"""
# importando o módulo turtle como "t", não precisamos instanciar a classe
import turtle as t
import time
t.speed(2)
# A tartaruga é movida para frente e para trás para construir primeiro os fios.
# A tartaruga é girada em um ângulo de 60 graus para desenhar cada fio .
for i in range(6):
t.forward(100)
t.backward(100)
t.right(60)
side = 50 # O comprimento da rosca espiral é definido como 50
t.fillcolor("Yellow")
t.begin_fill()
# O laço interno se preocupa com a construção de uma única espiral em espiral e com as camadas da teia,
# enquanto o laço externo controla o número de espirais a serem construídas.
for i in range(10):
t.penup()
t.goto(0, 0)
t.pendown()
t.setheading(0)
t.forward(side)
t.right(120)
for j in range(6):
t.forward(side - 2)
t.right(60)
side = side - 10 # reduzimos o tamanho em 10 a cada iteração.
t.end_fill()
time.sleep(2)
Gráfico de Barras¶
# Python program to draw a turtle
import turtle
# Function that draws the turtle
def desenha_barras(t, height, color):
# Começa o preenchimento
t.fillcolor(color)
t.begin_fill()
t.left(90)
t.forward(height)
t.write(str(height))
t.right(90)
t.forward(40)
t.right(90)
t.forward(height)
t.left(90)
# para o preenchimento
t.end_fill()
# xs é uma lista que recebe número de barras e suas alturas
xs = [48, 117, 150, 96, 134, 160, 90]
clrs = ["green", "red", "yellow", "black",
"pink", "brown", "blue"]
maxheight = max(xs)
numbars = len(xs)
border = 7
# Set up the window and its
# attributes
wn = turtle.Screen()
wn.setworldcoordinates(0 - border, 0 - border,
80 * numbars + border,
maxheight + border)
# Cria instância da classe
tess = turtle.Turtle()
tess.pensize(3)
for i in range(len(xs)):
desenha_barras(tess, xs[i],
clrs[i])
wn.exitonclick()```
## Estrela
![estrela](https://user-images.githubusercontent.com/72423464/163490419-5e9b995a-5e73-4065-b7f1-a2a4ce163318.gif)
```python
estrela.py
Smile¶
import turtle
import time
pen = turtle.Turtle()
def eye(col, rad):
pen.down()
pen.fillcolor(col)
pen.begin_fill()
pen.circle(rad)
pen.end_fill()
pen.up()
pen.fillcolor('yellow')
pen.begin_fill()
pen.circle(100)
pen.end_fill()
pen.up()
pen.goto(-40, 120)
eye('white', 15)
pen.goto(-37, 125)
eye('black', 5)
pen.goto(40, 120)
eye('white', 15)
pen.goto(40, 125)
eye('black', 5)
pen.goto(0, 75)
eye('black', 6)
pen.goto(-40, 85)
pen.down()
pen.right(90)
pen.circle(40, 180)
pen.up()
pen.goto(-10, 45)
pen.down()
pen.right(180)
pen.fillcolor('red')
pen.begin_fill()
pen.circle(10, 180)
pen.end_fill()
pen.hideturtle()
time.sleep(2)
Relógio¶
import turtle
import time
screen = turtle.Screen()
# configuração da tela
screen.setup(500, 500)
# instância turtle
clk = turtle.Turtle()
# cor da tartaruga
clk.color('Green')
# espessura contorno
clk.width(4)
def draw_hour_hand():
clk.penup()
clk.home()
clk.right(90)
clk.pendown()
clk.forward(100)
# valores numericos do relogio
val = 0
# loop para imprimir numeros
for i in range(12):
# incrementa 1
val += 1
# move a tartaruga
clk.penup()
# movimento circular
clk.setheading(-30 * (i + 3) + 75)
clk.forward(22)
# coloca caneta na superfície
clk.pendown()
# move para linha tracejada
clk.forward(15)
clk.penup()
clk.forward(20)
# escreve numeros
clk.write(str(val), align="center",
font=("Arial",
12, "normal"))
clk.setpos(2, -112)
clk.pendown()
clk.width(2)
# preencher de verde
clk.fillcolor('Green')
# começa preenchimento
clk.begin_fill()
# faz circulo de radius 5
clk.circle(5)
# fim preenchimento
clk.end_fill()
clk.penup()
draw_hour_hand()
clk.setpos(-20, -64)
clk.pendown()
clk.penup()
# seleciona posição e escreve texto
clk.setpos(-30, -170)
clk.pendown()
clk.write(' Relógio com \n Turtle', font=("Arial", 12,
"normal"))
clk.hideturtle()
turtle.done()
time.sleep(2)