Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro de referencia, mas a referencia está "correta".

Na hora de fazer o movimento do oponente, ao digitar a função e atribuir ela no "Draw", o sistema informa um erro de referencia, dizendo que ela não foi definida...

ReferenceError: movimentaRaqueteOponente is not defined
    at /sketch.js:31:3

Porem já verifiquei e me parece estar tudo normal.

//Variaveis Bola
let xBolinha = 300;
let yBolinha = 200;
let diametro = 20;
let raio = diametro / 2;
//Velocidade Bola
let velocidadeXBolinha = 5;
let velocidadeYBolinha = 5;
//Variaveis Raquete
let xRaquete1 = 10;
let yRaquete1 = 150;
let xRaquete2 = 580;
let yRaquete2 = 150;
let cRaquetes = 10;
let aRaquetes = 100
//Variaveis Oponente
let velocidadeYOponente;

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

function draw() {
  background(0);
  mostraBolinha();
  movimentoBolinha();
  colisaoBorda();
  mostraRaquetes();
  movimentoRaquete1();
  colisaoRaquete();
  movimentaRaqueteOponente();
}

function mostraRaquetes(){
  rect(xRaquete1, yRaquete1, cRaquetes, aRaquetes);
  rect(xRaquete2, yRaquete2, cRaquetes, aRaquetes);
}

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

function movimentoBolinha(){
  xBolinha += velocidadeXBolinha;
  yBolinha += velocidadeYBolinha;
}

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

function movimentoRaquete1(){
  if (keyIsDown(UP_ARROW)){
    yRaquete1 -= 10;
  }
  if (keyIsDown(DOWN_ARROW)){
    yRaquete1 += 10;
  }
}

function colisaoRaquete(){
  if (xBolinha - raio < xRaquete1 + cRaquetes && yBolinha - raio < yRaquete1 + aRaquetes && yBolinha + raio > yRaquete1){
    velocidadeXBolinha *= -1;
  } 

function movimentaRaqueteOponente(){
  velocidadeYOponente = yBolinha - yRaquete2 - cRaquete / 2 - 30;
  yRaquete2 += velocidadeYOponente;
}

}

Agradeço desde já ajuda.

1 resposta
solução!

Oi, Romário! Tudo bem?

Dei uma olhadinha no seu código e para resolver o problema bastam algumas pequenas alterações:

Inicialmente, devemos excluir a chave "}" presente na linha 76, como podemos ver na imagem abaixo, pois ela não está associada ao fechamento de nenhuma outra chave.

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

Após isso, devemos adicionar uma chave "}" para fechar a função colisaoRaquete, que se encontra aberta. Segue a imagem abaixo para auxiliar a visualização da resolução do problema:

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

Por fim, podemos notar que na função movimentaRaqueteOponente a variável cRaquete não está declarada, pois ao declará-la no inicio do código ela apresenta a letra "s" no final: cRaquetes, como podemos visualizar nas imagens abaixo:

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

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

Para resolver o problema, então, basta mudarmos o cRaquete para cRaquetes na função movimentaRaqueteOponente.

Espero ter ajudado, qualquer dúvida é só comunicar! Um forte abraço e bons estudos!

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