Tarefa da aula 03 - Desenvolver uma aplicação com laços
Objetivo:
Apresentar o desenvolvimento de uma aplicação que, empregando laços, gere quadros com uma função que replica um bloco formado por um quadrado e três círculos coloridos. A aplicação deve receber a quantidade de blocos por linha e coluna por duas variáveis globais.
A minha ideia inicial era, além de usar as variáveis globais para definir a quantidade de linhas e colunas, desenhar blocos de tamanho e cores aleatórios, então escrevi uma função que tivesse como entrada dois valores que eu pudesse deixar aleatórios no futuro (fimBlocoX e fimBlocoY):
Para não ter muito trabalho aleatorizando as cores, preferi trabalhar com o modo de cor HSB, assim só precisaria mudar a matiz de cada cor, que ficaria como o primeiro parâmetro da função fill(). Então o void Setup() ficou assim:
Modificando apenas as entradas fimBlocoX e fimBlocoY, os resultados foram esses:
O próximo passo foi fazer o laço, com a única "complicação" de que agora eu queria que as variáveis globais que definem as linhas e colunas (inicioBlocoX e inicioBlocoY) também fosse aleatórias, mas que desenhassem uma quantidade de blocos que não fosse maior do que o canvas, quando somados. Ou seja, eu queria que os blocos desenhados ocupassem juntos a maior área possível do canvas, mas que não saíssem dela. Para isso, o laço deveria parar de desenhar linhas e colunas quando "percebesse" que o conjunto de blocos iriam ficar mair que o canvas.
A primeira etapa foi deixar o tamanho dos blocos aleatório, então u criei outra variável global que não deveria ser maior que a metade do canvas e nem menos do que 1/7 dele. Isso era para que os blocos não ficasse pequenos demais e nem muito grandes, a ponto do programa mostra pelo menos duas linhas e duas colunas.
Então os parâmetros da função que desenha os blocos deveriam ser iguais a essa variável:
A segunda etapa, foi garantir que os laços não rodassem mais vezes que a quantidade de linhas e colunas. Para chegar a esse resultado, basta dividir a largura e a altura do canvas pelo tamanho dos blocos, que é a própria variável que o define.
Um detalhe importante aqui é que a posição inicial de cada bloco (inicioBlocaX e inicioBlocaY) tem que aumentar de acordo com o tamanho do bloco, então o laço também tem que se encarregar de somar essas variáveis a variável global tamanhoBloco, que é definida no começo do programa.
Então a estrutura de laços ficou assim:
Com tudo no lugar, temos um código que, a cada vez executado, além de gerar os blocos usando laços, aleatoriza o tamanho deles, as cores, e ainda desenha de forma inteligente uma quantidade que ocupe maior espaço no canvas sem que extrapole a sua largura e altura.
Código final do programa:
Alguns resultados gerados:













Comentários
Postar um comentário