Bom dia.
Fiz o código constrain para não bater nas bordas, porem ao executar minha raquete bate na borda inferior normalmente e na superior ela atravessa a borda, já a raquete do oponente atravessa as bordas superior e inferior.
Bom dia.
Fiz o código constrain para não bater nas bordas, porem ao executar minha raquete bate na borda inferior normalmente e na superior ela atravessa a borda, já a raquete do oponente atravessa as bordas superior e inferior.
Bom dia, Murilo! Como você está?
Em cada função, há um motivo diferente pelo qual o constrain()
não está sendo aplicado corretamente. Vamos lá:
Na função movimentaMinhaRaquete()
, a linha yRaquete = constrain(yRaquete, 10, 310);
está dentro da condição if
que verifica o movimento para baixo, por isso, o movimento só está restrito enquanto a seta para baixo estiver pressionada. Seu código deve ficar assim:
function movimentaMinhaRaquete(){
if (keyIsDown(UP_ARROW)){
yRaquete -= 10;
}
if (keyIsDown(DOWN_ARROW)){
yRaquete += 10;
}
yRaquete = constrain(yRaquete, 0, 310);
}
Já em movimentaRaqueteOponente()
, há um errinho de sintaxe. A variável do valor y da raquete do oponente está definida com a letra inicial "O" minúscula, porém, na linha do constraint
, está chamada com a letra "O" maiúscula. Alterar essa letrinha já resolve o problema:
function movimentaRaqueteOponente(){
velocidadeYOponente = yBolinha - yRaqueteoponente - raqueteComprimento / 2 - 30; yRaqueteoponente += velocidadeYOponente;
yRaqueteoponente = constrain(yRaqueteoponente, 10, 310);
}
Porém, seria legal que o nome da variável fosse yRaqueteOponente
, com cada inicial maiúscula. Esse tipo de nomenclatura é chamada de Camel Case, e é uma boa prática seguir um padrão de nomenclatura em todo o projeto. Sei que dá um pouquinho a mais de trabalho, mas é um detalhe que vai refinar bastante a qualidade do seu jogo :)
Vou deixar aqui um artigo bem legal que fala sobre os padrões de nomenclatura, caso você fique curioso:
Abraços, Murilo! Se precisar de alguma ajudinha, estamos por aqui.