Skip to content

Instantly share code, notes, and snippets.

@edmorais
Last active May 17, 2016 14:50
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save edmorais/69c2f92b1098e0e54b73ddfb3ddf9577 to your computer and use it in GitHub Desktop.
/*_ ___ ___ ___ __ _ __
| | / __|_ _|_ ) \/ |/ /
| |__\__ \| | / / () | / _ \
|____|___/___/___\__/|_\___/
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