Skip to content

Instantly share code, notes, and snippets.

@edmorais
Last active May 10, 2016 14:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save edmorais/aa07d02cb4d65e5963b2508b36701518 to your computer and use it in GitHub Desktop.
Save edmorais/aa07d02cb4d65e5963b2508b36701518 to your computer and use it in GitHub Desktop.
Preenche ecrã com grelha de imagens sorteadas.
/*_ ___ ___ ___ __ _ __
| | / __|_ _|_ ) \/ |/ /
| |__\__ \| | / / () | / _ \
|____|___/___/___\__/|_\___/
Aula de 9/5/2016:
Preenche o ecrã com uma grelha de imagens sorteadas.
Por Eduardo Morais / FBAUP - www.eduardomorais.pt/fbaup/
*/
/*
Declarações de variáveis:
*/
int grelha = 40; // tamanho de cada quadrícula da nossa grelha.
int cx = 0;
int cy = 0; // coordenadas X,Y de origem da quadrícula a desenhar.
PImage[] imagens; // declaramos um array de imagens
/*
Função setup():
Executada automaticamente no início do programa:
*/
void setup() {
size(800, 600); // tamanho da janela em pixels.
background(255); // cor de fundo (em escala de cinza).
strokeWeight(2); // largura do traço.
smooth(); // activa o 'anti-aliasing' (melhor qualidade de imagem).
imagens = new PImage[9]; // preparamos o array de imagens para receber 9 elementos.
// O ciclo FOR é uma forma mais simples de escrever o ciclo WHILE comentado abaixo.
// Tem três componentes (separados por ;):
// 1. declarar contador; 2. condição para executar/repetir; 3. incremento do contador:
for (int i = 0; i < imagens.length; i++) {
/*
Importante: este exemplo supõe que estamos a carregar imagens chamadas
"0.png", "1.png"... até "8.png" (9 imagens) presentes na pasta do sketch
(ou na subpasta 'data'):
*/
imagens[i] = loadImage(i + ".png"); // carregamos cada imagem para o array de imagens:
}
/*
int i = 0; // 1. declarar contador
while (i < imagens.length) { // 2. condição para executar/repetir
imagens[i] = loadImage(i + ".png");
i++; // 3. incremento do contador
}
*/
}
/*
Função draw():
Executada repetidamente a cada 'frame'/fotograma de animação.
*/
void draw() {
//Se a quadrícula a desenhar tiver uma origem menor que a altura da janela:
if (cy < height) {
// ... e se a quadrícula a desenhar ainda tiver uma origem menor que a largura da janela:
if (cx < width) {
/*
Este único comando apresenta a imagem alojada em imagens[numero]
na posição cx, cy, e com a largura e a altura da grelha.
O número (inteiro) da imagem a mostrar é um arredondamento para baixo - floor()
de um número (float) à sorte entre 0 e o tamanho do array (no caso 9), exclusívé:
*/
image(imagens[ floor( random(0, imagens.length) ) ], cx, cy, grelha, grelha);
/*
Já desenhámos na quadrícula de origem cx, cy.
Agora vamos avançar o cx para a próxima vez que o draw() correr...
*/
cx += grelha;
} else {
// caso a quadrícula tenha origem fora da largura da janela, vamos para o início da fila de baixo:
cx = 0;
cy += grelha;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment