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.