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

[Dúvida] movimentaRaqueteOponente aparece como se não tivesse sido atribuida

Já li e reli o código e pesquisei no fórum em busca da solução e não consigo entender por que o console aponta esse erro:

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

Aqui está meu código

//Variáveis Bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 25;
let raio = diametro / 2;
let velocidadeXBolinha = 6;
let velocidadeYBolinha = 6;

//Variáveis da Minha Raquete
let xRaquete = 5;
let yRaquete = 150;
let raqueteComprimento = 10;
let raqueteAltura = 90;

//Variáveis da Raquete do Oponente
let xRaqueteOponente = 585;
let yRaqueteOponente = 150;
let velocidadeYOponente;

//Proporções da tela
function setup() {
  createCanvas(600, 400);
}
//Function draw()
function draw() {
  background(0)
  mostraBolinha();
  movimentaBolinha();
  verificaColisaoBorda();
  mostraRaquete(xRaquete,yRaquete);
  moveRaquete();
  verificaColisãoRaquete();
  mostraRaquete(xRaqueteOponente,yRaqueteOponente);
  movimentaRaqueteOponente();
}

//Funções
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 moveRaquete(){
  if (keyIsDown(UP_ARROW)){
    yRaquete -= 8
  }
    if (keyIsDown(DOWN_ARROW)){
    yRaquete += 8
  }
}

function verificaColisãoRaquete(){
  if (xBolinha - raio < xRaquete + raqueteComprimento
     && yBolinha - raio < yRaquete + raqueteAltura && yBolinha + raio > yRaquete){
    velocidadeXBolinha *= -1;
  }

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

//Fecha código
}
3 respostas

Achei a solução mas gostaria de entender o porque que isso aconteceu: Simplesmente recortei e colei a função movimentaRaqueteOponente para debaixo da função mostraRaquete e funcionou

function mostraRaquete(x,y){
    rect(x,y,raqueteComprimento,raqueteAltura)
}

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

function moveRaquete(){
  if (keyIsDown(UP_ARROW)){
    yRaquete -= 8
  }
    if (keyIsDown(DOWN_ARROW)){
    yRaquete += 8
  }
}

function verificaColisaoRaquete(){
  if (xBolinha - raio < xRaquete + raqueteComprimento
     && yBolinha - raio < yRaquete + raqueteAltura && yBolinha + raio > yRaquete){
    velocidadeXBolinha *= -1;
  }
solução!

Bruno, tudo bem?

O problema estava que no seu código, a função verificaColisãoRaquete() não estava fechada.

function verificaColisãoRaquete(){
  if (xBolinha - raio < xRaquete + raqueteComprimento
     && yBolinha - raio < yRaquete + raqueteAltura && yBolinha + raio > yRaquete){
    velocidadeXBolinha *= -1;
  }

Como pode observar faltou um}

E remover a chave depois de: //Fecha código }

Muito obrigado amigo! Prestarei mais atenção a esses detalhes