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
Postar um comentário