Aula15 - Python - O Modulo Turtle PDF
Aula15 - Python - O Modulo Turtle PDF
turtle.Turtle():
Cria um objeto turtle
forward(d) ou fd(d):
Movimenta o objeto turtle na direção apontada por uma distância d.
left(g) ou lt(g):
Gira à esquerda o objeto turtle de g graus.
Exercícios:
P15.1) Dados a e b inteiros menores ou iguais a 100, desenhar um retângulo de lados a e b. Estamos limitando
o tamanho apenas para o objeto caber na tela padrão.
P15.2) Dado a inteiro menor ou igual a 100, desenhar um triângulo equilátero (dica - o ângulo interno é 60. –
qual o ângulo de desvio?)
P15.4) Idem para um polígono regular qualquer, ou seja, dado um comprimento de lado L, um número de
lados N, construir um polígono regular com N lados. Lembre-se que o ângulo interno de um polígono regular
é dado por 180*(N-1)/N.
Dadas três tartarugas, vamos agora promover uma disputa entre elas. Uma corrida linear de uma dada
distância. Para diferenciar a velocidade das tartarugas vamos a cada ciclo fazer com que deem 0, 1 ou 2
passos aleatoriamente. Há também um juiz que traça a linha de chegada e se posiciona para verificar quem
chegou primeiro.
# criar os competidores
alex = turtle.Turtle()
blex = turtle.Turtle()
clex = turtle.Turtle()
# contadores
n_venc = 0 # número de vencedores da corrida
alex_passos = 0 # número de passos de alex
blex_passos = 0 # número de passos de blex
clex_passos = 0 # número de passos de clex
alex.penup()
alex.setpos(0, 50)
alex.pendown()
clex.penup()
clex.setpos(0, -50)
clex.pendown()
# cores
alex.color("blue")
blex.color("green")
clex.color("red")
# aparência
alex.shape("turtle")
blex.shape("turtle")
clex.shape("turtle")
# largura da linha
alex.pensize(5)
blex.pensize(5)
clex.pensize(5)
# inicia a corrida
# vamos usar 1000 ciclos - suficiente para terminar uma corrida
# random.seed()
for i in range(1000):
# movimenta alex
k = random.randrange(5)
alex.forward(k)
alex_passos += k
if alex_passos >= passos:
print("alex venceu a corrida")
n_venc += 1
# movimenta blex
k = random.randrange(5)
blex.forward(k)
blex_passos += k
if blex_passos >= passos:
print("blex venceu a corrida")
n_venc += 1
# movimenta clex
k = random.randrange(5)
clex.forward(k)
clex_passos += k
if clex_passos >= passos:
print("clex venceu a corrida")
n_venc += 1
color(“nome da cor”)
Cor da linha a ser desenhada. Existem centenas de cores. Veja mais exemplos abaixo.
shape(“forma do objeto”)
Forma do objeto que simula a caneta. Pode ser: “arrow”, “turtle”, “circle”, “square”, “triangle”, “classic”.
Mais exemplos abaixo.
pensize(“largura da linha”)
Largura da linha traçada. Mais exemplos abaixo.
A dimensão padrão da tela é de 400 x 300 pixels. As coordenadas padrões são -200 a +200 no eixo horizontal
e -150 a +150 no eixo vertical. Pode ser alterada pela função screensize:
Exemplos:
turtle.screensize(1000, 800, “orange”) – redefine a tela com largura 1000, altura 800 e cor de fundo laranja.
Todo novo objeto turtle quando criado (turtle.Turtle()) estará na posição de coordenadas (0, 0).
Assim, podemos usar toda a tela para posicionar nossa caneta ou tartaruga. Exemplos:
t1 = turtle.Turtle
t1.goto(-100, 200)
t1.goto(50, -100)
t1.goto(0, -50)
import turtle
from math import sqrt
tess = turtle.Turtle()
tess.color("blue") # define a cor da caneta
tess.pensize(5) # define a espessura da caneta
tess.forward(200)
tess.stamp() # deixa um carimbo por onde passa
tess.left(90)
tess.forward(200)
tess.stamp()
tess.left(135)
tess.forward(sqrt(200**2 + 200**2))
tess.stamp()
O exemplo abaixo posiciona o objeto, sem traçar, nas extremidades dos ângulos de 0, 45°, 90°, ..., 315°.
Execute e veja o resultado. Veja também os comentários autoexplicativos.
import turtle
from math import sqrt, sin, cos, pi
# posiciona e marca o objeto nos ângulos 0, 45, 90, 135, ..., 315
for i in range(8):
alfa = pi / 4 * i
x = 300 * cos(alfa)
y = 300 * sin(alfa)
ttt.goto(x, y)
ttt.stamp()
Exercícios
P15.5) Executar o programa acima alterando os vários parâmetros (cores, formas, velocidades, etc.) para se
familiarizar com o resultado das várias funções.
P15.6) Refaça o P15.2 desenhando cada lado do triângulo de cor diferente – sugestão: use um comando for
da seguinte forma:
P15.8) Refaça o P15.4 alternado a cor dos lados entre azul e vermelho.
P15.9) Refaça agora a corrida das tartarugas mudando: a cor de fundo da tela, a cor do juiz e da reta de
chegada, usando cores diferentes para cada tartaruga, usando a posição inicial na extrema esquerda da tela,
aumentando o tamanho da tela para uma corrida mais disputada, alterando a velocidade das tartarugas.
As cores
Existem centenas de cores que podem ser utilizadas. Uma relação completa com os nomes respectivos pode
ser encontrada em:
http://wiki.tcl.tk/37701
Existem várias outras funções dentro do módulo além das usadas aqui. Uma relação completa pode ser
encontrada em
https://docs.python.org/3.0/library/turtle.html
Uma tartaruga (turtle) é um objeto do módulo turtle. A cada objeto criado dizemos que estamos criando uma
instância do mesmo. O objeto contém atributos. No caso, a cor, a forma, etc. Esses atributos são adquiridos
pelo objeto através de funções ou métodos deste módulo. Usamos indistintamente as palavras função e
método para designar as operações que podem ser feitas sobre os objetos ou não deste módulo.
Podemos usar o módulo turtle para traçar o gráfico de funções. Para tanto basta estabelecermos o intervalo e
verificar se o gráfico cabe no espaço fornecido. Senão é necessário alterar a escala no eixo y para mais ou
menos.
Para exemplificar vamos determinar o tamanho da tela de 600 x 600 e uma função que no intervalo [-300,
300] tenha valores também nesse intervalo. Por exemplo f(x) = 300 * sin (x / 25). Veja o programa abaixo:
import turtle
from math import sin
def f(a):
return 300 * sin(a / 25)
# traçar os eixos x e y
tx = turtle.Turtle() # cria o objeto turtle ttt
ty = turtle.Turtle()
tx.penup()
tx.goto(-300, 0)
tx.pendown()
tx.goto(300, 0)
ty.penup()
ty.goto(0, -300)
ty.pendown()
ty.goto(0, 300)
ty.left(90)
# traçar o gráfico
tg = turtle.Turtle()
tg.penup()
tg.goto(-300, f(-300)) # posiciona a caneta no inicio do grafico
tg.pendown()
tg.color("red")
P15.11) Escolha outras funções que cabem neste intervalo e modifique o programa.
Modificando a escala
Para traçar o gráfico de funções genéricas, temos que ter mais informações sobre as mesmas para que caibam
no gráfico. Por exemplo: funções crescentes no intervalo [0, 10]. Podemos dedicar toda a tela a esse gráfico.
Vamos traçar o gráfico da função x3 + x2 + x + 1 no intervalo [0, 10].
import turtle
from math import sin
def f(x):
return x * x * x + x * x + x + 1
# traçar os eixos x e y
tx = turtle.Turtle() # cria o objeto turtle ttt
ty = turtle.Turtle()
fmin = f(0)
fmax = f(10)
# traçar os eixos x e y
tx.penup()
tx.goto(0, 0)
tx.pendown()
tx.goto(10, 0)
ty.penup()
ty.goto(0, fmin)
ty.pendown()
ty.goto(0, fmax)
ty.left(90)
# traçar o gráfico
tg = turtle.Turtle()
tg.penup()
tg.goto(0, f(0)) # posiciona a caneta no inicio do grafico
tg.pendown()
tg.color("blueviolet")
tg.pensize(4)
i = 0
while i <= 10:
tg.goto(i, f(i))
i = i + 0.1
A função setworldcoordinates(xmin, ymin, xmax, ymax) normaliza o tamanho do gráfico para o tamanho da
tela. xmin e ymin são as coordenadas do ponto mais a esquerda e mais abaixo. xmax e ymax os da direita.
P15.12) Adapte o programa acima para traçar o gráfico no intervalo [-10, 10].
P15.13) Procure funções que você possa determinar o máximo e o mínimo num determinado intervalo e
adapte o programa acima para traçar o gráfico da mesma.
P15.13) Generalize o programa acima para qualquer função no intervalo [a, b] da qual se conhece o máximo e
mínimo neste intervalo. Ou seja, dados a, b, fmax, fmin e um determinado passo (exemplo 0.01), traçar o
gráfico desta função.