Skip to content

Notas Finais

Notas do Exame Final serão lançadas até amanhã, às 17:00h!

Veja resultados no site da disciplina a partir deste horário.

Estarei na PUCPR, no LAB 9 DO CCET, das 17:40h até às 22:00h para verificação de qualquer problema.

Exercício Final (F11) – Bibliotecas do Processing

Neste exercício, você vai desenvolver, de maneira colaborativa, exemplos e documentação referente às bibliotecas do Processing.

1) Escolha DUAS das bibliotecas listadas no resumo a seguir, na seção 5 (Links para Bibliotecas), ou procure por alguma biblioteca na Internet:

http://www.brunocampagnolo.com/2009_2/processing/libs/

Antes de escolher sua biblioteca verifique se alguém já não a escolheu. Poste no Fórum indicado no Eureka quais são as bibliotecas que você escolheu.


É essencial que cada aluno use uma biblioteca diferente.

2) Crie um documento sobre sua biblioteca, citando:

a) Nome;

b) Link;

c) Descrição do que faz a biblioteca;

d) Requisitos para instalação;

e) Passos para instalação;

d) Pelo menos 1 exemplo BEM COMENTADOS que misture as duas bibliotecas;

ENTREGA VIA EUREKA, EM PASTA CRIADA NO MÓDULO CONTEÚDO ATÉ O DIA 1/12.

Deixe seu exemplo público, para que seus colegas também possam vê-lo.

Bibliotecas no Processing – Aula 34 e 35 – 3/11 e 17/11/2010

Dica: Ajustando a tela do celular

Olá professor, nao consigo encontrar pelo site do mobile processing, como colocar o size.. ou ajustar a tela pro celular!

tem alguma dica??

Na verdade, o size não faz efeito no Mobile Processing, pois a resolução depende do tamanho da tela do celular.
O celular padrão para o Mobile Processing é de 240 x 290 aproximadamente.

Você pode, porém, ALTERAR o celular padrão que roda o “Mobile Processing”.
Os celulares disponíveis estão na pasta:
C:\WTK252\wtklib\devices\
Cada pasta contém um dispositivo diferente.
Se quiser TROCAR o celular padrão para algum dos celulares desta pasta, execute o programa:
C:\WTK252\bin\DefaultDevicew.

exe

Se, mesmo assim, não achar um celular com a tela similar ou maior que a tela do seu, altere o arquivo com a extensão .properties dentro da pasta do device.
Por exemplo, em C:\WTK252\wtklib\devices\DefaultColorPhone\DefaultColorPhone.properties, altere, dentre outras, as propriedades:
screen.width=240
screen.height=320
screenPaintableRegion.width=240
screenPaintableRegion.height=292

Se preferir, também pode fazer o download de skins já prontas.
Por exemplo, para os celulares da LG, faça uma busca por skin package em:
http://developer.lgmobile.com/

Exercício F10 – Mobile Processing

Transforme dois dos exercícios que você desenvolveu este ano em um programa para Mobile Processing . Se preferir, ou tiver disponibilidade, converta para o Processing Android ou para o iProcessing.

Se possível, instale e teste em seu celular.

Desenvolvimento para dispositivos móveis e alternativos – Aula 33 – 20/10/2010

Neste tópico, vamos trabalhar com dispositivos móveis (celular).

Para isto, você vai utilizar a versão móvel do Processing: o Mobile Processing.

Se quiser instalar em sua casa, faça o download do Mobile Processing em:

http://mobile.processing.org/

IMPORTANTE: antes de instalar o mobile processing será necessária a instalação do Sun Java Wireless Toolkit 2.5:

http://java.sun.com/products/sjwtoolkit/download.html

Apresentação associada à aula em anexo.

Download dos exemplos abaixo

Carregando imagem:


// O arquivo de imagem "eu.png" precisa estar localizado na pasta do projeto.
// Selecione "Add File" para copiar arquivo para a pasta de seu projeto
PImage img = loadImage("logo.png");
// As coordenadas (0,0) se referem ao início da tela
image(img, 0, 0);
// Coloco a imagem no canto da tela
int posX = width - img.width;
image(img,posX,0);

