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

Postagens mais visitadas deste blog

Tarefa da aula 09: Pong para um jogador - keyPressed e keyPressed()

Trabalho pt.1: Porte de um jogo clássico

Tarefa da aula 12: Jogo simples com MEFs