Trabalhei como comunicador visual na comissão de comunicação do programa de aprendizagem cooperativa em células estudantis PACCE na propria UFC. Hoje sou editor de vídeos do Laboratório de Mídias Eletrônicas (LME), também vinculado a UFC.
Tecnologia do Blogger.

Quem sou eu

Quem sou eu

Pesquise por marcações

sábado, 11 de abril de 2015

breakout no processing

Olá pessoal, hoje iremos brincar de criar clássicos do atari, e o escolhido da vez foi ele, o Breakout. Com uma arquitetura simples e bem similar ao Pong, o breakout consiste em você acerta a bolinha em varios blocos que estão acima de você.

Mas vamos para a parte de programar o jogo. E nela você precisará criar vários boleanos para identificar a colisão da bola em sua barrinha, e nos "inimigos". Serão cerca de 16 inimigos para o tamanho da tela que será usada, caso queiram fazer em uma tela maior, basta aumentar a quantidade também. Para as cores dos bloquinhos criasse alguns floats, e neles atribuísse a função random(0, 255) para que varie de 0 a 255 da escala de cor. 

Depois fazemos as funções de colisões possivel, e logo em seguida faremos a leitura das funções e criando todos os nossos objetos do jogo, nos seus devidos lugares.

O código encontra-se logo abaixo:


float bolaY=250 ;// onde a bola nasce, posição da bola
float bolaX=250 ;// onde a bola nasce, posição da bola
float dX=1; // velocidade da bola
float dY=1; // velocidade da bola
float tamBola=10;
float xP = 110; //posição da barra
float yP = 210; // posição da barra
float x1,x2,y1,y2;// variaveis para a função colisão
float xB=80; // tamanho da barra
float yB=10; // altura da barra
boolean x,z1,mz1,z2,mz2,z3,mz3,z4,mz4,mz5,z5,mz6,z6,mz7,z7,mz8,z8,mz9,z9,mz10,z10,mz11,z11,mz12,z12,mz13,z13,mz14,z14,mz15,z15,mz16,z16;
float xB1=20;// tamanho do inimigo
float yB1=10;//altura do inimigo
float xP1=0;//posição do inimigo
float yP1=20;//posição do inimigo
float xP2=20;
float xP3=40;//posição do inimigo
float xP4=60;
float xP5=80;
float xP6=100;//posição do inimigo
float xP7=120;
float xP8=140;
float xP9=160;
float xP10=180;//posição do inimigo
float xP11=200;
float xP12=220;
float xP13=240;//posição do inimigo
float xP14=260;
float xP15=280;
float xP16=300;
float corz11,corz12,corz13;
float corz21,corz22,corz23;
float corz31,corz32,corz33;
float corz41,corz42,corz43;

void setup (){
size(320,240);
mz1=false;
mz2=false;
mz3=false;
mz4=false;
mz5=false;
mz6=false;
mz7=false;
mz8=false;
corz11=random(0, 255);
corz12=random(0, 255);
corz13=random(0, 255);
corz21=random(0, 255);
corz22=random(0, 255);
corz23=random(0, 255);
corz31=random(0, 255);
corz32=random(0, 255);
corz33=random(0, 255);
bolaX=100;
bolaY=100;
}

Boolean colisao (float x1,float y1,float x2, float y2){
if(x1>x2 && x1<(x2+80) && y1>y2 && y1<(y2+10)){
  return true;
  } else {
    return false;  
         }
  }
  
Boolean colisaoInimigo (float x1,float y1,float x2, float y2){
if(x1>x2 && x1<(x2+20) && y1>y2 && y1<(y2+10)){
  return true;
  } else {
    return false;  
         }
  }

  
void bloco (float x1, float x2,float y1,float y2){
if (x==true){
  
    dY= -dY-(dY*0.01);
  }

}

void draw(){
  background(0);
  
 //bola em movimento
  
  ellipse(bolaX,bolaY,tamBola,tamBola);
  bolaY=bolaY+dY;
  bolaX=bolaX+dX;
  
  if(bolaY>=(height-(tamBola/2))){
  bolaX=40;
  bolaY=40;
  ellipse(40,40,tamBola,tamBola);
  bolaY=bolaY+dY;
  bolaX=bolaX+dX;
  
  }
  
  if(bolaY<=(tamBola/2)){
  dY= -dY-(dY*0.01);
  }
  
    if(bolaX>=(width-(tamBola/2))){
  dX= -dX-(dY*0.01);
  }
  
  if(bolaX<=(tamBola/2)){
  dX= -dX-(dY*0.01);
  }
 



  rect(xP, yP, xB, yB);  // barra inferior
  if(keyPressed == true) {   
      if(keyCode == RIGHT) {
         if(xP<=(320-xB)) 
          xP+=8; 
          } else if(keyCode == LEFT) {
               if(xP>=0){ 
                xP-=8; 
               }
          } 
   } 


// colisão
x = colisao(bolaX,bolaY,xP,yP);
if (x==true){
  if(bolaX>xP && bolaX



O resultado do jogo é mais ou menos esse.
author
Sou - Samuel Lincoln -
Sou um aluno do Curso de Sistemas e Mídias Digitais da Universidade Federal do Ceará (UFC). Já estudei Matemática (bacharelado) e Matemática industrial, na mesma universidade. Trabalho como editor de vídeos do Laboratório de Mídias Eletrônicas, vinculada a Universidade Virtual (vinculada a UFC).