Na sétima atividade do semestre, temos o seguinte desafio: empregando a função keyReleased() do Processing, faça o
Yin-yang diminuir sempre que uma tecla for pressionada.
|
Tela inicial da aplicação desenvolvida. |
Yin e
Yang são conceitos do taoismo que expõem a dualidade de tudo que existe no universo. Descrevem as duas forças fundamentais opostas e complementares que se encontram em todas as coisas: o yin é o princípio feminino, noite, Lua, a passividade, absorção. O yang é o princípio masculino, Sol, dia, a luz e atividade.
[1] O desafio principal da tarefa é desenhar o símbolo usando conceitos de geometria, aplicar o alinhamento e diminuir o tamanho caso algum botão seja clicado.
Váriaveis de inicialização:
Black e white são as cores que são aplicadas nos círculos em diferentes posições. posX, e posY são as posições centrais da tela, e diametro a variável principal usada como parâmetro nas funções a seguir. A variável diam será explicado posteriormente, tendo como seu valor inicial o mesmo de diametro.
Funções:
void circulo(int x, int y, int diametro) {
ellipse(x, y, diametro, diametro);
}
Essa função desenha um círculo simples, pois é uma maneira mais prática para desenhar os círculos alterando apenas seus diâmetros e posições na tela.
void desenha(int x, int y, int diametro, int distancia) {
noStroke();
fill(black);
circulo(x, y, diametro);
fill(white);
circulo(x, y + distancia, diametro);
fill(white);
circulo(posX, posY - (diametro/2), diametro/4);
fill(black);
circulo(posX, posY + (diametro/2), diametro/4);
}
Nessa funções são desenhados os dois círculos centrais do símbolo, e ainda, os círculos menores dentro destes anteriores.
PS: As cores foram declaradas duas vezes porque foi necessário seguir uma ordem de desenho na tela, de outra maneira os círculos seriam sobrepostos não obtendo o resultado desejado.
void arcs(int x, int y, int d) {
noStroke();
fill(white);
arc(x, y, d, d, HALF_PI, HALF_PI + PI);
fill(black);
arc(x, y, d, d, 0, HALF_PI);
arc(x, y, d, d, HALF_PI + PI, TWO_PI);
}
Os arcos existentes no Yin yang estão presentes nesta função. Essa função será ainda declarada dentro de outra função principal, a Yin_yang.
void Yin_yang(int diam) {
arcs(posX, posY, diam);
desenha(posX, posY - (diam/4), diam/2, diam/2);
}
É nesta função onde o diam entra. Primeiramente são desenhados os arcos e os círculos. O símbolo em si. Secundariamente, o diam tem seu valor alterado, como um contador. A cada botão pressionado a função keyReleased() decresce o valor da variável em 1, diminuindo o tamanho do símbolo.
Como diferencial decidi implementar uma segunda função. Caso o tamanho do Yin yang esteja muito pequeno, um alerta é exibido na tela, afirmando que o tamanho mínimo foi atingido.
void alerta() {
textSize(24);
fill(255, 0, 0);
text("Tamanho mínimo atingido!", 150, height-25);
}
Função de alerta.
|
Estágio final da interface após interação do usuário. |
É possível fazer o download da tarefa neste link:
Yin yang
Comentários
Postar um comentário