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.
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.
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.
Segue material relacionado a:
Links para bibliotecas diversas:
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.
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/
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.
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:
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.
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);
}
}
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.
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;
}
}
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.
Segue, abaixo, jogo gerado na aula de 18 e 19/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.
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!
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’ »
Deve ser feita via Eureka, no Plano de Trabalho até no máximo amanhã (4/8), até meio-dia.
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 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’ »
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;
}
}
// 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;
}
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.
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.
Aulas dedicadas ao Exercício O02.
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’ »
Segue formulário de entrega.
Relembrando o if (assunto da aula passada).
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.
Abaixo, os exemplos construídos na aula.
Estes exercícios são referentes ao modo contínuo do Processing e estrutura de seleção.
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.
Aula foi dedicada a dúvidas do exercício F05. Observe que a turma de quinta terá esta aula apenas no dia 14/5.
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
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.
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.
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.
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’ »
Abaixo, seus códigos de prova e modelos.
Até sexta, dia 29/4, a correção das provas.
No dia 15 fizemos a nossa primeira prova.
Disponibilizarei o gabarito desta prova e a nota de cada aluno até o dia 27/4.
Nesta aula, dedicada às duas turmas em uma sala só, nós revisamos alguns dos exercícios da lista F04.
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.
Segue formulário de entrega.
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.
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’ »
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’ »
A seguir, um conjunto de exercícios com dois objetivos:
Você não precisa entregar todos os exercícios.
Entregue apenas os números:
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’ »
Seguem respostas para algumas dúvidas referentes ao exercicio F03.
Continuar lendo ‘Dúvidas Exercício F03 – Tangram e Árvore Genealógica’ »
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’ »
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’ »