Vamos então dividir a solução em duas partes: uma para desenhar o alvo, e outra para simular o lançamento do dardo. Por outro lado, vamos fazer com que o desenho do alvo seja feito à custa de uma mesma função, a que desenha um círculo de uma dada cor, numa dada posição e com o dado raio. Essa função chama-se circunf. A partir dela desenhar o alvo é fácil (função alvo). Estas última precisa saber apenas o centro do alvo e o valor dos raios. Os cuidados a ter são desenhar as circunferências da maior para a mais pequena (notar o ordenamento inverso da lista dos raios), e controlar a alternância das cores.
O lançamento do dardo recorre ao módulo random para geral a posição, e ao comando dot para marcar a localização do dardo. Neste último caso, não conhecendo o comando dot, podia socorrer-se uma vez mais ao desenho de uma circunferência…
01.
import
turtle
02.
03.
def
circunf(posx, posy, raio, cor):
04.
# posiciona
05.
turtle.pu()
06.
turtle.goto(posx,posy
-
raio)
07.
turtle.pd()
08.
# define cor e desenha
09.
turtle.fillcolor(cor)
10.
turtle.begin_fill()
11.
turtle.circle(raio)
12.
turtle.end_fill()
13.
turtle.hideturtle()
14.
15.
def
alvo(posx, posy,raios):
16.
"""
17.
raios: lista dos raios dos discos
18.
"""
19.
raios.sort(reverse
=
True
)
20.
cor
=
'black'
21.
for
raio
in
raios:
22.
circunf(posx,posy,raio,cor)
23.
if
cor
=
=
'black'
:
24.
cor
=
'white'
25.
else
:
26.
cor
=
'black'
27.
28.
29.
def
dardo():
30.
import
random
31.
posx
=
random.randint(
-
100
,
100
)
32.
posy
=
random.randint(
-
100
,
100
)
33.
turtle.pu()
34.
turtle.goto(posx,posy)
35.
turtle.pd()
36.
turtle.dot(
8
,
'red'
)
37.
turtle.hideturtle()
38.
39.
40.
if
__name__
=
=
‘__main__’:
41.
alvo(
0
,
0
,[
20
,
40
,
60
,
80
])
42.
dardo()
43.
turtle.exitonclick()
Sem comentários:
Enviar um comentário