Archive for the ‘codigo’ Category

Exemplo da aula: Arrastar o rectângulo

Tuesday, March 20th, 2007

int x, y;
 
boolean dentro;
 
void setup() {
  size(400, 400);
  x = 0;
  y = 0;
  dentro = false;
}
 
void draw() {
  background(0);
  rect(x, y, 100, 100);
}
 
void mousePressed() {
 
  if (mouseX > x && mouseX < x+100 &&
      mouseY > y && mouseY < y+100) {
    dentro = true;
  } else {
    dentro = false;
  }
}
 
void mouseDragged() {
  if (dentro) {
    x = mouseX;
    y = mouseY;
  }
}
 
void mouseReleased() {
  dentro = false;
}

Aula Prática #4 - Programa Exemplo #1

Wednesday, March 7th, 2007

// a posicao x,y dos varios pontos
float linhaX[] = {0, 5};
float linhaY[] = {0, 5};
 
// a velocidade x, y de cada ponto
float velX[] = {4, 4};
float velY[] = {5.5, 7.1};
 
// indica se o primeiro ponto bateu
// na borda, na frame actual
boolean bateu;
 
// inicializacao do programa
void setup() {
  size(500, 500);
  frameRate(20);
}
 
void draw() {
  background(0);
 
  stroke(255);
  // desenhar as linhas
  for (int i = 1; i < linhaX.length; i = i + 1) {
    line(linhaX[i-1], linhaY[i-1], linhaX[i], linhaY[i]);
    ellipse(linhaX[i-1], linhaY[i-1], 5, 5);
  }
 
  // actualizar as posicoes de todos os ponto
  for (int i = 0; i < linhaX.length; i = i + 1) {
    linhaX[i] = linhaX[i] + velX[i];
    linhaY[i] = linhaY[i] + velY[i];
  } 
 
  // vamos verificar se o primeito ponto bateu na borda
  bateu = false;
  if (linhaX[0] > 500 || linhaX[0] < 0) {
    velX[0] = -velX[0]; 
    bateu = true; 
  }
 
  if (linhaY[0] > 500 || linhaY[0] < 0) {
    velY[0] = -velY[0];
    bateu = true; 
  }
 
  // verificar todos os outros
  for (int i = 1; i < linhaX.length; i = i + 1) {
    if (linhaX[i] > 500 || linhaX[i] < 0) {
      velX[i] = -velX[i]; 
    }
 
    if (linhaY[i] > 500 || linhaY[i] < 0) {
      velY[i] = -velY[i];
    }   
  }
 
  // se o ponto bateu na borda
  // acrescentamos um ponto
  if (bateu == true) {
    float tmpX[] = new float[linhaX.length+1];
    float tmpY[] = new float[linhaX.length+1];
    float tmpVelX[] = new float[linhaX.length+1];
    float tmpVelY[] = new float[linhaX.length+1];  
 
    for (int i = 0; i < linhaX.length; i = i+1) {
      tmpX[i] = linhaX[i];
      tmpY[i] = linhaY[i];
      tmpVelX[i] = velX[i];
      tmpVelY[i] = velY[i];
    }
    tmpX[linhaX.length] = random(500);
    tmpY[linhaX.length] = random(500);
    tmpVelX[linhaX.length] = random(1, 5);
    tmpVelY[linhaX.length] = random(1, 5);
    linhaX = tmpX;
    linhaY = tmpY;
    velX = tmpVelX;
    velY = tmpVelY;
  }
}

Código Rectângulos

Tuesday, February 27th, 2007

float rectX[];
float rectY[];
 
float velocidade[];
 
// inicializacao do programa
void setup() {
  size(400, 400);
  frameRate(10);
 
  rectX = new float[50];
  rectY = new float[50];
  velocidade = new float[50];
 
  for (int i = 0; i < 50; i++) {
    rectX[i] = 0;
    rectY[i] = i*10;
    velocidade[i] = random(1, 5);
  }
}
 
// desenho das varias frames
void draw() {
  background(0);
 
  for (int i = 0; i < 50; i++) {
    rect(rectX[i], rectY[i], 5, 5);
   
    rectX[i] = rectX[i] + velocidade[i];
   
    if (rectX[i] > 400 || rectX[i] < 0) {
      velocidade[i] = -velocidade[i];
    }
  }
}

Programa Bola

Wednesday, February 14th, 2007

Apenas para referência, aqui fica o programa que construimos na última aula.

Neste programa, a velocidade da bola tem uma precisao inferior ao pixel.

// Posição da bola. Tem de ser float, porque vamos manter a posição
// da bola com precisao maior do que o pixel.
float x, y;
 
// Diametro da bola
int diametro;
 
//Velocidade/Direcção da bola
float velocidadeX, velocidadeY;
 
void setup() {
  //inicializar o tamanho do ecra: 400×400 pixeis
  size(400, 400);
 
  // Inicialização da posição
  x = 200;
  y = 100;
 
 
  //Inicializar o diametro
  diametro = 15;
 
  // Inicializar a direccao
  velocidadeX = -0.4;
  velocidadeY = 2.2;
}
 
void draw() {
  // limpar o fundo
  background(0);
 
  // desenhar a bola como um circulo.
  // apesar de passarmos valores reais na posicao, o método ellipse
  // arrendonda automaticamente para o pixel.
  ellipse(x, y, diametro, diametro);
 
  // actualizar a posicao da bola
  x = x + velocidadeX;
  y = y + velocidadeY;
}