Atividade 9 - Bounding Box e Jogo Breakout

A técnica de verificação de colisão por bouding box, baseia-se em considerar caixas invisíveis em torno dos objetos a serem colididos, para assim a colisão ser feita como se os objetos fossem dois retângulos. A técnica de bounding box facilita o desenvolvimento de uma colisão, tornando ela eficaz mesmo que simples.
 
Nesse caso, considera-se a bolinha sendo um quadrado

Nessa atividade, desenvolvi uma réplica do jogo Breakout. O jogo baseia-se em uma bolinha que se movimenta pela tela, e você deve impedir que ela ultrapasse a parte inferior, movimentando um bastão que faz a bolinha subir quando a mesma colidir com ele.
Visão final do jogo

De início, criei a função bastao(), que é responsável pela criação e movimentação do objeto que podemos controlar. Ela recebe como parâmetro a posição x do bastão. Dentro dela, desenho um retângulo com a posição x indicada pelo parâmetro da função e posiciono numa posição y alta, para que o bastão fique na parte de baixo da tela. Após isso, verifico se alguma tecla foi pressionada, caso a tela RIGHT tenha sido pressionada, incremento mais 5 na variável da posição x, que deve ser uma variável global. Vale lembrar que esse incremento só acontece caso o x seja menor que o width da tela menos a largura do bastão, para que caso o bastão esteja colidindo com a parede, não ocorra o incremento. Repito o mesmo processo para o lado esquerdo.

Agora crio a função bolinha(), que recebe as posições x e y como parâmetro e desenha uma ellipse na tela com esses respectivos valores. Após isso incremento de ambas as variáveis, que são globais, a velocidade delas, que também defini como variáveis globais.

Após, verifico a colisão da bolinha com as paredes. Por exemplo, na parede da direita, caso a posição x da bolinha seja maior ou igual a largura da tela menos o raio da bola, então houve colisão. Dessa forma, inverto o valor da velocidade x e incremento mais um para ela, pois sempre que a bolinha colide, sua velocidade aumenta. Repito esse processo para as demais paredes, menos para a inferior.

Para a colisão com o bastão, verifico se as coordenadas da bolinha se encontram dentro do bastão. Caso isso aconteça, inverto os valores das velocidades da bolinha, e incremento mais um a elas.

Por fim, verifico se a bolinha ultrapassou a altura da tela, resultando assim, na perca do jogador.

Crio também a função obstaculo() que recebe as posições x e y, a largura e a altura. Dentro dela, desenho o retângulo com os respectivos valores. E por fim verifico a colisão da bolinha com o obstáculo, caso as coordenadas da bola estejam dentro do obstáculo, inverto as velocidades e incremento 0,5 a elas.

Para finalizar a aplicação, chamo todas as funções no evento draw() e defino os valores que uma recebe.


Para baixar o código do projeto comentado clique aqui

Comentários

Postagens mais visitadas deste blog

Atividade 16 - Polígono regular

Atividade 15 - Transição entre Imagens

Atividade 7 - Adaptive Logo