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

ReferenceError: colisaoMinhaRaqueteBiblioteca is not defined - COMO RESOLVE?

ReferenceError: colisaoMinhaRaqueteBiblioteca is not defined

Já chequei como está escrito quando chama as function no draw, o nome das variáveis na function e não encontrei o erro... alguém pode ajudar?

código está abaixo das imagens pra facilitar resposta. Abs!

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeInsira aqui a descrição dessa imagem para ajudar na acessibilidade

// variáveis da bolinha let xBolinha = 300;let yBolinha = 200; let diametro = 30; let velocidadeXbolinha = 6; let velocidadeYbolinha = 6; let raio = diametro / 2 ; let raqueteComprimento = 10; let raqueteAltura = 90;

// variáveis da raquete let xRaquete = 5; let yRaquete = 150;

let colidiu = false

function setup() { // Setup do cenário createCanvas(600, 400); }

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

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

function movimentaBolinha(){

xBolinha += velocidadeXbolinha; // Movimento da bolinha no eixo xy yBolinha += velocidadeYbolinha; }

function verificaColisaoBorda() {

if (xBolinha + raio > width || // Retornar nas bordas x xBolinha - raio <0){ velocidadeXbolinha *= -1; } if (yBolinha + raio> height || // Retornar nas bordas y yBolinha - raio < 0){ velocidadeYbolinha *= -1; } } function mostraRaquete(){ // Raquete rect (xRaquete,yRaquete,raqueteComprimento,raqueteAltura)

} function movimentaMinhaRaquete (){ if (keyIsDown(UP_ARROW)){ yRaquete -= 6; } if (keyIsDown(DOWN_ARROW)){ yRaquete += 6; } } function verificaColisaoRaquete(){ // Colisão bola raquete

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

function colisaoMinhaRaqueteBiblioteca(){

colidiu = collideRectCircle(xRaquete,yRaquete,raqueteComprimento,raqueteAltura,xBolinha,yBolinha,raio); if (colidiu){ velocidadeXbolinha *= -1; } } }

4 respostas

Boa tarde, você pode mandar o código do jeito que está no editor? Com com antes e depois do código para que o site da alura entenda esse texto como um trecho de código??

Ex.:

console.log("Hello World")``
let xBolinha = 300;                      
let yBolinha = 200;
let diametro = 30;
let velocidadeXbolinha = 6;
let velocidadeYbolinha = 6;
let raio = diametro / 2 ;
let raqueteComprimento = 10;
let raqueteAltura = 90;

// variáveis da raquete
let xRaquete = 5;
let yRaquete = 150;

let colidiu = false

function setup() {                     // Setup do cenário
  createCanvas(600, 400);
}

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

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

function movimentaBolinha(){

xBolinha += velocidadeXbolinha;     // Movimento da bolinha no eixo xy
yBolinha += velocidadeYbolinha;
}

function verificaColisaoBorda() {

  if (xBolinha + raio > width ||            // Retornar nas bordas x  
      xBolinha - raio <0){
    velocidadeXbolinha *= -1;
  } 
  if (yBolinha + raio> height ||           // Retornar nas bordas y   
     yBolinha - raio < 0){
    velocidadeYbolinha *= -1;
  }
}
function mostraRaquete(){                 // Raquete
  rect (xRaquete,yRaquete,raqueteComprimento,raqueteAltura)

} 
function movimentaMinhaRaquete (){        
  if (keyIsDown(UP_ARROW)){
    yRaquete -= 6;
  }
  if (keyIsDown(DOWN_ARROW)){
    yRaquete += 6;
  }
}
function verificaColisaoRaquete(){        // Colisão bola raquete

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

function colisaoMinhaRaqueteBiblioteca(){       

  colidiu = collideRectCircle(xRaquete,yRaquete,raqueteComprimento,raqueteAltura,xBolinha,yBolinha,raio);
  if (colidiu){
    velocidadeXbolinha *= -1;
  }
}
}

Descobri o que era... a function colisaoMinhaRaqueteBiblioteca() estava dentro da function verificaColisaoRaquete() pq não tinha fechado essa danadinha ....

Segue o final corrigido e rodando:

function verificaColisaoRaquete(){        // Colisão bola raquete

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

function colisaoMinhaRaqueteBiblioteca(){       

  colidiu = collideRectCircle(xRaquete,yRaquete,raqueteComprimento,raqueteAltura,xBolinha,yBolinha,raio);
  if (colidiu){
    velocidadeXbolinha *= -1;
  }
}
solução!

O nome da função realmente está certo, mas o motivo desse erro estar aparecendo não é o nome. Acontece que você não fechou a função "verificaColisaoRaquete()" que vem logo antes, na verdade você até fechou mas no final do código, depois de "declarar" a função "colisaoMinhaRaqueteBiblioteca()".

Para esse tipo de erro não acontecer, você deve se atentar para a organização na hora de escrever um programa. Uma boa prática é você identar o código, para que fique mais fácil visualizar onde cada bloco de código começa e termina.

let xBolinha = 300;                      
let yBolinha = 200;
let diametro = 30;
let velocidadeXbolinha = 6;
let velocidadeYbolinha = 6;
let raio = diametro / 2 ;
let raqueteComprimento = 10;
let raqueteAltura = 90;

// variáveis da raquete
let xRaquete = 5;
let yRaquete = 150;

let colidiu = false

function setup() {                     // Setup do cenário
  createCanvas(600, 400);
}

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

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

function movimentaBolinha(){

xBolinha += velocidadeXbolinha;     // Movimento da bolinha no eixo xy
yBolinha += velocidadeYbolinha;
}

function verificaColisaoBorda() {

  if (xBolinha + raio > width ||            // Retornar nas bordas x  
      xBolinha - raio <0){
    velocidadeXbolinha *= -1;
  } 
  if (yBolinha + raio> height ||           // Retornar nas bordas y   
     yBolinha - raio < 0){
    velocidadeYbolinha *= -1;
  }
}
function mostraRaquete(){                 // Raquete
  rect (xRaquete,yRaquete,raqueteComprimento,raqueteAltura)

} 
function movimentaMinhaRaquete (){        
  if (keyIsDown(UP_ARROW)){
    yRaquete -= 6;
  }
  if (keyIsDown(DOWN_ARROW)){
    yRaquete += 6;
  }
}
function verificaColisaoRaquete(){        // Colisão bola raquete

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

function colisaoMinhaRaqueteBiblioteca(){       

  colidiu = collideRectCircle(xRaquete,yRaquete,raqueteComprimento,raqueteAltura,xBolinha,yBolinha,raio);

  if (colidiu){
    velocidadeXbolinha *= -1;
  }
}

Resolvendo esse problema, eu vi que um novo erro surge "ReferenceError: collideRectCircle is not defined". Esse erro se refere à você não ter importado a biblioteca "p5.collide2d", conforme foi feito durante as aulas do curso.

Espero ter ajudado, bons estudos!