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

[Dúvida] Raquete Oponente não movimenta

Olá, estava acompanhando a aula e quando coloquei o código para movimentar a raquete do oponente, deu erro na linha 35. Podem me esclarecer o que eu deixei passar?

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

//velocidade da bolinha
let velocidadexBolinha = 6;
let velocidadeyBolinha = 6; 

//variáveis da raquete 
let xRaquete = 5; 
let yRaquete = 150;
let raqueteComprimento = 10;
let raqueteAltura = 90;

//variáveis do oponente
let xRaqueteOponente = 585; 
let yRaqueteOponente = 150; 
let velocidadeYOponente; 

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

function draw() {
  background(0);
  mostraBolinha ();
  movimentaBolinha ();
  colisaoBorda ();
  mostrarRaquete(xRaquete, yRaquete);
  movimentaMinhaRaquete();
  verificaColisaoRaquete();
  mostrarRaquete(xRaqueteOponente, yRaqueteOponente);
  movimentaRaqueteOponente();

}

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

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

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

function mostrarRaqueteOponente (x,y){
  rect (xRaqueteOponente, yRaqueteOponente, raqueteComprimento, raqueteAltura);

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

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

Oii Fady, tudo bem com você?

O erro aconteceu pois a função mostrarRaqueteOponente não foi devidamente fechada. Perceba que o fechamento de chaves ( } ) está apenas depois da função movimentaRaqueteOponente. Isso faz com que uma função esteja dentro da outra, por isso ela não foi reconhecida no escopo global do programa!

Para resolver, só reorganizar as chaves da seguinte forma:

function mostrarRaqueteOponente (x,y){ 
    rect (xRaqueteOponente, yRaqueteOponente, raqueteComprimento, raqueteAltura);
}

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

Espero que dê tudo certo, Fady. Estou a disposição.

Abraço!

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