Tratando as teclas:


String s;
PFont font;
void setup() {
font = loadFont(); // Carrega a fonte padrão para exibição de texto
textFont(font);
 softkey("Teste"); // Cria uma softkey chamada 'Teste'
 s = "Sem teste ainda"; // Inicializa o s com o valor 'Sem teste ainda'
}
void draw() {
 background(200);
 text(s, 0, height / 2); // Exibe o string no centro da tela
}

// Chamado quando a tecla é pressionada
void softkeyPressed(String label) {
 // Checa se o valor da tecla pressionada para verificar a ação a ser executada
 if (label.equals("Teste")) {
 // Se pressionar a tecla 'Teste', troca o valor da variável s para o valor de uma caixa de entrada de dados
 s = textInput();
 }
}

Tratando as teclas (multitap)


PFont font;
void setup() {
 font = loadFont();
 textFont(font);
 softkey("Delete"); // Use a tecla para excluir
 multitap(); // Liga a entrada no formato 'multitap'
}
void draw() {
 background(200);
 // A variável multitapText contém o texto escrito no teclado
 text(multitapText, 0, height / 2); // Desenha o texto capturado
}
void softkeyPressed(String label) {
 if (label.equals("Delete")) {
    multitapDeleteChar(); // Exclui o caractere
 }
}

Tocando som:


import processing.sound.*;
// Notas vão de 0 a 127 (ver especificação do MIDI)
int[] notes = { 60, 62, 64, 65, 67, 69, 71, 72, 74 };
void setup() {
noLoop(); // Não precisa do draw
}
void keyPressed() {
 //Teclas entre 1 e 9
 if ((key >= '1') && (key <= '9')) {
    // Toca a tecla por 500 ms e volume 80
    Sound.playTone(notes[key - '1'], 500, 80);
 }
}

Exercício O03 – Estruturas de repetição

Estes exercícios são relacionados à estrutura de repetição. Não são exercícios obrigatórios e nem devem ser entregues, mas são similares aos exercícios da prova de 7/10. Revisaremos exercícios semelhantes a estes na aula de revisão de 6/10.

Continuar lendo ‘Exercício O03 – Estruturas de repetição’ »

Exercício F09 – Ilusão de Ótica e Estrutura de Repetição

Veja especificação em anexo.

Estaremos tratando dos tópicos 1 e 3 do material de interação.

Alguns exemplos de aplicação de estrutura de repetição que construímos durante a aula:


/*
for(int pos=10;pos<=90;pos=pos+40) {
 line(pos,10,pos,80);
}*/
//noFill();
/*
for(int i=20;i<=100;i=i+25) {
 ellipse(50,50,i,i);
}
*/
/*
for(int i=95;i>=20;i=i-25) {
 ellipse(50,50,i,i);
}
*/
/*
for(int i=95;i>=20;i=i-3) {
 ellipse(50,50,i,i);
}
*/
size(100,255);
for(int i=0;i<255;i++) {
 stroke(i);
 line(0,i,100,i);
}

Exemplo para trabalhar com o teclado:


int x=150,y=150;
void setup() {
 size(300,300);
}
void draw() {
 background(0);
 ellipse(x,y,10,10);
}
void keyPressed() {
 if(key=='a') x = x - 10;
 if(key=='d') x = x + 10;
 // SE a tecla for especial
 if(key==CODED) {
   if(keyCode==UP) y = y - 10;
   if(keyCode==DOWN) y = y + 10;
 }
}

Jogo de Carro e Jogo de Pong – 25 e 26/8

Download da pista usada no jogo de carro

Hoje, analisaremos dois fragmentos de jogos: um jogo de carro e um pong. Em ambos, utilizo a função constrain para restringir o movimento do mouse.

Observe também a estratégia usada para implementar o scroll (rolagem) no jogo de carro.

Jogo do Labirinto – 18 e 19/8 – Aula 26

Segue, abaixo, jogo gerado na aula de 18 e 19/8.

Continuar lendo ‘Jogo do Labirinto – 18 e 19/8 – Aula 26’ »

Interação via Mouse – Aula 25 e 26 – 11, 12/8; 18, 19/8; 25, 26/8

