domingo, 18 de outubro de 2009

Problema 3.6

O módulo cTurtle permite controlar uma tartaruga e a sua caneta que se movimentam numa tela.Em relação à caneta podemos levantá-la (up()) ou baixá-la (down()). Em relação à tartaruga podemos fazer várias coisas: torná-la visível (showturtle()) ou invisível (hideturtle()), controlar a sua orientação (setheading(angulo)), posicioná-la na tela (goto(pos)), entre outras coisas. Podemos ainda fazê-la caminhar para a frente (fiorward(valor)) ou para trás (backward(valor)), rodar para a direita (right(valor)) ou para a esquerda (left(valor)). Para conhecer tudo deve-se importar o módulo e inspeccionar o seu conteúdo com os comandos dir(cTurtle) e com help(cTurtle.nome_do_comando) .


Com comandos tão simples é possível fazer muitos desenhos e animações. Vejamos como se desenha uma espiral semelhante à da figura.






Para isso vamos definir uma função que desenha um quadrado com o canto inferior esquerdo numa dada posição, com uma orientação inicial bem definida e com um certo comprimento para o lado. uma vez isso concretizado, é fácil desenhar a espiral desenhando sucessivos quadrados em que o lado vai aumentando e o mesmo se passando com a orientação inicial.


import cTurtle

def quadrado(lado,pos, angulo):
"""
Desenha um quadrado com o comprimento de lado, o vértice inferior
esquerdo em pos e direção inicial angulo.
"""
# Preparação
cTurtle.up()
cTurtle.goto(pos)
cTurtle.setheading(angulo)
cTurtle.down()

# desenha quadrado
for conta in range(4):
cTurtle.forward(lado)
cTurtle.right(90)
cTurtle.hideturtle()

def espiral(num_quad, lado_inic, incr_lado, pos, angulo_inic, incr_angulo):
"""
Desenha uma espiral de quadrados.
"""
lado = lado_inic
angulo = angulo_inic
for i in range(num_quad):
quadrado(lado, pos, angulo)
lado = lado + incr_lado
angulo = angulo + incr_angulo

cTurtle.mainloop()


Descubra o modo como se alterou a cor. Pode também alterar, por exemplo, a forma da tartaruga, a velocidade a que o desenho é feito, e muitas mais coisas.

Sem comentários:

Enviar um comentário