terça-feira, 24 de novembro de 2009

Problema 7.3

Vamos beneficiar dos ensinamentos do exemplo 7.2. Já sabemos quais são os famosos três passos:


(1) Definir uma janela onde possam ser colocados os objectos;
(2) Gerar as imagens
(3) Posicionar as imagens e mostrar na janela


Reflectindo sobre o problema, não é difícil chegar à conclusão de que vamos andar a colocar quadriláteros de diferentes dimensões na nossa tela. Notar que as linhas são na realidade quadriláteros de pequena espessura. Podemos por isso modularizar o nosso programa desenvolvendo sub-programas que podem ser reutilizados!

Dito isto, uma solução possível é a seguinte:
01.def quadrilatero(lado_1,lado_2,cor):
02.    """
03.    Cria uma figura rectangular, colorida.
04.    """
05.    imagem = cImage.EmptyImage(lado_1,lado_2)
06.    pixel = cImage.Pixel(cor[0],cor[1],cor[2])
07.    for coluna in range(lado_1): 
08.        for linha in range(lado_2):
09.            imagem.setPixel(coluna,linha,pixel)      
10.    return imagem
11. 
12.def cria_e_mostra(lado_1,lado_2, cor, pos,janela):
13.    imagem = quadrilatero(lado_1,lado_2,cor)
14.    imagem.setPosition(pos[0],pos[1])
15.    imagem.draw(janela)
16. 
17.def main():
18.    janela = cImage.ImageWin('Mondrian',600,600)
19.    # cria imagem, posiciona e mostra
20.    cria_e_mostra(400,400,(255,0,0),(200,0),janela)
21.    cria_e_mostra(200,200,(0,0,255),(0,400),janela)
22.    cria_e_mostra(50,100,(255,255,0),(550,500),janela)
23.    cria_e_mostra(10,600,(0,0,0),(190,0),janela)
24.    cria_e_mostra(190,20,(0,0,0),(0,150),janela)
25.    cria_e_mostra(600,10,(0,0,0),(0,390),janela)
26.    cria_e_mostra(5,200,(0,0,0),(545,400),janela)
27.    cria_e_mostra(50,10,(0,0,0),(550,500),janela)
28.    # finito!
29.    janela.exitOnClick()


No programa main temos os três passos bem identificados. A definição quadrilatero permite criar todas as formas necessárias. Compare com quadrado do problema 7.2. Finalmente, cria_e_mostra trata de criar as diferentes imagens, posicioná-las e mostrar na janela. Com os valores da figura o boneco é o apresentado na figura.



Sem comentários:

Enviar um comentário