Já tentei de todas as formas mas nenhuma delas faz o oponente errar. Alguém pode dar uma olhada no meu código e dizer o que fiz de errado? Desde já agradeço.
Já tentei de todas as formas mas nenhuma delas faz o oponente errar. Alguém pode dar uma olhada no meu código e dizer o que fiz de errado? Desde já agradeço.
Olá Beatriz. Dei uma olhada no seu código, e tenho algumas sugestoes:
com base no seu código, ele esta passando pra raquete2 inicialmente a posiçao da bolinha com um desvio de -30. (MENOS 30). então na segunda linha, deveria passar MENOS a chance de errar, para ir aumentando o erro.
No entanto, do jeito que a funçao calculaChanceDeErrar está, basta o oponente ficar um ponto a frente que a variável chanceDeErrar já vai pro valor maximo, pois a cada movimento da bolinha ele soma mais um na variavel. (entao da forma que estava, inicialmente voce atribui um erro de -30, e em seguida ja atribui +40, entao o erro ficava em +10, o que nao é suficiente para o oponente errar.)
Para corrigir, além de colocar "- chanceDeErrar" ao invés de "+ chanceDeErrar", minha sugestao seria colocar a funçao calculaChanceDeErrar() apenas dentro da funçao colisaoR2(), que aí a chanceDeErrar vai aumentando gradualmente a cada vez que o oponente rebate a bolinha, e não a cada mudança de posição da bola. Outra sugestao é colocar um reset na variavel chanceDeErrar, dentro da função calculaChanceDeErrar(), quando o jogo ficar empatado ou o player 1 estiver ganhando.
function moverR2maq(){
velocYR2 = yBolinha - yR2 - compR / 2 - 30;
yR2 += velocYR2 - chanceDeErrar;
}
function colisaoR2(){
if (xBolinha + raio > xR2 && yBolinha + raio < yR2 + altR && yBolinha - raio > yR2){
velocXBolinha *= -1;
raquetada.play();
calculaChanceDeErrar();
}
}
function calculaChanceDeErrar(){
if(pontosR2 >= pontosR1){
chanceDeErrar += 1
if(chanceDeErrar >= 39){
chanceDeErrar = 40
}
} else {
chanceDeErrar -= 1
if(chanceDeErrar <= 35){
chanceDeErrar = 35
}
}
if(pontosR1 >= pontosR2){
chanceDeErrar =0;
}
}
Espero ter ajudado. Abs
Oi Luciano, tudo bem?
Ajudou bastante, consegui resolver esse problema. Mas me tira uma dúvida que eu não entendi, porquê chamr a função calculaChanceDeErrar dentro da função moverR2maq se já chamou ela na função draw?
Obrigada pela ajuda.
ola! Pelo que entendi, voce queria que o aumento do erro fosse gradual, aos poucos, certo?
Se voce chamar ela na função draw, ela será executada cada vez que a bolinha se mexer, ou seja, quando a bola atravessar de um lado ao outro, a função calculaChanceDeErrar terá sido executada tantas vezes, que o valor da variável chanceDeErrar vai de 0 até o valor maximo muito rapido. chamando ela APENAS na função colisaoR2() (e nao na moverR2Maq), ela vai aumentar de 1 em 1, cada vez que o oponente bater na bola. Otra dica: uma maneira de voce acompanhar como uma variavel esta se comportando, é colocar o codigo:
console.log(chanceDeErrar);
dentro da função calculaChanceDeErrar, que vai aparecer ali no console toda vez que ela muda de valor. Assim fica mais fácil de entender.
Abs.
Agora entendi. Muito obrigada Luciano pelo seu tempo e ensino, me ajudou demais.