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

Erro na função function movimentaRaqueteOponente()

Bom dia ! Esse código está dando erro na função "movimentaRaqueteOponente()", não estou conseguindo resolver. Alguém poderia me ajudar por favor...

//variáveis da bolinha let xBolinha = 300; let yBolinha = 200; 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;

//raquete do oponente let xraqueteOponete=585; let yraqueteOponente=150; let velocidadeYOponente;

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

function draw() { background(0); mostraBolinha(); movimentaBolinha(); verificaColisaoBorda(); mostraRaquete(xRaquete,yRaquete); movimentaMinhaRaquete(); verificaColisaoRaquete(); mostraRaquete(xraqueteOponete,yraqueteOponente); movimentaRaqueteOponente(); }

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 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; } function movimentaRaqueteOponente(){ velocidadeYOponente = yBolinha - yRaqueteOponente - raqueteComprimento / 2 - 30; yRaqueteOponente += velocidadeYOponente } }

2 respostas
solução!

Oi Rodrigo, tudo bem?

Parece que a função movimentaRaqueteOponente() está dentro da função verificaColisaoRaquete(). Isso pode ser o motivo do erro, pois em JavaScript, funções devem ser definidas no escopo global do seu código, a menos que você queira criar uma função aninhada (o que não é o caso aqui).

Tente mover a função movimentaRaqueteOponente() para fora da função verificaColisaoRaquete(). Seu código então ficaria assim:

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

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

Nesse caso, as duas funções estão no mesmo nível de escopo e podem ser chamadas independentemente uma da outra.

Espero ter ajudado.

Um abraço e bons estudos.

Muito obrigado. Era isso mesmo. Obrigado pela ajuda!