domingo, 29 de novembro de 2015

Vermes em passeio

Vamos regressar ao módulo turtle para ilustrar um aspecto pouco referido nas aulas. É possível a tartaruga marcar os pontos por onde passou graças ao comando stamp(). Também se pode apagar as marcas com vários comandos, por exemplo, com clearstamps(). O leitor é convidado a consultar o manual da linguagem para os detalhes. O exemplo que se segue mostra como podemos simular um passeio (mais ou menos) aleatório de um verme.
01.import turtle
02.import random
03. 
04.def bug(length, step, life):
05.    # initialization
06.    turtle.penup()
07.    theta = 0
08.    dtheta = 1
09.    turtle.color(random.choice([‘red','blue','yellow','green','black']))
10.    # draw bug
11.    for j in range(length):
12.        turtle.forward(step)
13.        turtle.left(theta)
14.        theta += dtheta
15.        turtle.stamp() 
16.    # move
17.    for i in range(life):
18.        turtle.clearstamps(1)
19.        if abs(ycor()) > 400:
20.            turtle.left(30)
21.        if abs(xcor()) > 400:
22.            turtle.right(30)
23.        if theta > 10 or theta < -10:
24.            dtheta = -dtheta               
25.        turtle.forward(step)
26.        turtle.left(theta)
27.        theta += dtheta
28.        turtle.stamp()
29. 
30.if __name__ == '__main__':
31.    turtle.setworldcoordinates(-500, -500, 500, 500)
32.    bug(10, 15, 500)
33.    turtle.exitonclick()
O programa acima tem três parâmetros: o comprimento do verme (length), a amplitude de cada movimento (step), e o numero de movimentos (life), Tem também três partes distintas. Na primeira, inicializamos o sistema, definimos o valor da variação da orientação que nos permite simular um movimento ondulatório (dtheta), e escolhemos aleatoriamente uma cor. Na segunda, o primeiro ciclo for, desenhamos o verme inicial. Na terceira, pomos o verme e movimentar-se. Notar-se-á que fechamos a zona onde se pode movimentar, um quadrado 400X400. Com o método setworlcoordinates() limitamos o tamanho máximo do mundo. Execute o programa para ter uma ideia do que se passa. Procure alterar os vários parâmetros e ver as consequências. Altere o programa para que o passeio seja mais naturalmente aleatório. Nota: Este exemplo foi adaptado do livro de Mark J. Johnson "A concise introduction to programming ion Python".

Sem comentários:

Enviar um comentário