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

VerificaColisaoRaquete dando erro

Procurei para ver se tinha algo parecido e não encontrei , então lá vai ... Quando se coloca a função verificaColisaoRaquete acaba dando erro ...is not defined..., mesmo colocando igual ao que o instrutor passa. Estou tentando entender porque dá esse erro.... Alguém pode me explicar onde está o erro ... ?

( p5.js says: [sketch.js, line 30] "verificaColisaoRaquete" 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).

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

//velocidade da bolinha
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 );
}


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;
    }
3 respostas
solução!

Oi, Alessandre! Tudo bem?

Com base no código enviado podemos notar que as funções movimentaMinhaRaquete() e verificaColisaoRaquete() foram abertas, entretanto, não foram fechadas. Para resolver esse problema basta adicionarmos um chave "}" ao final de cada uma das funções.

Somado a isso, podemos observar também que as variáveis declaradas no inicio do código com a grafia RaqueteComprimento e RaqueteAltura, estão escritas dentro da função verificaColisaoRaquete() com uma grafia diferente: raqueteComprimento e raqueteAltura. Devemos, então, substituir as variáveis dentro da função para a forma como foram declaradas.

Dessa forma, após as alterações citadas acima, as funções movimentaMinhaRaquete() e verificaColisaoRaquete() devem ficar da seguinte maneira:

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;
    }
  }

Espero ter ajudado!

Um forte abraço e bons estudos!

Caso este post tenha te ajudado, por favor, marcar como solucionado ✓

Olá Alessandra, tudo bem?

O problema parece estar ocorrendo porque a função verificaColisaoRaquete() foi definida dentro da função movimentaMinhaRaquete(). Ou seja, ela está dentro do escopo da função movimentaMinhaRaquete() e não pode ser acessada de fora dela. Para corrigir esse problema, basta mover a função verificaColisaoRaquete() para fora da função movimentaMinhaRaquete().

Sarah e Otávio...Agradeço pela ajuda... Sempre tenho por hábito reiniciar o exercício para descobrir ( ou tentar ) achar o erro... Como estava tentando resolver no segundo dia acabei não percebendo esses detalhes... Obrigado