Código da Raquete do Oponente:
// Função para movimentar a raquete do oponente
function movimentaRaqueteOponente( ){
velocidadeYOponente = yBolinha - yRaqueteOponente – (raqueteComprimento / 2) – 40;
yRaqueteOponente += velocidadeYOponente
}
CONSIDERANDO OS VALORES: yBolinha = 200 Posição Y do centro da bola yRaqueteOponente = 155 Posição Y da parte superior esquerda da raquete
*-(raqueteComprimento / 2) – 40 = -(10/2) – 40 => -45 *
Quer dizer que o yRaqueteOponente(155) está 45 acima em relação ao yBolinha(200). Ficando assim o centro da raquete com o centro da bola. PORTANTO O VALOR 40 NÃO É ÚTIL PORQUE O OPONENTE SEMPRE VAI ACERTAR A BOLA NO MEIO DA RAQUETE, E NÃO TERÁ UMA MARGEM DE ERRO. POR ISSO O PROFESSOR COLOCOU O VALOR 30, QUANTO MAIS O VALOR SE DISTANCIAR DE 40, TANTO PARA CIMA QUANTO PARA BAIXO, MAIS DIFÍCIL DO OPONENTE ACERTAR A BOLA.
VAMOS DETALHAR O CÓDIGO: yBolinha – yRaqueteOponente = Aqui só calcula a diferença do eixo y da bolinha do eixo y da raquete do oponente: Considerando que a bola só se movimenta pelo eixo x, para ficar mais fácil de visualizar a movimentação da raquete, por isso foi comentado o código abaixo:
// Movimenta a Bolinha:
function movimentaBolinha(){
xBolinha += velocidadeXBolinha;
// yBolinha += velocidadeYBolinha;
}
Partindo desse pressuposto, podemos afirmar que o eixo x da bolinha será sempre 200 (no centro da tela) como pré-definido no código. Vamos colocar valores para ficar mais claro:
yBolinha = 200 (200 é valor de y no centro da bola, significa que o eixo y da bola está no centro da tela visto que a tela tem 400 de altura).
yRaqueteOponente = 155 (155 é valor de y da raquete na tela. A altura da tela tem 400, metade dela seria 200, se colocar a raquete em 200, ela ficaria do centro para baixo, visto que a altura da raquete começa a contar da parte superior esquerda para baixo, então temos que diminuir metade do valor da raquete do centro da tela, que daria 200 – 45 = 155. Assim o centro da raquete está igual ao centro da bolinha)
*VelocidadeYOponente = * yBolinha – yRaqueteOponente = 200 – 155 = 45 – (raqueteComprimento / 2 – 40 = - (10/2) – 40 => -45
45 -45 = 0
yRaqueteOponente(155) += velocidadeYOponente(0*) yRaqueteOponente += 155 + 0 = *155 (Como a velocidade da raquete Oponente é zero, ela não vai se mexer)
OUTRO EXEMPLO Alterando o valor da raquete para um eixo y diferente de 155: yBolinha = 200 yRaqueteOponente = 225
Nesse caso a raquete vai subir 70. Então a bola vai bater no centro da raquete novamente porque colocamos 40 de margem. Para ter uma margem de erro, temos que colocar um valor abaixo ou acima de 40.