Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
15
respostas

[Dúvida] collideRectCircle NÃO TÁ DEFINIDO

Eu segui passo a passo o vídeo mas o p5 insiste em dizer que não tá definido, aqui o código me da uma ajuda, faz favor.

// varíaveis da Bolinha
 let xBolinha = 300;
 let yBolinha = 200;
 let diametroBolinha = 18;

 //velocidade da Bolinha
 let velocidadeXBolinha = 6;
 let velocidadeYBolinha = 6;

 let raio = diametroBolinha / 2;

 //varíaveis da Raquete
 let xRaquete = 6;
 let yRaquete = 160;
 let larguraRaquete = 10;
 let alturaRaquete = 80;

 //velocidade da Raquete
 let velocidadeDaRaquete = 8;

 let colidiu = false;

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

 function draw() {
   background(0);
   mostraBolinha();
   movimentaBolinha();
   verificaColisaoBorda();
   mostraRaquete();
   movimentoRaquete();
   //verificarColisaoRaquete();
   colisaoMinhaRaqueteBiblioteca();
 }

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

 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, larguraRaquete, alturaRaquete);
 }

 function movimentoRaquete(){
   if(keyIsDown(UP_ARROW)){
     yRaquete -= velocidadeDaRaquete;
   }
   if(keyIsDown(DOWN_ARROW)){
     yRaquete += velocidadeDaRaquete;
   }
 }

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

 function colisaoMinhaRaqueteBiblioteca(){
   colidiu = collideRectCircle(xRaquete, yRaquete, larguraRaquete, alturaRaquete, xBolinha, yBolinha, raio);
   if(colidiu){
     velocidadeXBolinha *= -1;
   }
 }

aqui o do sketch. js

<!DOCTYPE html>
 <html lang="en">
   <head>
     <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.js"></script>
     <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/addons/p5.sound.min.js"></script>
     <link rel="stylesheet" type="text/css" href="style.css">
     <meta charset="utf-8" />

   </head>
   <body>
     <script src="sketch.js"></script>
     <script src="p5.collide2d.js"></script>
   </body>
 </html>

e aqui do Index.html minha pergunta é: Como eu resolvo?

15 respostas

Por favor, clique no botão </> para colocar o código formatado aqui no fórum.

Você incluiu a biblioteca p5.collide2d.js e incluiu o link dela no index.html?

oi Osni, posta o link do projeto.

Também estou com o mesmo erro.

//variáveis da bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 15;
let raio = diametro /2;

//variáves de movimento da bolinha
let velocidadeXBolinha = 6;
let velocidadeYBolinha = 6;

//variáveis da raquete
let xRaquete = 5;
let yRaquete = 150;
let comprimentoRaquete = 10;
let alturaRaquete = 90
let colidiu = false;

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

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

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,comprimentoRaquete,alturaRaquete)
}

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

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

function colisaoMinhaRaqueteBiblioteca(){
  colidiu =
  collideRectCircle( xRaquete, yRaquete, comprimentoRaquete, alturaRaquete, xBolinha, yBolinha, raio);
  if (colidiu){
    velocidadeXBolinha *= -1;
  }
}

No meu caso a raquete do oponente sumiu e a balinha parou de movimentar.

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

let velocidadeXBolinha = 2; let velocidadeYBolinha = 2;

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

//variaveis do oponente let xRaqueteOponente = 585; let yRaqueteOponente = 150; let velocidadeyOponente;

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

function draw() { background(0); mostraBolinha(); movimentaBolinha(); verificaColisaoBorda(); rect(xRaquete,yRaquete, raqueteComprimento, raqueteAltura); mostraRaquete(xRaquete, yRaquete); movimentaMinhaRaquete(); verificaColisaoRaquete(xRaquete, yRaquete); mostraRaquete(xRaqueteOponente, yRaqueteOponente); movimentaRaqueteOponente(); verificaColisaoRaquete(xRaqueteOponente, yRaqueteOponente); }

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 (x, y){ rect(x,y, raqueteComprimento, raqueteAltura); }

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

function verificaColisaoRaquete(x, y) { colidiu = collideRectCircle(x, y, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio); if (colidiu){ velocidadexBolinha *= -1; } }

function movimentaRaqueteOponente(){ velocidadeYOponente = yBolinha -yRaqueteOponente - raqueteComprimento /2 -30; yRaqueteOponente += velocidadeYOponente }

ReferenceError: collideRectCircle is not defined 5.js says: [sketch.js, line 75] "collideRectCircle" is not defined in the current scope. If you have defined it in your code, you should check its scope, spelling, and letter-casing (JavaScript is case-sensitive).

Conseguem postar o link dos projetos?

Provavelmente, falta incluir a biblioteca de colisão que tem a função "collideRectCircle".

Gabriel aqui os links, o incorporara:

tela cheia: https://editor.p5js.org/Vida-Morte/full/J2S-fIJW4

editar: https://editor.p5js.org/Vida-Morte/sketches/J2S-fIJW4

Romeu o link tá logo a cima. Rudson vamos ver se o pessoal consegue ajudar agente.

Marcelo Camata, acho que você comentou linhas que não era pra ter comentado, comentar é os //.

Quando você comenta uma linha o computador não a lê nem executa. exemplo:

let xRaquete = 55; o computador lê.

// let xRaquete = 55; o computador não lê.

por GABRIEL DE JESUS FILHO | 1061.9k xp | 666 posts TÉCNICO JUDICIÁRIO : ÁREA ADMINISTRATIVA 2 dias atrás Por favor, clique no botão </> para colocar o código formatado aqui no fórum.

Você incluiu a biblioteca p5.collide2d.js e incluiu o link dela no index.html?

Osni Cecco Sim, inclui a biblioteca e link dela no index. E valeu pelo </> para colocar o código formatado se eu sabia, eu esqueci.

Queria ter respondido a todos antes, mas estava meio apertado.

pessoal achei o problema, sabe o Sketch Files p5.collide2d.js, a pasta esta vazia, diferente do vídeo que tem conteúdo.

oi Osni.

olha só, parte da solução:

Voce declarou a função :

let raqueteComprimento = 10;

Depois quando a usou, escreveu errado, inverteu.

function mostraRaquete(){
  rect(xRaquete, yRaquete, ******comprimentoRaquete******, raqueteAltura);
}

Outro problema, esta na função:

function colisaoMinhaRaqueteBiblioteca()

Eu a comentei na função draw, e o jogo voltou ao normal, com a bolinha e uma raquete e movimentos. Corrija isso e olhamos mais depois da correcão.

O seu problema, foi o melhor do dia, no melhor sentido. Que trabalho pra encontrar isso. kkk boa sorte.

solução!

Pessoal consegui, de um jeito meio estranho mas consegui. Eu abri o arquivo no Visual Studio Code, salvei como: p5.collide2d que funcione coloquei ele dentro do Sketch Files pelo Upload File, e alterei o código no index. html para:

O Romeu Aparecido de Oliveira já ajeitei, valeu.

Ótimo!! Parabéns!!