top of page

Atividade 9

  • Foto do escritor: Marcos André
    Marcos André
  • 24 de abr. de 2016
  • 2 min de leitura

'Incluir dois ou mais obstáculos na tela,

que são destruídos quando tocados pela bola'

Abaixo segue o código do jogo, usei algumas funções de filtros e imagens para conferir um resultado visualmente mais rico.

Usei dois vetores para realizar o armazenamento das coordenadas x e y de blocos aleatoriamente posicionados na tela.Utilizei uma busca para me certificar de que não existem dois blocos sobrepostos.

Para detectar a colisão realizei um laço que percorre os dois vetores das coordenadas x e y e ,caso a bolinha esteja na área, o bloco é retirado da tela.

int blocosInteiros=0; boolean criados; int [] xBloco=new int [10]; int [] yBloco=new int [10];

int Score;

int rectDX; int rectX; int rectY;

// PImage img; PImage img2; int dX; int bolaX; int bolaY; int dY; boolean invert; //

//CRIA OS BLOCOS void GeraCoordenadasBlocos(){ if(!criados){ for (int i=0;i<=9;i++){ xBloco[i]=int(random(10,500)); yBloco[i]=int(random(10,200)); } blocosInteiros=9; criados=false; } }

void setup() {

GeraCoordenadasBlocos(); rectX=40; rectDX=5; rectY=560; invert=false; img = loadImage("Background.jpg"); img2= loadImage("recttexture.jpg"); Score=0; dX=5; dY=3;

bolaX=10; bolaY=8;

size(600, 600); frameRate(100); }

void draw() { image(img,0,0); image(img2,8,7); img2.resize(180,60); fill(200); rect(rectX, rectY, 100, 30, 8); fill(100,200,300); ellipse(bolaX, bolaY, 30, 30); bolaX=bolaX+dX; bolaY=bolaY+dY; fill(105,30,175,1200); textSize(30); text("Score:"+Score,18,48);

//COLISAO int k=0; for ( k=0;k<=9;k++){ if (((bolaY + 10 == yBloco[k])||(bolaY == yBloco[k] + 30)) && (bolaX >= xBloco[k] && bolaX <= xBloco[k] + 80)) { yBloco[k] = +600; xBloco[k]=+600; Score=Score+20; dY=-dY; blocosInteiros--; } }

/*Aqui eu reinicio o jogo caso a bolinha ultrapasse o limite inferior da tela.*/ if(bolaY>600){ setup(); } /*Acompanhamento de variáveis para controle*//// println(rectX+"//rectX"); // println(rectY+"//rectY"); // println(bolaX+"//bolaX"); // println(bolaY+"//bolaY"); // println(dX+"//dx"); // println(dY+"//dY"); // /*______________________________________*/ /*Checa se não há dois blocos com a mesma localização/coordenadas*/ for(int j=0;j<=8;j++){ for(int i=j+1;i<=9;i++){ if(xBloco[j]==xBloco[i]+100 || yBloco[j]==yBloco[i]){} else{ fill(int(random(1,360)*0.8),int(random(1,360)*0.8),int(random(1,360)*0.7),100); rect(xBloco[i],yBloco[i],80,20,8); } } } if(blocosInteiros==0 && Score>5){ GeraCoordenadasBlocos(); } if(keyPressed==true && keyCode==RIGHT ){

rectX=rectX+rectDX;

}

if(keyPressed==true && keyCode==LEFT ){ rectX=rectX-rectDX;

}

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

if ( bolaY >= 570 && bolaY < 600 && bolaX >= rectX && bolaX <= rectX + 100) { dY = -dY;

if(invert==false) invert=true; else invert=false; } if (bolaY<=0) { dY=-dY; } filter(DILATE); filter(ERODE); if(invert==true) filter(INVERT);

//Pontos por segundo! if(frameCount%100==0) Score++;

}

Vídeo do jogo:

Comments


Sobre mim!

Meu nome é Marcos André, sou aluno de Ciência da Computação na Faculdade Farias Brito e Sistemas e Mídias digitais na UFC.Esse blog,será utilizado para postagem e divulgação de trabalhos realizados em ambos os cursos.

Outros Posts

© 2023 by BI World. Proudly created with Wix.com

bottom of page