Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

ReferenceError: verificaColisaoRaquete is not defined

Então...

Estou seguindo todas as aulas do curso e do nada encontrei o seguinte erro no console:

ReferenceError: verificaColisaoRaquete is not defined (sketch: line 28)

A tal da linha 28 é justamente onde eu chamo a função "verificaColisaoRaquete" dentro do DRAW. Já percebi que mudando a posição da função "verificaColisaoRaquete" no corpo do código ele funciona, mas qual o conflito que existe em esta função estar no final do código?

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

//variaveis da raquete
let xRaquete = 5;
let yRaquete = 150;
let larguraRaquete = 10;
let alturaRaquete = 90;

//velocidade da bolinha
let velocidadeXBolinha = 2;
let velocidadeYBolinha = 2;

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 mostraRaquete() {
   rect(xRaquete, yRaquete, larguraRaquete, alturaRaquete)
}


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

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

function verificaColisaoRaquete() {
    if (xBolinha - raio < xRaquete + larguraRaquete
        && yBolinha - raio < yRaquete + alturaRaquete
        && yBolinha + raio > yRaquete) {
        velocidadeXBolinha *= -1;
    }
}
}
3 respostas

E se eu confessar que faltou um último "}" na função anterior? Aí foi só corrigir a "movimentaMinhaRaquete" que o código funcionou???

#PrestaAtenção

Mas se alguém tiver uma explicação mais técnica, gostaria de ler.

Abraços!

solução!

Boa tarde, Eduardo! Como vai?

Repare que seu código está assim:

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

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

Ou seja, como a função verificaColisaoRaquete() está dentro da função movimentaMinhaRaquete(), consequentemente ela não consegue ser acessada a partir da função draw(). O correto seria fazer:

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

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

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Entendi sim professor!

A verdade é que eu não havia fechado a função movimentaMinhaRaquete().

Todo o erro por causa de um "}"...