quinta-feira, 13 de outubro de 2016

Atividade 8 - Breakout com obstáculos.

incluir dois ou mais obstáculos na tela, que são destruídos quando tocados pela bola.

Já com nossa base de código do breakout que fizemos em sala, deveríamos incluir no mínimo 2 obstáculos e fazer serem destruídos quando colidir com a bola! Confesso que demorei bastante para achar uma solução que funcionasse corretamente, mas enfim depois te muitas tentativas cheguei nesse código: (o que está com fundo lilás foram os códigos adicionados para inserir essa colisão e desaparecimento do obstáculo)

int bastaoX=0;
int bolaX=10;
int dX=5;
int bolaY=(int) (random(500));;
int dY=5;
  
  int a=300;
  int b=300;
  int c=270;
  
void setup ()
{
size (600,600);
}

void draw ()
{
background(0);
fill(255);
rect(bastaoX, 580,100,20);
obstaculos();

if((keyPressed==true) &&(keyCode == RIGHT))
bastaoX= bastaoX+5;
else if ((keyPressed==true)&&(keyCode == LEFT))
bastaoX=bastaoX-5;

if (bastaoX>=500)
bastaoX=500;
else if (bastaoX<=0)
bastaoX=0;

ellipse(bolaX,bolaY,20,20);

bolaX=bolaX+dX;
bolaY=bolaY-dY;

if ((bolaX>590) || (bolaX<=0))
dX=-dX;

if (bolaY<=0)
dY=-dY;

for (int b=bastaoX; b<bastaoX+100; b++)
{
if ((bolaY>=580) && ((bolaX==b)))
dY=-dY;
}

 if ((bolaX>300)&& (bolaX<380) && (bolaY>300) && (bolaY<330))
  {
   a=-300;
  }
  if ((bolaX>220) && (bolaX<300) && (bolaY>300) && (bolaY<330))
  {
    b=-300;
  }
 if ((bolaX>260) && (bolaX<340) && (bolaY>270) && (bolaY<300))
  {
  c=-300;
  }
  
  if ((a==-300) && (b==-300) && (c==-300)) 
   {
  background (255,25,0);
  fill (0);
  text("VOCÊ VENCEU!",200,300);
  }

}

void obstaculos()
{

  fill(255,25,0);
  rect(a,a,80,30); 
  rect(b-80,b,80,30);
  rect(c-10,c,80,30);
}

Criei uma função obstaculos que desenha os três obstáculos nas posições que escolhi. Para controlar cada um separadamente criei variáveis globais que irão guardar os valores das posições!! E fiz um IF para cada obstáculo, cada um com as condições da bola encostar no intervalo do tamanho de cada obstaculo referente. Então SE a bola atingir aquele intervalo, a variável que controla sua posição fica -300, fazendo com que saia da tela, dando a impressão de destruição.
E acrescentei só uma tela de final, quando tiver destruido todos os obstáculos aparece "você venceu".
Comentários
0 Comentários

Nenhum comentário:

Postar um comentário

recent posts