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

[Dúvida] Oponente nunca erra

Já tentei diversas soluções aqui do fórum, mas ainda assim, o oponente nunca erra a bolinha :(

Conseguem me dar uma ajuda?

//Variáveis bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 25;
let raio = diametro / 2;

//Variáveis velocidade
let velocidadeXBolinha = 6;
let velocidadeYBolinha = 6;

//Variáveis MinhaRaquete
let xRaquete = 5;
let yRaquete = 150;
let wRaquete = 10; //Largura
let hRaquete = 90; //Comprimento

//Variáveis RaqueteOponente
let xRaqueteOponente = 585;
let yRaqueteOponente = 150;
let velocidadeYOponente;

//Placar do jogo
let meusPontos = 0; 
let pontosDoOponente = 0; 

let colidiu = false; 

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

function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  colisaoBorda();
  mostraRaquete(xRaquete, yRaquete);
  movRaquete();
  mostraRaquete(xRaqueteOponente, yRaqueteOponente);
  movRaqueteOponente();
  verificaColisaoRaquete(xRaquete, yRaquete);
  verificaColisaoRaquete(xRaqueteOponente, yRaqueteOponente);
  criarPlacar();
  marcaPonto();
}

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 mostraRaquete(x, y) {
  rect (x, y, wRaquete, hRaquete);
}

function movRaquete() {

  if (keyIsDown(UP_ARROW)){
    yRaquete -= 10;
  }

  if (keyIsDown(DOWN_ARROW)){
    yRaquete += 10;
  }
}


function colRaquete() { //Verifica colisão
  if (xBolinha - raio < xRaquete + wRaquete && yBolinha - raio < yRaquete + hRaquete && yBolinha + raio > yRaquete){
    velocidadeXBolinha *= -1;
  }
}

function verificaColisaoRaquete(x, y){
  colidiu = collideRectCircle(x, y, wRaquete, hRaquete, xBolinha, yBolinha, raio);
  if (colidiu){
    velocidadeXBolinha *= -1;
  }
}

function movRaqueteOponente() {
  velocidadeYOponente = yBolinha - yRaqueteOponente - hRaquete /2 - 30;
    yRaqueteOponente += velocidadeYOponente;
}

function criarPlacar(){
  fill (255)
  text (meusPontos, 278, 26);
  text (pontosDoOponente, 321, 26);
}

function marcaPonto(){
  if (xBolinha + raio > 595){
    meusPontos += 1;
  }

  if (xBolinha - raio < 5) {
    pontosDoOponente += 1;
  }
}
1 resposta
solução!

Olá, tudo bem? Sou aluno aqui na Alura também e acho que posso te ajudar...

Na linha function movRaqueteOponente() { velocidadeYOponente = yBolinha - yRaqueteOponente - hRaquete /2 - 30; yRaqueteOponente += velocidadeYOponente; } Aquele "30" ali é o valor da margem de erro da raquete no oponente! Tente alterá-lo para maior. Se quiser, ponha o valor de "100" para comprovar isso que eu estou dizendo... Teste até um encontrar um valor bacana para você.

É isso, bons estudos! ~Gabriel