sexta-feira, 15 de abril de 2016

Aula 9 - Breakout


Aperte R para resetar

//Posições X e Y do bastão e das bolas
int bastaoX = 250;
int bolaX = 300;
int bolaY = 550;
int dX = 5;
int dY = 5;
//Uma matriz de booleanos para guardar se a matriz de blocos está ou não "viva"
boolean[][] alive = new boolean[10][5];

void setup() {
  size(600, 600);
  noStroke();
  colorMode(HSB, 2);
  reset();
}

void draw() {
  fill(0, 0, 0, 0.5);
  rect(0, 0, width, height);
  fill(sin(radians(frameCount))+1, 2, 2);
  ellipse(bolaX, bolaY, 20, 20);
  for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 5; j++) {
      block(75+50*i, 100+20*j, i, j);
    }
  }
  fill(0, 0, 2);
  rect(bastaoX, 580, 100, 20);  
  bolaX = bolaX += dX;
  bolaY = bolaY += dY;
  ballLimit();
  teclas();
}

void teclas() {
  if (keyPressed==true) {
    if (keyCode==RIGHT) {
      bastaoX += 5;
    }
    if (keyCode==LEFT) {
      bastaoX -= 5;
    }
    if (key=='r'||key=='R'){
      reset();
      loop();
    }
  }
  if (bastaoX >= 500) {
    bastaoX = 500;
  }
  if (bastaoX <= 0) {
    bastaoX = 0;
  }
}

void ballLimit(){
  if ((bolaX >= 570)||(bolaX <= 10)) {
    dX *= -1;
  }
  if (bolaY <= 10) {
    dY *= -1;
  }
  if ((bolaY >= 570)&&((bolaX >= bastaoX)&&(bolaX <= bastaoX + 100)&&(bolaY<600))) {
    dY = -1*abs(dY);
    dX += (bolaX - bastaoX + 50)/25;
  }
  if (bolaY > 600){
    fill(sin(radians(frameCount))+1, 2, 2);
    text("Game over", bastaoX + 20, 595);
  }
}

void block(int x, int y, int i, int j) {
  if (alive[i][j]) {
    stroke(0, 0, 2);
    fill(cos(radians(frameCount)+(i+1)*QUARTER_PI+(j+1)*QUARTER_PI)+1, 2, 2);
    rect(x-25, y-10, 50, 20);
    if (((bolaX >= x-35)&&(bolaX <= x+35))&&((bolaY >= y-10)&&(bolaY <= y+10))) {
      alive[i][j] = false;
      dX *= -1;
      dY *= -1;
    }
    noStroke();
  }
}

void reset(){
  bastaoX = 250;
  bolaX = 300;
  bolaY = 550;
  dX = 5;
  dY = 5;
  for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 5; j++) {
      alive[i][j] = true;
    }
  }  
}

Nenhum comentário:

Postar um comentário

Pode falar, eu não mordo... Pelo menos não através da internet