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

Erro ao colidir com a raquete

https://editor.p5js.org/tacio608/sketches/ZSgZ8RbNZ

Ao colidir com a raquete o jogo trava.

Sou novato, já revisei algumas vezes olhando passo a passo e não identifico o erro.

1 resposta
solução!

Olá, Tacio! Tudo bem com você?

Visualizei seu P5 e pude observar apenas um pequeno detalhe diferente na sua variável velocidadeXBolinha. Olha só:

O P5 mostrou esse erro quando a bolinha toca na raquete:

p5.js says: There's an error due to "velocidadeXBolinha" not being defined in the current scope (on line 145 in about:srcdoc [about:srcdoc:145:9]). .

Isso significa que a variável velocidadeXBolinha não foi definida, então fui procurar por ela no seu código e percebi que você declarou a variável com um "b" minúsculo:

let velocidadeXbolinha = 6; //com um b minúsculo

No entanto, na função que faz a verificação da colisão da bolinha com a Raquete, você colocou o "B" maiúsculo, e foi isso que provocou o erro. Olha só a função verificaColisaoRaquete()

 function verificaColisaoRaquete() {
    if (xBolinha - raio < xRaquete + raqueteComprimento
        && yBolinha - raio < yRaquete + raqueteAltura
        && yBolinha + raio > yRaquete) {
        velocidadeXBolinha *= -1; //aqui está com B maiúsculo
    }
}

E por qual motivo isso acontece?

O JavaScript, que é a linguagem utilizada para construir o jogo, possui uma característica chamada de CamelCase (que significa Caminho ou Corcova do Camelo), ou seja, a linguagem é CaseSensitive e o interpretador identifica quando UmA LetRa é Maiúscula ou MinÚscula e faz a diferenciação entre elas.

Utilizamos o CamelCase para atribuição de nomes de variáveis ou funções por questões de boas práticas, pois assim o código fica mais organizado e legível.

Qual a possível solução?

Renomeei os nomes das varíaveis "velocidadeXbolinha" e funcionou direitinho, a lógica está já estava correta :)

let xBolinha = 300;
let yBolinha = 200;
let diametro = 15
let raio = diametro / 2;

let velocidadeXBolinha = 6;
let velocidadeyBolinha = 6;

//variaveis da raquete
let xRaquete = 5
let yRaquete = 150
let raqueteComprimento = 10
let raqueteAltura = 90


function setup() {
  createCanvas(600, 400);
}

function draw() {
    background(0);
    mostraBolinha();
     movimentaBolinha();
     verificaColisaoBorda(); 
    mostraRaquete();
    movimentaMinhaRaquete()
    verificaColisaoRaquete();
}



function mostraBolinha(){ 
  circle (xBolinha,yBolinha,diametro);}

function movimentaBolinha(){
  xBolinha += velocidadeXBolinha;
  yBolinha += velocidadeyBolinha;  
}

function verificaColisaoBorda(){ if (xBolinha +raio> width|| xBolinha - raio <0){
       velocidadeXBolinha *= -1;
    }
  if (yBolinha+ raio > height ||yBolinha - raio <0){ 
  velocidadeyBolinha *=-1
  }}

function mostraRaquete(){rect(xRaquete,yRaquete,raqueteComprimento,raqueteAltura)
  mostraRaquete}

function movimentaMinhaRaquete(){ 
if (keyIsDown(UP_ARROW)){
  yRaquete -= 10;
}
 if (keyIsDown(DOWN_ARROW)){
  yRaquete += 10;}}

function verificaColisaoRaquete() {
    if (xBolinha - raio < xRaquete + raqueteComprimento
        && yBolinha - raio < yRaquete + raqueteAltura
        && yBolinha + raio > yRaquete) {
        velocidadeXBolinha *= -1;
    }
}