0% acharam este documento útil (0 voto)
473 visualizações9 páginas

Aula15 - Python - O Modulo Turtle PDF

O documento descreve o módulo turtle em Python, que permite desenhar graficamente. Apresenta exemplos de como usar funções como forward(), left(), color() para criar formas geométricas e programar uma corrida de tartarugas. Fornece também detalhes sobre atributos visuais como cor, forma e tamanho da linha.

Enviado por

Hitalo Pinheiro
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
473 visualizações9 páginas

Aula15 - Python - O Modulo Turtle PDF

O documento descreve o módulo turtle em Python, que permite desenhar graficamente. Apresenta exemplos de como usar funções como forward(), left(), color() para criar formas geométricas e programar uma corrida de tartarugas. Fornece também detalhes sobre atributos visuais como cor, forma e tamanho da linha.

Enviado por

Hitalo Pinheiro
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 9

Aula 15 – O módulo turtle – exemplo de módulo gráfico

MAC 110/115 – Python - Marcilio

Aula 15 – O módulo turtle – exemplo de módulo gráfico


O módulo turtle (tartaruga) é um módulo de demonstração de processamento gráfico muito interessante.
E na verdade um módulo educacional construído originalmente para mostrar possibilidades gráficas da
computação. Apenas como motivação, designamos o objeto que traça o desenho como uma tartaruga, mas
poderia ser simplesmente uma caneta.

O exemplo abaixo constrói um retângulo 162x100. A unidade são pixels da tela

import turtle # vamos usar as funções/objetos do módulo turtle

alex = turtle.Turtle() # cria um turtle chamado alex


alex.forward(162) # manda o alex se mover 162 unidades para frente
alex.left(90) # roda de 90 graus para a esquerda
alex.forward(100) # desenha o segundo lado do retângulo
alex.left(90) # roda de 90 graus para a esquerda
alex.forward(162) # desenha o terceiro lado do retângulo
alex.left(90) # roda de 90 graus para a esquerda
alex.forward(100) # desenha o quarto lado do retângulo.

Teste esse programa no seu computador e veja o resultado.

Funções e objetos utilizados:

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.3) Idem para um pentágono.

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.

Uma corrida de tartarugas

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.

Teste o programa abaixo e verifique o que ocorre:

Aula 15 – O módulo turtle – exemplo de módulo gráfico


MAC 110/115 – Python - Marcilio
Aula 15 – O módulo turtle – exemplo de módulo gráfico
MAC 110/115 – Python - Marcilio

import turtle # permite usar as funções e objetos do módulo turtle


import random # para determinar os passos em cada ciclo

# criar os competidores
alex = turtle.Turtle()
blex = turtle.Turtle()
clex = turtle.Turtle()

# define a quantidade de passos da corrida


passos = 200 # corrida de 200 passos

# criar o juiz, traçar a linha de chegada e se posicionar


juiz = turtle.Turtle()
juiz.penup()
juiz.setpos(200, 100)
juiz.right(90)
juiz.pendown()
juiz.forward(200)
juiz.right(180)

# 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

# posiciona alex e clex. blex já está posicionado

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):

Aula 15 – O módulo turtle – exemplo de módulo gráfico


MAC 110/115 – Python - Marcilio
Aula 15 – O módulo turtle – exemplo de módulo gráfico
MAC 110/115 – Python - Marcilio

# 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

if (n_venc > 0): break

#temos um ou mais vencedores


if (n_venc == 1): print("temos um vencedor")
else: print("houve empate")

Funções e objetos utilizados:

penup() ou pu() ou up():


Levanta a pena de desenho. Movimenta o objeto sem desenhar.

pendown() ou pd() ou down()


Abaixa a pena de desenho. O movimento do objeto vai provocar o rastro (desenho).

setpos(x, y = None) ou goto(x, y = None) ou setposition(x, y = None)


Movimenta o objeto para a posição x, y. Se não tem o parâmetro y, x deve ser um par de coordenadas na
forma pos(a, b).

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.

O posicionamento padrão e dimensões da tela

Aula 15 – O módulo turtle – exemplo de módulo gráfico


MAC 110/115 – Python - Marcilio
Aula 15 – O módulo turtle – exemplo de módulo gráfico
MAC 110/115 – Python - Marcilio

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:

turtle.screensize(largura, altura, cor-de-fundo)

