Numa das últimas aulas resolvemos o problema de desenhar quatro quadrados concêntricos, com o bordo com uma cor pré-determinada.
import turtle
def quadrado(posx, posy,lado,cor):
turtle.penup()
turtle.goto(posx,posy)
turtle.pendown()
turtle.pencolor(cor)
for i in range(4):
turtle.forward(lado)
turtle.left(90)
turtle.hideturtle()
def quadrados(posx, posy,lado,incremento):
quadrado(posx,posy,lado,'red')
quadrado(posx-incremento/2,posy - incremento/2,lado+incremento,'blue')
quadrado(-20,-20,60,'green')
quadrado(-30,-30,80,'black')
if __name__ == '__main__':
quadrados()
turtle.exitonclick()
Trata-se de uma solução simples e modular que tem no seu centro a capacidade de desenhar quadrados numa dada posição, com um dado lado e cor.
Não é muito interessante como solução. Em particular estamos a chamar em sequência a função quadrado tendo o cuidado de calcular os seus argumentos. E se forem dez e não quatro. Vamos ver como podemos escolher as cores, guardando-as num tuplo para posterior escolha. Apresentamos dois casos. As cores são escolhidas por ordem e quase se esgotam voltamos ao início. Ou as são escolhidas aleatoriamente de entre as possíveis.
import turtle
import random
def quadrado(posx,posy,angulo,lado, cor):
# Prepara
turtle.penup()
turtle.goto(posx,posy)
turtle.pendown()
turtle.setheading(angulo)
turtle.pencolor(cor)
# Desenha
for i in range(4):
turtle.forward(lado)
turtle.left(90)
turtle.hideturtle()
def quad_concent(num, lado, incremento, posx,posy, angulo):
# Prepara
turtle.penup()
turtle.goto(posx, posy)
turtle.pendown()
turtle. setheading(angulo)
# Cores
cores = ('red','green','blue','yellow','pink','orange','black')
for i in range(num):
cor = cores[i%len(cores)] # <-- Percebe para que serve?
quadrado(posx,posy,angulo,lado,cor)
posx = posx - incremento/2
posy = posy - incremento/2
lado = lado + incremento
def quad_concent_b(num, lado, incremento, posx,posy, angulo):
# Prepara
turtle.penup()
turtle.goto(posx, posy)
turtle.pendown()
turtle. setheading(angulo)
# Cores
cores = ('red','green','blue','yellow','pink','orange','black')
for i in range(num):
indice = random.randint(0,len(cores)-1)
cor = cores[indice]
quadrado(posx,posy,angulo,lado,cor)
posx = posx - incremento/2
posy = posy - incremento/2
lado = lado + incremento
if __name__ == '__main__':
#quad_concent(10,30,15,0,0,0)
quad_concent_b(10,30,15,0,0,0)
turtle.exitonclick()
O código ilustra as duas possibilidades. Experimente você mesmo não se esquecendo de explorar as diferentes alternativas.
Sem comentários:
Enviar um comentário