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

[Bug] erro em colisão minha raquete biblioteca

Olá, está dando erro apos baixar o arquivo do GitHub, fiz todo o passo a passo como na aula e quando vou executar aparece o seguinte erro: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

5 respostas

Oi Cristina, tudo bem?

Esse erro geralmente acontece quando há algum erro de digitação no nome da função. Confira se a sua função está com todas as letras idênticas à colisaoMinhaRaqueteBiblioteca, e também se os parênteses e chaves estão corretos.

Caso não consiga encontrar nenhuma irregularidade, peço que compartilhe seu código comigo para que eu possa te ajudar a investigar.

Para realizar o compartilhamento, podemos seguir os passos abaixo:

  • Localizar a barra superior com os itens “File”, “Edit”, “Sketch”, e “Help” (em Português, as opções seriam: “Arquivo”, “Editar”, “Esboço” e “Ajuda”, respectivamente);
  • Clicar em “File”;
  • Selecionar a opção “Share” ou “Compartilhar”;
  • Copiar o link da terceira opção da lista (de cima para baixo);
  • Colá-lo em seu tópico do fórum.

Outra maneira de fazer isso é selecionando, copiando e colando a url do seu Sketch!

Aguardo seu retorno, Cris!

Forte abraço.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

verifiquei e não consegui achar o erro, segue o link: https://editor.p5js.org/crisiniboir/sketches/0HYe9HmRM

Oii Cris, como você está?

Obrigada por compartilhar o link!

Observe esse trecho do seu código:

function verificaColisaoRaquete(){
  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;
    }
}
} 

A função verificaColisaoRaquete tem uma condição if em seu escopo. Ambas são objetos de JavaScript que usam chaves ( { } ) para definir os comandos que serão executados. Ao finalizar o if (e, teoricamente, a função), há apenas um fechamento de chaves, na linha 72.

Sendo assim, ainda estamos dentro do escopo da função verificaColisaoRaquete: tudo que foi declarado aqui, existe apenas dentro da função, inclusive a colisaoMinhaRaqueteBiblioteca. A chave de fechamento está na linha 80, após todo o código. Por isso o erro diz que colisaoMinhaRaqueteBiblioteca não foi definida!

Para resolver, é só mudar esse fechamento de chave de lugar, assim:

function verificaColisaoRaquete(){
  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;
    }
}

Agora seu jogo deve funcionar como esperado.

Forte abraço, Cris! Estou a disposição.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

olá, obrigada por sua resposta, deu certo, porem agora quando a bolinha toca na raquete trava e aparece a seguinte mensagem:** 'xBolinha' já foi declarado** e mais abeixo diz: velocidadexBolinha não está definido vou compartilhar o link novamente para que possa ver: https://editor.p5js.org/crisiniboir/sketches/0HYe9HmRM

solução!

Oi Cris! Como você está?

Obrigada por compartilhar o link.

  • A variável velocidadeXBolinha está com um errinho de sintaxe. Perceba que na linha 8 “ let velocidadeXBolinha = 6; ” o “x” está maiúsculo, enquanto na linha 78 está minúsculo. O JavaScript é sensível a essas alterações, e é importante que a escrita seja idêntica.
  • O primeiro erro: “xBolinha já foi definido” é um bug que acontece às vezes na plataforma P5.JS. Ele não impede o funcionamento do programa. Para resolver, sugiro que você copie e cole seu código em um novo projeto. Não se esqueça de fazer novamente o upload da biblioteca p5.collide2d!

Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!