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

O oponente não erra

Acredito que fiz tudo certo, porém mesmo deixando o oponente marcar várias vezes não consigo marcar um ponto se quer!

//variáveis da bolinha
  let xBolinha = 300;
  let yBolinha = 200;  
  let diametro = 15;
  let raio = diametro / 2;
//variáveis da velocidade da bolinha
  let velocidadeXBolinha = 6;
  let velocidadeYBolinha = 6;
//variáveis da raquete
  let xRaquete = 5;
  let yRaquete = 150;
  let larguraRaquete = 7;
  let comprimentoRaquete = 90;
//variáveis raquete do oponente
  let xRaqueteOponente = 590;
  let yRaqueteOponente = 150;
  let velocidadeYOponente;
  let chanceDeErrar = 0;
  let colidiu = false

//placar do jogo
  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);
  mostrarBolinha();
  movimentarBolinha();
  verificarColisaoBorda();
  mostrarRaquete(xRaquete,yRaquete);
  mostrarRaquete(xRaqueteOponente,yRaqueteOponente);
  movimentarMinhaRaquete();
  movimentarRaqueteOponente();
  //verificarColisaoRaquete();
  verificarColisaoRaquete(xRaquete,yRaquete);
  verificarColisaoRaquete(xRaqueteOponente,yRaqueteOponente);
  incluirPlacar();
  marcarPonto();
}

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

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

function verificarColisaoBorda() {
  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,larguraRaquete,comprimentoRaquete)
}

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

function verificarColisaoRaquete(){
  if (xBolinha - raio < xRaquete + larguraRaquete
     && yBolinha - raio < yRaquete + comprimentoRaquete
     && yBolinha + raio > yRaquete){
    velocidadeXBolinha *= -1;
    raquetada.play();
 }
}

function   verificarColisaoRaquete(x,y){
  colidiu = 
  collideRectCircle(x,y,larguraRaquete,comprimentoRaquete,xBolinha,yBolinha,raio); 
  if (colidiu){
  velocidadeXBolinha *= -1;
    raquetada.play();
   }
}

function movimentarRaqueteOponente(){
  velocidadeYOponente = yBolinha - yRaqueteOponente - comprimentoRaquete / 2 -30;
  yRaqueteOponente += velocidadeYOponente + chanceDeErrar
} 

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

function incluirPlacar(){
  stroke(255)
  textAlign(CENTER)
  textSize(16) 
  fill(color(255,140,0))
  rect(180,10,40,20)
  fill(255)
  text(meusPontos,200,26)
  fill(color(255,140,0))
  rect(380,10,40,20)
  fill(255)
  text(pontosOponente,400,26)
}

function marcarPonto(){
  if (xBolinha > 590){
    meusPontos += 1;
  ponto.play();
 }
  if (xBolinha < 10){
  pontosOponente +=1
  ponto.play();
 }  
}
1 resposta
solução!

Fala ai Weynne, tudo bem? A maneira como foi feito os códigos deixou o oponente muito inteligente.

Precisaria adicionar algum fator para que o mesmo erre, talvez uma velocidade de movimento que pode variar, as vezes rápido, as vezes devagar.

Essa variável de velocidade pode ser calculada e adicionada durante a soma da posição da raquete do oponente.

Espero ter ajudado.