Desafio I
Dados:
1. Função casa – Desenha uma casa básica (parede e telhado) numa qualquer posição,
com qualquer tamanho e com qualquer cor de parede e de telhado;
2. Função passaro – Desenha um pássaro na posição 250,250, com dimensão fixa.
Objectivos:
Alterar a função passaro, de modo a que possa desenhar o pássaro em qualquer posição da
janela e com qualquer cor
Usando as funções criar uma cena que inclua pelo menos uma casa e um pássaro
A cena pode incluir outros elementos
As funções dadas podem ser modificadas, de modo a que permitam outros comportamentos,
por exemplo desenhar casas mais elaboradas, desenhar pássaros noutras posições (não
apenas de frente), etc…
Resultado:
Código do programa:
Desafio II
Objectivos:
Desenvolva uma aplicação em Processing que seja inspirada no conceito de arte
interativa (http://pt.wikipedia.org/wiki/Arte_interativa). Essa aplicação deve permitir algum tipo de
interação com o usuário através do rato, demonstrando algum tipo de reação às ações
que o usuário realize quando em contato com sua obra artística. Você pode desenvolver
a temática da sua aplicação livremente e ela deve utilizar pelo menos os seguintes
componentes de programação: imagens, texto, formas e cores.
Sua aplicação pode conter qualquer combinação dos componentes propostos, mas não
precisar estar limitada a somente esses componentes. Lembre-se, uma dos objetivos
desse trabalho, além do exercício da criatividade em programação, é possibilitar
explorar, experimentar e descobrir outras funcionalidades da linguagem.
Resultado:
Código:
color[]c= new color[13]; //Criação do Array de Cores
PFont titulo; //Criação da variável para a fonte
PFont nome;
PImage fundo; //Importação de uma imagem
void setup() {
background(125);
size(500, 500);
//Array de Cores (Para a paleta de Cores)
c[0]= color(14, 194, 1); //verde
c[1]= color(228, 1, 1); //vermelho
c[2]= color(244, 252, 19); //amarelo
c[3]= color(252, 19, 157); //rosa
c[4]= color(154, 202, 255); //azul
c[5]= color(218, 103, 247); //roxo
c[6]= color(255,168, 0); //laranja
c[7]= color(138, 91, 1); //castanho
c[8]= color(0,0,0); //preto
c[9]= color(115,115,115); //cinza-escuro
c[10]= color(181, 181, 181); //cinzento
c[11]= color(255,255,255); //branco
c[12]= color(125,125,125); //borracha
fundo = loadImage("fundo.png"); //Load da imagem de fundo
titulo = createFont("4 Star Face Font", 50); //Criação de uma determinada fonte
nome = createFont("Century Gothic", 12);
}
void draw(){
image(fundo,0,0); //Colocação da imagem de fundo no programa
instrucoes();
tamanhos();
cores();
figuras();
escreve();
desenhaStick();
}
void desenhaStick(){ //Função para o rato desenhar
if ((mousePressed == true) && (mouseButton == LEFT)) {
line(mouseX, mouseY, pmouseX, pmouseY);
}
else if ((mousePressed == true) && (mouseButton == RIGHT)) {
strokeWeight(10);
stroke(c[12]);
line(mouseX, mouseY, pmouseX, pmouseY);
}
}
void instrucoes(){
PImage teclas; //Importação de uma imagem
teclas = loadImage("Keys.gif");
image(teclas,5,20);
}
void escreve() { //Função que vai buscar à Caixa de texto o nome do Desenho criado e o adiciona a uma frase pré-determinada
fill(0);
textFont(titulo);
fill(0,0,0);
text("Stickman Creator", 160, 50);
int iMrg = 150; //Tamanho da caixa de texto
int iHgt = 30;
Panel inputPanel = new Panel(); //Criação de uma área para colocar a área de texto
inputPanel.setLayout(new BorderLayout());
//add(inputPanel);
inputPanel.setBounds(110,440, iMrg,iHgt);
TextField input = new TextField("John"); //Criação da caixa de texto
String iLine = input.getText(); //Vai buscar o que está escrito na caixa de texto
// inputPanel.add(input);
//setLayout(new BorderLayout());
textFont(titulo, 40);
fill(0);
text("Hi, my name is " + iLine + "!", 110, 430);
fill(255);
textFont(nome);
text("Marta Martins 2009105021", 340, 480);
}
void figuras(){ //Função para criar determinadas formas geométricas, de acordo com a tecla "clicada"
if( key == '6' ) {
fill(0,0,0);
strokeWeight(1);
rect(width/2, height/2, 50, 50);
}
else if(key == '7' ) {
fill(0,0,0);
strokeWeight(1);
rect(width/2, height/2, 150, 150);
}
else if(key == '4' ) {
fill(0,0,0);
strokeWeight(1);
ellipse(width/2, height/2, 50, 50);
}
else if(key == '5' ) {
fill(0,0,0);
ellipse(width/2, height/2, 150, 150);
}
}
void tamanhos(){//Função para criar diferentes espessuras de linha, de acordo com a tecla "clicada"
if(key == '1' ) {
strokeWeight(1);
}
if(key == '2' ) {
strokeWeight(2);
}
if(key == '3' ) {
strokeWeight(3);
}
}
void cores(){//Função para seleccionar as cores de desenho, de acordo com a tecla "clicada"
if(key == 'r' ) {
stroke(c[1]);
}
if(key == 'g' ) {
stroke(c[0]);
}
if(key == 'y' ) {
stroke(c[2]);
}
if(key == 'p' ) {
stroke(c[3]);
}
if(key == 'b' ) {
stroke(c[4]);
}
if(key == 'l' ) {
stroke(c[5]);
}
if(key == 'o' ) {
stroke(c[6]);
}
if(key == 'k' ) {
stroke(c[7]);
}
if(key == 'c' ) {
stroke(c[8]);
}
if(key == 'z' ) {
stroke(c[9]);
}
if(key == 'j' ) {
stroke(c[10]);
}
if(key == 'w' ) {
stroke(c[11]);
}
if(key == 'e' ) {
strokeWeight(10);
stroke(c[12]);
}
}
Desafio III
Objectivos:
Pretende-se que desenvolva uma pequena aplicação capaz de permitir ao utilizador
manipular com o rato e o teclado um tipo de forma geométrica à sua escolha (por
exemplo quadrados ou triângulos). Deve criar uma classe para representar a forma
escolhida e dotá-la dos atributos (variáveis) e comportamentos (métodos) necessários.
Como mínimo a aplicação deve permitir ao utilizador criar formas (com o botão
esquerdo do rato) e apagar formas (com o botão direito). A aplicação deverá ainda
responder ao teclado, devendo ser definidas teclas que levem todas as formas existentes
a mudar de cor, a mudarem de posição (para posições aleatórias), a aumentar de
tamanho e a diminuir de tamanho.
Resultado:
Código:
Quadrado a;
class Quadrado {
int cx, cy;
float cor1, cor2, cor3;
Quadrado (int x, int y, int c1, int c2, int c3){
cx = x;
cy = y;
cor1 = c1;
cor2= c2;
cor3 = c3;
}
void display(){
fill(cor1, cor2, cor3);
}
void MudaAzul(){ //Muda a cor dos quadrados desenhados a seguir para Azul
cor1 = 0;
cor2 = 0;
cor3 = random(255);
display();
}
void MudaVerde(){ //Muda a cor dos quadrados desenhados a seguir para Azul
cor1 = 0;
cor2 = random(255);
cor3 = 0;
display();
}
void MudaArcoIris(){ //Muda a cor dos quadrados desenhados a seguir para Azul
cor1 = random(255);
cor2 = random(255);
cor3 = random(255);
display();
}
void MudaVermelho(){ //Muda a cor dos quadrados desenhados a seguir para Azul
cor1 = random(255);
cor2 = 0;
cor3 = 0;
display();
}
void MudaPosicao(){ // Muda a posição dos quadrados desenhados posteriormente a accionar-se este método
display();
}
void AumentaTamanho(){ //Aumenta o tamanho dos quadrados desenhados posteriormente, até atingirem os limites do background
if((cx <=width) && (cy<=height)){
cx = cx + 1;
cy = cx + 1;
display();
}
}
void DiminuiTamanho(){ //Diminui o tamanho dos quadrados desenhados posteriormente, enquanto os valores forem positivos
if((cx >=0) && (cy>=0)){
cx = cx - 1;
cy = cx - 1;
display();
}
}
void desenha(){
rect(mouseX, mouseY, cx, cy);//Método para construir o quadrado de 100x100 ao clicar com o botão esquerdo do rato
display();
}
void apaga(){
fill(255);
noStroke();
rect(mouseX, mouseY, cx, cy);//Método para apagar quadrados, desenhando quadrados da mesma cor do fundo
display();
}
}
void titulo(int a,int m){
PFont tit;
tit = createFont("Aberration", 35);
fill(0);
textFont(tit);
text("Squares go Mad!", a, m);
}
void imagem(int a, int m){
PImage fundo;
fundo = loadImage("fundo.png");
image(fundo,a,m);
}
void setup(){
background(255);
size(500,500);
a = new Quadrado(90,90,255, 0, 0); //Desenha-se um quadrado com a Cor inicial Vermelha
a.display();
imagem(0,0);
titulo(120,50);
}
void draw(){
if(key == '5'){
a.AumentaTamanho();
}
if(key == '6'){
a.DiminuiTamanho();
}
if ((mousePressed == true) && (mouseButton == RIGHT)) {
a.apaga();
}
if ((mousePressed == true) && (mouseButton == LEFT)) {
a.desenha();
}
if(key == '1' ) {
a.MudaAzul();
}
if(key == '2' ) {
a.MudaVerde();
}
if(key == '3' ) {
a.MudaArcoIris();
}
if(key == '4' ) {
a.MudaVermelho();
}
}