Trabalharemos nas próximas aulas com interação via MOUSE.

Parte do material relacionado à aula está no seguinte link, na seção 2:

http://www.brunocampagnolo.com/2010_2/processing/interacao/

Observe que este material é uma baseado, principalmente, em exemplos. Gerei cerca de 25 códigos associados a tarefas usuais com o mouse.

Nas próximas semanas, vamos analizar códigos semelhantes a estes exemplos (em anexo), aproveite para verificar seu funcionamento.

Exercício F08 – Jogo com 0 botões

Você deverá criar um jogo cuja interação deve ser exclusiva com o movimento do mouse.

Segue especificação em anexo.

Entrega em 31/08/2010!

Jogo de Perseguição (versão final) – 12 e 13/8 – Aula 25

Segue código de jogo de perseguição, gerado na aula de 12 e 13 de agosto.

Continuar lendo ‘Jogo de Perseguição (versão final) – 12 e 13/8 – Aula 25’ »

Jogo de perseguição

Durante as próximas aulas vamos gerar alguns minigames que, em sua interação, não aplicam nenhum botão (nem mouse e nem teclado).


float xi=100,yi=100,vxi=2,vyi=2;
int vida = 3;
PFont arial;
void setup() {
 size(600,400);
 noCursor();
 arial = createFont("Arial",30);
 textFont(arial);
}
void draw() {
 if(xi<mouseX) {
 vxi = 2;
 } else {
 vxi = -2;
 }
 if(yi<mouseY) {
 vyi = 2;
 } else {
 vyi = -2;
 }
 xi = xi + vxi;
 yi = yi + vyi;
 if(dist(mouseX,mouseY,xi, yi)<=30) {
 vida = vida - 1;
 xi = random(width);
 yi = random(height);
 }
 background(128);
 ellipse(mouseX,mouseY,40,40);
 ellipse(xi,yi,20,20);
 text(vida, 30, 30);
}
float xi=100,yi=100,vxi=2,vyi=2;
int vida = 3;
PFont arial;
int estado = 0;
void setup() {
 size(600,400);
 noCursor();
 arial = createFont("Arial",30);
 textFont(arial);
}
void draw() {
 if(estado==0) jogo();
 if(estado==1) gameover();
}
void gameover() {
 text("game over", 100, 100);
 if(keyPressed) {
 estado = 0;
 vida = 3;
 }
}
void jogo() {
 if(xi<mouseX) {
 vxi = 2;
 } else {
 vxi = -2;
 }
 if(yi<mouseY) {
 vyi = 2;
 } else {
 vyi = -2;
 }
 xi = xi + vxi;
 yi = yi + vyi;
 if(dist(mouseX,mouseY,xi, yi)<=30) {
 vida = vida - 1;
 xi = random(width);
 yi = random(height);
 }
 if(vida==0) {
 estado = 1;
 }
 background(128);
 ellipse(mouseX,mouseY,40,40);
 ellipse(xi,yi,20,20);
 text(vida, 30, 30);
}

Entrega do trabalho F07

Deve ser feita via Eureka, no Plano de Trabalho até no máximo amanhã (4/8), até meio-dia.

Notas finais lançadas

Pessoal,

Notas finais foram lançadas.

http://www.brunocampagnolo.com/2010ip1/notas

Correções e verificações de erro agora só depois das férias de julho.

Boas férias!

Entrega da conferência da Prova 2 e do Exercício 5 desta prova

Entrega no máximo até segunda-feira às19:00h.

Entregue também via Correio do Eureka para garantir a entrega.

Continuar lendo ‘Entrega da conferência da Prova 2 e do Exercício 5 desta prova’ »

Exemplo da aula de 17/6/2010

Código da aula de máquina de estados (turma quinta)


