Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Bug] Apenas um pequeno problema que ocorreu comigo e quero compartilhar.

Bom, na aula 3 de Lógica de Programação, especificamente na atividade 4, foi ensinado pelo instrutor, o passo a passo de como dar colisão a um objeto, sendo o objeto em evidência, uma raquete. Um erro ocorreu comigo, que basicamente copiei o mesmo código para a colisão que o ensinado na aula.

O ''+'' estava sendo computado pelo P5.js. como adição e portanto ao invés de definir a colisão com a raquete estava somando o ''xRaquete'' com o ''rComprimento'', fazendo assim a bola ter colisão a frente da raquete ao invés de diretamente nela, como deveria ser. Nesse caso eu apenas troquei o ''+'' por ''&&'', então o comprimento parou de ser somado com o x, e portanto, finalmente, após quase quebrar meu teclado de tanta raiva, resolvi o estranho bug que pode ou não ser um bug (ser apenas um problema nas minhas configurações do site). É apenas isso, só queria compartilhar esse estranho acontecimento. :)

Referência para melhor entendimento da situação: Suposto problema

Problema resolvido Edit: Essa minha suposta solução falhou alguns códigos dps, especificamente na preparação do código de colisão com a raquete adversária, sem conseguir achar uma forma de solucionar o problema, eu abandonei essa função e usei outra disponibilizada no GiftHub (que também foi usada em aula, mas de forma que mesclou os dois códigos, coisa que eu falhei em fazer, usei apenas o do GiftHub.

1 resposta
solução!

Olá, Valdson

Pelo que você descreveu, parece que você encontrou um problema comum que acontece quando estamos aprendendo a programar. A questão do "+" e "&&" tem a ver com a diferença entre operações aritméticas e operações lógicas. No seu caso, você queria verificar se a bola estava em uma posição entre o início da raquete (xRaquete) e o final da raquete (xRaquete + rComprimento).

Quando você usou o "+", o P5.js interpretou como uma operação aritmética, ou seja, somou os valores de xRaquete e rComprimento. Isso fez com que a colisão fosse detectada em uma posição à frente da raquete, como você mencionou.

Ao trocar o "+" por "&&", você mudou a operação para uma lógica. No entanto, isso não resolveu o problema, pois "&&" é um operador lógico que verifica se duas condições são verdadeiras ao mesmo tempo, o que não é o que você queria fazer.

A maneira correta de verificar se a bola está entre o início e o fim da raquete seria algo assim:

if (xBola > xRaquete && xBola < xRaquete + rComprimento) {
  // código para tratar a colisão
}

Neste caso, estamos verificando se a posição da bola (xBola) é maior que o início da raquete (xRaquete) E menor que o final da raquete (xRaquete + rComprimento). Se ambas as condições forem verdadeiras, então a bola está colidindo com a raquete.

Espero ter ajudado e bons estudos!