Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Processing
http://www.processing.org
Cláudio L. V. Oliveira
prof.claudioluis@fatecjd.edu.br
Outubro de 2014
Processing
• Processing é uma linguagem de programação
gratuita e de código aberto construída para
artes eletrônicas e projetos visuais;
• Tem como principal objetivo ensinar noções
básicas de programação de computador em
um contexto visual;
• Projeto iniciado em 2001 por Casey Reas e
Ben Fry, ambos ex-membros do Grupo de
Computação do MIT Media Lab.
1
13/10/2014
Processing
• O IDE da Processing inclui um sketchbook,
uma alternativa para organizar projetos sem
adotar o padrão utilizado na maioria das IDEs.
• Os sketches (programas) criados são uma
subclasse do Java Papplet, classe que
implementa a maioria das funcionalidades da
Processing.
• Ao compilar todo o código do sketch é
traduzido para Java.
Processing
• IDE da Processing:
2
13/10/2014
Processing
• Um dos objetivos da Processing é atuar como
uma ferramenta para não-programadores ou
iniciantes em programação, através da
satisfação imediata com um retorno visual,
por exemplo:
println("Olá Pessoal!");
Processing
• Fácil e rápido retorno visual, por exemplo,
desenho de uma elipse:
3
13/10/2014
Processing
• Definição de cores (método fill). Um único
parâmetro entre 0 e 255 realizar o
preenchimento em uma escala de tons de
cinza:
Processing
• Definição de cores (método fill). Três
parâmetros entre 0 e 255 realizar o
preenchimento no padrão RGB:
4
13/10/2014
Processing
• Desenho de um retângulo:
Processing
• Exibição de texto no contexto gráfico:
size(200, 200);
fill(0);
text("Olá Pessoal!", 10, 20);
5
13/10/2014
Processing
• Estrutura básica de um sketch:
void setup() {
size(200, 200);
noLoop();
}
void draw() {
fill (0);
text("Olá Pessoal!", 10, 20);
}
Processing
• Unindo os conceitos para desenvolver
pequenos sketches:
void setup() {
size(200, 200);
noLoop();
}
void draw() {
fill(0);
rect (5, 5, 80, 20);
fill (255);
text("Olá Pessoal!", 10, 20);
}
6
13/10/2014
Processing
• Animação simples:
int i = 10;
void setup() {
size(200, 200);
}
void draw() {
background(0);
fill (255);
text("Olá Pessoal!", 10, i);
delay(150);
i = i + 10;
if (i > height)
i = 10;
}
Processing
• Fontes e alinhamento do texto:
int i = 10;
void setup() {
size(200, 200);
textFont(createFont("SansSerif",18));
textAlign(CENTER);
}
7
13/10/2014
Processing
• Outra animação:
int i = 10, p = 10;
void setup() {
size(200, 200);
}
void draw() {
background(0);
fill (0, 255, 0);
ellipse (width/2, i, 25, 25);
delay(100);
i = i + p;
if ((i > height) || (i < 0))
p = p * -1;
}
Processing
• Utilização de imagens:
PImage bola;
int i = 10, p = 10;
void setup() {
size(200, 200);
bola = loadImage("bola.gif");
}
void draw() {
background(0);
fill (0, 255, 0);
image (bola, width/2, i);
delay(100);
i = i + p;
if ((i > (height - bola.height)) || (i < 0))
p = p * -1;
}
8
13/10/2014
Processing
• Eventos do mouse:
void setup() {
frame.setTitle("UsoMouse");
size (360, 180);
fill (255); // Cor branca
}
void draw() {
if (mousePressed) {
ellipse(mouseX, mouseY, 100, 100);
}
else {
rect(mouseX, mouseY, 100, 100);
}
}
Processing
9
13/10/2014
Processing
• Bibliotecas:
import g4p_controls.*;
GLabel lNome;
GTextField tNome;
String imagens[];
GImageButton botao;
void setup() {
frame.setTitle("Biblioteca G4P");
size (360, 180);
background(245);
lNome = new GLabel(this, 10, 20, 340, 20, "Digite o seu
nome:");
tNome = new GTextField(this, 10, 40, 340, 20);
imagens = new String[] {"botao-ok.png", "botao-ok.png",
"botao-ok-press.png" };
botao = new GImageButton(this, 10, 70, imagens);
}
Processing
• Bibliotecas:
void draw() {
}
10