float x=200,vx=1, y=100, vy = 1;
float xinimigo = 50, yinimigo=70;
int estado = 0;
void setup() {
 size(300,300);
}
void draw() {
 x = x + vx;
 if(estado==0) { // VAGANDO
 vagando();
 if(dist(x,y,xinimigo,yinimigo)<50)
 estado = 1;
 }
 if(estado==1) { // ATACANDO
 atacando();
 if(dist(x,y,xinimigo,yinimigo)<5) {
 estado = 0;
 xinimigo = random(width);
 yinimigo = random(height);
 }
 }
 background(0,0,255);
 fill(0,255,0);
 ellipse(x,y,20,20);
 fill(255,0,0);
 ellipse(xinimigo,yinimigo,20,20);
}
void atacando() {
 y = y + vy;
 if(x<xinimigo) {
 vx = 1;
 } else {
 vx = -1;
 }
 if(y<yinimigo) {
 vy = 1;
 } else {
 vy = -1;
 }
}

void vagando() {
 // Se bater nas laterais, volta!
 if(x>width || x<0) {
 vx = -vx;
 }
}
float x=200,vx=1, y=100, vy = 1;
float xinimigo = 50, yinimigo=70;
int estado = 0;
void setup() {
 size(300,300);
}
void draw() {
 x = x + vx;
 switch(estado) {
 case 0:
 vagando();
 if(dist(x,y,xinimigo,yinimigo)<50)
 estado = 1;
 break;
 case 1:
 atacando();
 if(dist(x,y,xinimigo,yinimigo)<5) {
 estado = 0;
 xinimigo = random(width);
 yinimigo = random(height);
 }
 break;
 }
 background(0,0,255);
 fill(0,255,0);
 ellipse(x,y,20,20);
 fill(255,0,0);
 ellipse(xinimigo,yinimigo,20,20);
}
void atacando() {
 y = y + vy;
 if(x<xinimigo) {
 vx = 1;
 }
 else {
 vx = -1;
 }
 if(y<yinimigo) {
 vy = 1;
 }
 else {
 vy = -1;
 }
}

void vagando() {
 // Se bater nas laterais, volta!
 if(x>width || x<0) {
 vx = -vx;
 }
}

Exemplo com máquina de estados


// Posição e vel do personagem e inimigo
float x = 100, vx = 1, xinimigo=200;
float y = 100, vy = 1, yinimigo=200;
int estado = 0;
void setup() {
 size(300,300);
}
void draw() {
 background(0);
 fill(255,0,0);
 ellipse(x,y,10,10);
 fill(0,255,0);
 ellipse(xinimigo,yinimigo,10,10);
 switch(estado) {
 case 0:
 atacando();
 // SE a distancia for menor que 10 vague!
 if(dist(x,y,xinimigo,yinimigo)<10) {
 estado = 1;
 }
 break;
 case 1:
 vagando();
 break;
 }
}
void vagando() {
 x = x + vx;
 if( (x>width) || (x<0)) {
 vx = -vx;
 }
}
void atacando() {
 // Se o personagem estiver à ESQUERDA
 if(x<xinimigo) {
 vx = 1;
 }
 // Se o personagem estiver à DIREITA
 if(x>xinimigo) {
 vx = -1;
 }
 // Se o personagem estiver ACIMA
 if(y<yinimigo) {
 vy = 1;
 }
 // Se o personagem estiver ABAIXO
 if(y>yinimigo) {
 vy = -1;
 }
 x = x + vx;
 y = y + vy;
}

Funções com parâmetros e sem retorno, switch e máquina de estados – Aula 16 – 08/06/2010

Hoje nosso objetivo é trabalhar com os tópicos finais do nosso bimestre: funções com parâmetros e sem retorno,  switch e máquinas de estados.

Estes tópicos são tratados nos itens 5 e 6 de nosso material teórico. Além disso, passaremos o exercício de fechamento do bimestre.

Exercício F07 – Fechamento do Semestre

Este é o exercício de finalização do segundo bimestre início do 3o bimestre e tem um valor maior que os outros exercícios. Ele revisa uma série de conceitos que tratamos em outros exercícios.

Continuar lendo ‘Exercício F07 – Fechamento do Semestre’ »

Animação temporizada e defesas – Aula 14 e 15 – 25/5/2010, 27/5/2010 e 1/6

Exercício O02 – Tempo e Animação temporizada

