Last active
May 17, 2016 14:50
-
-
Save edmorais/69c2f92b1098e0e54b73ddfb3ddf9577 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*_ ___ ___ ___ __ _ __ | |
| | / __|_ _|_ ) \/ |/ / | |
| |__\__ \| | / / () | / _ \ | |
|____|___/___/___\__/|_\___/ | |
Aula de 9/05/2016: | |
Executa três animações à medida que se está a premir as teclas 1 a 3, | |
podendo acumular. | |
Por Eduardo Morais / FBAUP - www.eduardomorais.pt/fbaup/ | |
*/ | |
// Array com 256 valores, correspondendo ao número de elementos da tabela ASCII: | |
boolean[] keys = new boolean[256]; | |
// Variáveis da cada animação - | |
// Precisamos de variáveis globais mas precisamos de distingui-las: | |
// variaveis circulo: | |
int circulo_tamanho = 0; | |
// variaveis quadrado: | |
int quadrado_tamanho = 0; | |
// variaveis letras: | |
int letras_tamanho = 10; | |
/* | |
Função setup() | |
*/ | |
void setup() { | |
size(600,600); | |
background(0); | |
smooth(); | |
fill(255); | |
noFill(); | |
stroke(255); | |
} | |
/* | |
Função keyPressed(): | |
Executada sempre no momento em que carregamos numa tecla: | |
*/ | |
void keyPressed() { | |
// coloca como verdadeiro o índice correspondente à tecla que estamos a premir | |
// (keyCode corresponde ao valor na tabela ASCII): | |
keys[keyCode] = true; | |
} | |
/* | |
Função keyReleased(): | |
Executada sempre que carregamos numa tecla, após a largarmos: | |
*/ | |
void keyReleased() { | |
// coloca como falso o índice correspondente à tecla acabámos de largar | |
// (keyCode corresponde ao valor na tabela ASCII): | |
keys[keyCode] = false; | |
background(0); | |
} | |
/* | |
Função draw(): | |
Aqui apenas vai reencaminhar a execução para outras funções. | |
*/ | |
void draw() { | |
// utilizamos o método SCREEN para acumular as figuras desenhadas no ecrã | |
blendMode(SCREEN); | |
// se as teclas 1-3 estiverem a ser premidas | |
// (ou seja, com os seus índices verdadeiros), | |
// chamamos a função correspondente | |
if (keys['1']) circulo(); | |
if (keys['2']) quadrado(); | |
if (keys['3']) letras(); | |
} | |
/* | |
Função circulo(): | |
Desenha um círculo centrado com dimensões crescentes. | |
*/ | |
void circulo() { | |
fill(#FF0000); | |
noStroke(); | |
ellipseMode(CENTER); | |
ellipse(width/2, height/2, circulo_tamanho, circulo_tamanho); | |
circulo_tamanho += 5; // | |
// ao atingir as dimensões da janela volta as dimensões a zero e limpa o ecrã: | |
if (circulo_tamanho > width) { | |
circulo_tamanho = 0; | |
background(0); | |
} | |
} | |
/* | |
Função quadrado(): | |
Desenha um quadrado centrado com dimensões crescentes. | |
*/ | |
void quadrado() { | |
fill(#006699); | |
noStroke(); | |
rectMode(CENTER); | |
rect(width/2, height/2, quadrado_tamanho, quadrado_tamanho); | |
quadrado_tamanho += 5; | |
// ao atingir as dimensões da janela volta as dimensões a zero e limpa o ecrã: | |
if (quadrado_tamanho > width) { | |
quadrado_tamanho = 0; | |
background(0); | |
} | |
} | |
/* | |
Função letras(): | |
Desenha um texto centrado com dimensões crescentes. | |
*/ | |
void letras() { | |
textSize(letras_tamanho); | |
textAlign(CENTER, CENTER); | |
fill(#FF6600,random(0,255)); // transparência aleatória | |
text("LSI", width/2, height/2); | |
letras_tamanho += 5; | |
// ao atingir certas dimensões as dimensões a 'zero' e limpa o ecrã: | |
if (letras_tamanho > 400) { | |
letras_tamanho = 10; | |
background(0); | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment