1
resposta

o oponente não erra

let xBolinha = 300;
let yBolinha = 200;
let diametro = 17;
let raio = diametro/2;

let velocidadeXBolinha = 6;
let velocidadeYBolinha = 6;

let xRaquete = 5;
let yRaquete = 150;
let raqueteComprimento = 10;
let raqueteAltura = 90;

let xRaqueteOponente = 585;
let yRaqueteOponente = 150;
let velocidadeYOponente;

let colidiu = false;

let meusPontos = 0;
let pontosOponente = 0;

let raquetada;
let ponto;
let trilha;

let chanceDeErrar = 0;

function preload(){
  trilha = loadSound("trilha.mp3");
  ponto = loadSound("ponto.mp3");
  raquetada = loadSound("raquetada.mp3");
}


function setup() {
  createCanvas(600, 400);
  trilha.loop();
}

function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  verificaColisaoBorda();
  mostrarRaquete(xRaquete, yRaquete);
  movimentaMinhaRaquete();
  verificaColisaoRaquete(xRaquete, yRaquete)
  mostrarRaquete(xRaqueteOponente, yRaqueteOponente);
  movimentaRaqueteOponente();
  verificaColisaoRaquete(xRaqueteOponente, yRaqueteOponente);
  incluiPlacar();
  marcaPonto();
}

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

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

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

function verificaColisaoRaquete(x, y) {
    colidiu = collideRectCircle(x, y, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, diametro);
    if (colidiu) {
        velocidadeXBolinha *= -1;
        raquetada.play();
    }
}

function incluiPlacar(){
  stroke(255)
  textAlign(CENTER);
  textSize(16);
  fill(color(255, 140, 0));
  rect(150, 10, 40, 20);
  fill(255);
  text(meusPontos, 170, 26);
  fill(color(255, 140, 0));
  rect(450, 10, 40, 20);
  fill(255);
  text(pontosOponente, 470, 26);
}

function marcaPonto(){
  if(xBolinha > 590){
    meusPontos += 1;
    ponto.play()
  }
  if (xBolinha < 10){
    pontosOponente += 1;
    ponto.play()
  }
}

function calculaChanceDeErrar() {
  if (pontosOponente >= meusPontos) {
    chanceDeErrar += 1
    if (chanceDeErrar >= 39){
    chanceDeErrar = 40
    }
  } else {
    chanceDeErrar -= 1
    if (chanceDeErrar <= 35){
    chanceDeErrar = 35
    }
  }
}
1 resposta

estou tendo o mesmo problema

//variáveis da Bolinha
let xBolinha = 300;
let yBolinha = 200;
let dBolinha = 9;
let rBolinha = dBolinha / 2;

//velocidade da Bolinha
let velocidadeXBolinha = 5;
let velocidadeYBolinha = 5;

//variaveis da raquete
let xRaquete = 5;
let yRaquete = 150;
let cRaquete = 10;
let aRaquete = 90;

//variaveis oponente
let xRaqueteOponente = 585;
let yRaqueteOponente = 150;
let velocidadeYOponente;
let chanceDeErrar = 0


let colidiu = false;

//variaveis Placar
let meusPontos = 0;
let pontosOponente = 0;

//Sons do Jogo
let raquetada;
let ponto;
let trilha;

function preload(){
  trilha = loadSound("trilha.mp3");
  ponto = loadSound("ponto.mp3")
  raquetada = loadSound("raquetada.mp3")
}


function setup() {
  createCanvas(600, 400);
  trilha.loop()
}

function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  verificaColisaoborda();
  mostraRaquete(xRaquete, yRaquete);
  verificaColisãoRaquete(xRaquete, yRaquete)
  mostraRaquete(xRaqueteOponente, yRaqueteOponente)
  movimentaRaquete();
  movimentaRaqueteOponente()
  //verificaColisãoComRaquete();
  verificaColisãoRaquete(xRaqueteOponente, yRaqueteOponente)
  incluiPlacar();
  marcaPonto();

}

//Funções da Bolinha
function mostraBolinha(){
  circle(xBolinha, yBolinha, dBolinha);}


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

function verificaColisaoborda(){
    if (xBolinha + rBolinha > width || xBolinha - rBolinha < 0) 
{
    velocidadeXBolinha *= -1;}

if (yBolinha + rBolinha > height || yBolinha - rBolinha < 0)
 {  
      velocidadeYBolinha *= -1;}
}

//Funções da Raquete

function mostraRaquete(x,y){
  rect(x, y, cRaquete, aRaquete)
}

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

function movimentaRaqueteOponente(){
  velocidadeYOponente = yBolinha - yRaqueteOponente - cRaquete/ 2 - 70;
  yRaqueteOponente += velocidadeYOponente + chanceDeErrar
  calculaChanceDeErrar()
}


function verificaColisãoComRaquete(){
  if (xBolinha - rBolinha < xRaquete + cRaquete 
      & yBolinha - rBolinha < yRaquete + aRaquete 
      & yBolinha - rBolinha > yRaquete);
      {velocidadeXBolinha *= -1;
       raquetada.play()
  }
}

function verificaColisãoRaquete(x,y){
  colidiu =
  collideRectCircle(x, y, cRaquete, aRaquete, xBolinha, yBolinha, rBolinha);
  if (colidiu){
    velocidadeXBolinha *= -1;
               raquetada.play()
  }
}
function incluiPlacar(){
  stroke(255)
  textAlign(CENTER)
  textSize(20)
  fill(color(255,140,0))
  rect(150,10, 40, 20)
  fill(255)
  text(meusPontos, 170, 26)
  fill(color(255,140,0))
  rect(450, 10, 40, 20)
  fill(255)
  text(pontosOponente, 470, 26)
}

function marcaPonto(){
  if(xBolinha > 595){
    meusPontos +=  1
  ponto.play()
  }
if(xBolinha < 5){
  pontosOponente += 1
ponto.play()   
}
}

function calculaChanceDeErrar() {
  if (pontosOponente >= meusPontos) {
    chanceDeErrar += 1
    if (chanceDeErrar >= 39){
    chanceDeErrar = 40
    }
  } else {
    chanceDeErrar -= 1
    if (chanceDeErrar <= 35){
    chanceDeErrar = 35
    }
  }
}