Como faço para limitar a raquete para que ela não "suma", tanto para cima quanto para baixo.
Como faço para limitar a raquete para que ela não "suma", tanto para cima quanto para baixo.
Oi, Gustavo! Tudo certo por aí?
Desde já, agradeço a paciência em aguardar uma resposta!
Existem várias maneiras de limitar o espaço vertical da raquete. Trouxe aqui dois caminhos possíveis, então sinta-se livre para escolher aquele que você mais gostar!
yRaquete seja menor ou igual a 0, obrigatoriamente ele permanecerá igual a 0, proibindo que a raquete vá para cima. A lógica é a mesma para a parte inferior; se yRaquete for superior ou igual à height (altura da tela) menos alturaRaquete, ela permanecerá com o mesmo valor, isto é, height - alturaRaquete (usamos este cálculo para que seja desconsiderado o comprimento vertical da raquete).Abaixo há o código que realiza isso:
function limitaAlturaRaquete() {
if (yRaquete <= 0) {
yRaquete = 0;
}
if (yRaquete >= height - alturaRaquete) {
yRaquete = height - alturaRaquete;
}
}
Para realizar a lógica acima, podemos fazer o seguinte código:
function limitaAlturaRaquete(){
if (yRaquete < - alturaRaquete) {
yRaquete = height + alturaRaquete;
}
if (yRaquete > height + alturaRaquete) {
yRaquete = - alturaRaquete;
}
}
A primeira estrutura condicional verifica se yRaquete é inferior ao valor negativo de alturaRaquete. Se isso for verdade, yRaquete será igual ao valor de height mais alturaRaquete. Com isso, evitamos uma mudança brusca da posição, deixando como margem o próprio tamanho da raquete.
A segunda verificação realiza o processo inverso do primeiro bloco condicional!
Para finalizar, lembre-se que para utilizar os códigos apresentados acima, precisamos adicionar a chamada da função limitaAlturaRaquete() em draw(), da seguinte maneira:
function draw() {
// ...outras chamadas de função
limitaAlturaRaquete()
}
Por meio disso, evitamos que a nossa raquete ultrapasse de maneira exagerada o limite da tela! Legal, não acha?
Caso surjam dúvidas após minha explicação ou ao decorrer dos seus estudos, lembre-se de enviá-las no fórum. Fico à disposição para te auxiliar no que for necessário.
Grande abraço, Raphael!