Um dos principais objetivo destes exercícios é entender como trabalhar com animações que dependem do tempo. Para isto, vamos usar a função millis. Tal função retorna o número de milissegundos desde o início do programa. Outras funções que também são interessantes para se usar com unidades de tempo são as funções second, minute e hour, que retornam, respectivamente, o número de segundos, minutos e segundos do dia.

Continuar lendo ‘Exercício O02 – Tempo e Animação temporizada’ »

Entrega do Exercício F06

Exemplo da aula de quinta – 20/5/2010

Exemplos da turma de terça – 18/05/2010

Relembrando o if (assunto da aula passada).

Continuar lendo ‘Exemplos da turma de terça – 18/05/2010’ »

Estrutura de Seleção – Parte 2 – Aula 13 – 18/5/2010 e 20/5/2010

Aula dedicada ao F05 e F06.

Também fizemos uma prévia da defesa.

No começo da aula fizemos uma revisão do if através de um exemplo.

Exemplos da turma de terça – 11/5/2010

Abaixo, os exemplos construídos na aula.

Continuar lendo ‘Exemplos da turma de terça – 11/5/2010’ »

Exercício F06 – Estrutura de Seleção

Estes exercícios são referentes ao modo contínuo do Processing e estrutura de seleção.

Entrega do exercício

Continuar lendo ‘Exercício F06 – Estrutura de Seleção’ »

Estrutura de Seleção – Parte 1 – Aula 12 – 11/5/2010 e 13/5/2010

Nesta aula, nosso objetivo será conhecer a estrutura de seleção. Trabalharemos com os tópicos 2, 3 e 4 do material do 2o bimestre.

Tal estrutura permitirá que controlemos o fluxo de execução de um algoritmo. O objetivo principal desta aula é que você saiba reconhecer e entender o funcionamento das estruturas if e else.

Modo Contínuo no Processing – Parte 2 – Aula 11 – 4/5 e 14/5

Aula foi dedicada a dúvidas do exercício F05. Observe que a turma de quinta terá esta aula apenas no dia 14/5.

Exemplos das aulas de 27 e 29 de Abril

Modo contínuo no Processing – Aula 10 – 27 e 29/4/2010

Nesta aula, nosso objetivo é iniciar o trabalho com animações no Processing. Para isto, vamos conhecer o modo contínuo, no qual, definimos uma função draw que será repetida periodicamente durante a execução de nossos programas.

O material do segundo bimestre está disponível em:

http://www.brunocampagnolo.com/2010_1/processing/animacao/

Durante a aula de hoje vamos entender os primeiros passos sobre como definir uma animação. Recomendo a leitura, impressão e entendimento da apresentação relacionada à aula.

Para demonstrar que imagens também podem ser animadas, usei as imagens disponíveis em:

http://lostgarden.com/2007/05/dancs-miraculously-flexible-game.html

Exemplos gerados na aula

Exercício F05 – Animação infinita

Resolva os exercícios abaixo. Neste exercício, você vai implementar apenas animações infinitas, ou seja, não se preocupe com a parada de sua animação.

Continuar lendo ‘Exercício F05 – Animação infinita’ »

Conferência de Prova e Animação no Processing – Aula 09 – 20 e 22/4/2010

Esta aula em seu início foi dedicada a uma introdução ao modo contínuo no Processing.

Criamos apenas um exemplo:


// Criar a variável x que representa
// a posição da minha elipse
float x=0;
void setup() {
 size(300,300);
}
// A função draw será chamada 60x por
// segundo
void draw() {
 background(0);
 ellipse(x,height/2,100,100);
 x = x + 1;
}

Além disso, a aula também foi dedicada à conferência das notas de prova e à proposição de um exercício extra para somar 1 ponto à sua nota de prova.

Atividade extra referente à Prova 01

Pessoal,

Para reforçar os  conceitos da Prova 01 e dar um ponto extra aos alunos que não foram tão bem de prova, permitindo uma recuperação de até 1 ponto em sua prova, realize a atividade a seguir.

Continuar lendo ‘Atividade extra referente à Prova 01’ »

Entrega da atividade extra referente à Prova 1

Segue formulário de entrega da atividade de recuperação.