Exemplos:

turtle.screensize(1000, 800, “orange”) – redefine a tela com largura 1000, altura 800 e cor de fundo laranja.

turtle.screensize() – devolve a largura e altura da tela atual

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)

Atributos visuais do objeto turtle

Execute o exemplo a seguir. Os comentários são autoexplicativos. Os comandos alteram as características


visuais do objeto turtle e da tela.

import turtle
from math import sqrt

wn = turtle.Screen() # dá um nome ao objeto tela


wn.bgcolor("lightgreen") # define a cor de fundo da janela
# pode usar as cores tradicionais:
# red, yellow, black, blue, etc.

tess = turtle.Turtle()
tess.color("blue") # define a cor da caneta
tess.pensize(5) # define a espessura da caneta

tess.shape("turtle") # define a forma do objeto turtle


# pode ser também arrow, blank, circle, classic,
# square, triangle

tess.speed(4) # controla a velocidade da tartaruga.


# de 1 (mais lenta) a 10 (mais rápida)

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()

wn.exitonclick() # apaga a janela após um click

Aula 15 – O módulo turtle – exemplo de módulo gráfico


MAC 110/115 – Python - Marcilio
Aula 15 – O módulo turtle – exemplo de módulo gráfico
MAC 110/115 – Python - Marcilio

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

wn = turtle.Screen() # dá um nome ao objeto tela


wn.bgcolor("lightsalmon") # define a cor de fundo da tela

wn.screensize(600, 600) # define o tamanho da tela


#(-300, 300) nos eixos x e y

ttt = turtle.Turtle() # cria o objeto turtle ttt


ttt.shape("turtle") # forma do objeto
ttt.color("blue") # cor do objeto
ttt.penup() # levanta a pena da caneta

# 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()

wn.exitonclick() # apaga a janela após um click

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:

for cores in [“blue”, “black”, “green”]:


...

P15.7) Refaça o P15.3 desenhando cada lado do pentágono de cor diferente

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

Uma pequena amostra:

Aula 15 – O módulo turtle – exemplo de módulo gráfico


MAC 110/115 – Python - Marcilio
Aula 15 – O módulo turtle – exemplo de módulo gráfico
MAC 110/115 – Python - Marcilio

As funções ou métodos do módulo turtle

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

Objetos, atributos e métodos

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.

Outra aplicação – gráfico de funções

Aula 15 – O módulo turtle – exemplo de módulo gráfico


MAC 110/115 – Python - Marcilio
Aula 15 – O módulo turtle – exemplo de módulo gráfico
MAC 110/115 – Python - Marcilio

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)

wn = turtle.Screen() # dá um nome ao objeto tela


wn.bgcolor("lightsalmon") # define a cor de fundo da tela

wn.screensize(600, 600) # define o tamanho da tela


#(-300, 300) nos eixos x e y

# 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")

for i in range(-300, 300):


tg.goto(i, f(i))

wn.exitonclick() # apaga a janela após um click

P15.10) Modifique o programa acima para traçar o gráfico da função f(x) = | x |

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].

Aula 15 – O módulo turtle – exemplo de módulo gráfico


MAC 110/115 – Python - Marcilio
Aula 15 – O módulo turtle – exemplo de módulo gráfico
MAC 110/115 – Python - Marcilio

import turtle
from math import sin

def f(x):
return x * x * x + x * x + x + 1

wn = turtle.Screen() # dá um nome ao objeto tela


wn.bgcolor("palegreen") # define a cor de fundo da tela

wn.screensize(600, 600) # define o tamanho da tela


#(-300, 300) nos eixos x e y

# traçar os eixos x e y
tx = turtle.Turtle() # cria o objeto turtle ttt
ty = turtle.Turtle()

fmin = f(0)
fmax = f(10)

# adequa a escala do gráfico ao tamanho da tela


wn.setworldcoordinates(0, fmin, 10, fmax)

# 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

wn.exitonclick() # apaga a janela após um click

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.

Aula 15 – O módulo turtle – exemplo de módulo gráfico


MAC 110/115 – Python - Marcilio
Aula 15 – O módulo turtle – exemplo de módulo gráfico
MAC 110/115 – Python - Marcilio

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.

Aula 15 – O módulo turtle – exemplo de módulo gráfico


MAC 110/115 – Python - Marcilio

Você também pode gostar