Atividade 09 - Pong

A atividade 09 consiste em:
"Explicar a diferença entre o uso da variável de sistema keyPressed e da função keyPressed() com base no desenvolvimento de uma versão simplificada do jogo Pong, para um único bastão que não permita que a bola saia pela margem direita da tela".
Para criar o pong fizemos a aplicação dos três códigos desenvolvidos em sala de aula, movimentação, oscilação e colisão.
01 - keyPressed vs keyPressed()
Vamos iniciar a nossa atividade explicando essa diferença:
-> keyPressed
- Variável do tipo booleana, ou seja, pode alocar dois tipos de valores: True ou False, sendo True se qualquer tecla for pressionada e False se nenhuma tecla for pressionada. 
- Pode ser usada no escopo da função draw(), deixando o jogo mais fluído
->keyPressed()
- Função que não há retorno de nenhuma variável
- É chamada sempre que uma tecla é pressionada, sendo assim sempre necessário fazer uma verificação 
- Não pode ser usada no escopo draw(), pois se usada causa um loop infinito.
- Jogo fica menos fluído e mais travado
Por tanto, para o jogo optei por utilizar a variável keyPressed com o keyCode especificado em um if e um else if para cada movimento, DOWN = movimentar para baixo o bastão com a seta pra baixo e UP = movimentar para cima o bastão com a seta para coma.

02 - Colisão
Nossa tela terá dimensão de 600 x 600, nossa bola terá diâmetro de 10 e o retângulo terá 20 de largura e 100 de altura.
Agora precisamos configurar a colisão do bastão com a bola!
Sabendo que o bastão tem uma altura de 100 pixels e seu ponto de origem X é sempre 570, já que ele sempre fica no extremo direito da tela, para que haja a colisão da bola com o bastão é preciso estabelecer um if com esses três parâmetros:
- Ponto de origem X da bola + 10, devido ao diâmetro escolhido do círculo, igual a 570.
- Ponto de origem Y da bola ser igual ou maior ao ponto de origem Y
- Ponto de origem Y da bola menor ou igual ao ponto de origem Y + 100, já que sua altura é 100
Esses três parâmetros garantem que haja colisão da bola com o bastão, de forma que quando eles forem verdadeiros, iremos tornar a oscilação da posição X da bola, código de oscilação feito em sala, negativa, fazendo a bola inverter sua trajetória.
03 - Spawn aleatório!
Para deixar o jogo mais dinâmico iremos aleatorizar o spawn da bola quando o jogador perder. Para isso basta colocar na colisão da bola com a parede da direita que o ponto de origem da bola X seja igual a 300, para nascer bem no centro da tela, e uma função random convertida para inteiros de 10 a 590 no ponto de origem Y, garantindo aleatoriedade no spawn.
04 - Pontos!
Por último iremos adicionar um contador que iniciará em 0 e vai aumentando em 1 toda vez que o player conseguir rebater a bola. Caso ele perca o contador vai reiniciar.
Para isso criamos um int contador igual a 0. Na função de colisão, iremos aumentar em 1 o contador e na função de colisão com a parede direita iremos reiniciar para 0
Depois é só rodar o código e pronto!

Comentários