Não esqueça! Respostas em papel no início da aula do dia 27 e 29/4!

Continuar lendo ‘Entrega da atividade extra referente à Prova 1’ »

Conferência da Prova

Abaixo, seus códigos de prova e modelos.
Até sexta, dia 29/4, a correção das provas.

Continuar lendo ‘Conferência da Prova’ »

Prova da 1a Parcial – Aula 08 – 15/4/2010

No dia 15 fizemos a nossa primeira prova.

Disponibilizarei o gabarito desta prova e a nota  de cada aluno até o dia 27/4.

Revisão para a prova da primeira parcial – Aula 07 – 13/04/2010

Nesta aula, dedicada às duas turmas em uma sala só, nós revisamos alguns dos exercícios da lista F04.

Fechamento da 1a Parcial

Pessoal, com o exercício F04, faço o fechamento da nossa primeira parcial.

Na próxima semana, no dia 15/04 (quinta) teremos nossa primeira prova. Esta prova será na sala de desenho D6 e será para a turma toda.

No dia 13/04 (terça) farei uma revisão de tudo que fizemos até agora baseada, principalmente, no exercício F04.

Importante: a data de entrega máxima dos exercícios passados até agora é o dia 22/4.

Exercício F04 – Entrega

Desenho com Processing – Chamada e Criação de Funções – Aula 06 – 06 e 08/04/2010

Nesta aula, nós finalizamos o objetivo de nosso primeiro bimestre: desenho programacional.

O assunto do próximo bimestre será o tópico animação. Como fechamento, trabalhamos com os tópicos 13, 14, 15 e 16 do material do primeiro bimestre.

O ponto mais importante desta aula, e que será cobrado em nossa prova da semana que vem, foi a divisão de nossos programas em funções.

Códigos desenvolvidos na aula de terça

Códigos desenvolvidos na aula de quinta

Códigos desenvolvidos na aula de terça – Aula 06 – 06/04/2010

Nesta aula, trabalhamos com chamada e criação de funções.

Continuar lendo ‘Códigos desenvolvidos na aula de terça – Aula 06 – 06/04/2010’ »

Código desenvolvido na aula de quinta – Aula 06 – 08/04/2010

Nesta aula, trabalhamos com chamada e criação de funções.

Continuar lendo ‘Código desenvolvido na aula de quinta – Aula 06 – 08/04/2010’ »

Exercício F04 – Composição de Código e Revisão

A seguir, um conjunto de exercícios com dois objetivos:

  • Cobrar os tópicos 13, 14, 15 e 16, tratados na aula de 6/4;
  • Revisar alguns conceitos como preparação para a prova de 15/4.

Você não precisa entregar todos os exercícios.

Entregue apenas os números:

  • 3 a, e e h;
  • 4, 5, 6, 7 e 8;
  • 10 b;

Os demais exercícios são uma revisão para a prova e poderão ser usados como modelo para os exercícios desta.

Na aula de 13/4, faremos uma revisão resolvendo estes exercícios. Esta revisão será na sala de Desenho de vocês.

Formulário de entrega do exercício
Continuar lendo ‘Exercício F04 – Composição de Código e Revisão’ »

Dúvidas Exercício F03 – Tangram e Árvore Genealógica

Seguem respostas para algumas dúvidas referentes ao exercicio F03.

Continuar lendo ‘Dúvidas Exercício F03 – Tangram e Árvore Genealógica’ »

Desenho com Processing, Variáveis, Imagens e Textos – Aula 05 – 23 e 25/03/2010

Esta aula foi uma continuação imediata da aula 04. Desta forma, não tratamos de nenhum tópico novo, a maior parte da aula foi para dúvidas referentes ao Exercício F02 e para a proposição do Exercício F03.

Continuar lendo ‘Desenho com Processing, Variáveis, Imagens e Textos – Aula 05 – 23 e 25/03/2010’ »

Exercício F03 – Tangram e Árvore Genealógica

Neste exercício lidamos com variáveis, cores e curvas. Observe que ele é dividido em 2 partes e a primeira parte depende de um código específico para cada aluno.

Continuar lendo ‘Exercício F03 – Tangram e Árvore Genealógica’ »