segunda-feira, 16 de novembro de 2009

Desafios

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();
  }







































Sem comentários:

Enviar um comentário