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

O Oponente não se move

eu já fiz de tudo, até reescrevi o código, mas meu oponente não se move quando dou start no programa.

//variáveis da bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 22;
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 = 580;
let yRaqueteOponente = 150;
let velocidadeYOponente;

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

function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  colisaoBolinha();
  mostraRaquete(xRaquete, yRaquete);
  movimentaMinhaRaquete();
  verificaColisaoRaquete();
  mostraRaquete(xRaqueteOponente, yRaqueteOponente);
}

function mostraBolinha(){
  circle(xBolinha, yBolinha, diametro);
}
function movimentaBolinha(){
  xBolinha += velocidadexBolinha;
  yBolinha += velocidadeyBolinha;
}
function colisaoBolinha(){
  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
}
1 resposta
solução!

Oi, Ísis! Tudo bem?

O problema está ocorrendo apenas porquê não estamos chamando a função movimentaRaqueteOponente() dentro da função draw(), por isso, a função não está sendo executada e consequentemente a raquete do oponente não está se movendo.

Para resolvermos o problema basta adicionarmos o nome da função dentro da função draw(), deixando-a da seguinte forma:

function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  colisaoBolinha();
  mostraRaquete(xRaquete, yRaquete);
  movimentaMinhaRaquete();
  verificaColisaoRaquete();
  mostraRaquete(xRaqueteOponente, yRaqueteOponente);
  movimentaRaqueteOponente();
}

Espero ter ajudado. Caso tenha dúvidas, estarei à disposição!

Um forte abraço e bons estudos!

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