2
respostas

Placar do Jogo: ou oponente sempre acerta ou sempre erra.

Ja tentei codificar o número, porem ou oponente sempre acerta ou sempre erra, já tentei também um código sugerido aqui do fórum, porém sem sucesso.

function movimentoRaqueteOponente(){
  velocidadeYOponente = yBolinha-
  yRaqueteOponente-raqueteComprimento / 2 - 90;
  yRaqueteOponente += velocidadeYOponente

}
 //variáveis da bolinha 
 let xBolinha = 300;
 let yBolinha = 200;
 let diametro = 15;


 //velocidade da bolinha 
 let velocidadeXBolinha = 6;
 let velocidadeYBolinha = 6;
 let raio = diametro / 2;

 //variáveis da raquete 

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

 let colidiu = false

 //variáveis do Oponente
 let xRaqueteOponente = 585
 let yRaqueteOponente = 150
 let velocidadeYOponente;


 //variáveis placar do jogo
 let meusPontos = 0;
 let pontosOponente = 0;

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

function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  verificaColisaoBorda();
  mostraRaquete(xRaquete,yRaquete);
  movimentaMinhaRaquete();
  //verificaColisaoRaquete();
  verificaColisaoRaquete(xRaquete,yRaquete);
  mostraRaquete(xRaqueteOponente, yRaqueteOponente);
  movimentoRaqueteOponente ();
  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 mostraRaquete( x,y) {
  rect(x, y, raqueteComprimento, raqueteAltura)
}

function mostraRaqueteOpnenete() {
  rect(xRaqueteOponente, yRaqueteOponente, 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 verificaColisaoRaquete(x,y) {
  colidiu =  collideRectCircle(x,y,raqueteComprimento,raqueteAltura,xBolinha,yBolinha,raio);
  if (colidiu) { velocidadeXBolinha *= -1; }

}
function movimentoRaqueteOponente(){
  velocidadeYOponente = yBolinha-yRaqueteOponente-raqueteComprimento / 2 - 90;
  yRaqueteOponente += velocidadeYOponente

}

function incluiPlacar() {
  fill (255)
  text (meusPontos, 278, 26);
  text (pontosOponente, 321, 26);
}

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

if ( xBolinha <10){ pontosOponente += 1}
}
2 respostas

Olá, Samanta! Da uma olhada nesse link: https://cursos.alura.com.br/course/pong-javascript/task/63122

Espero que resolva seu problema ;)

olá Samanta, o que acontece é que esta faltando o calculo de chance de erro da raquete oponente.

código corrigido:

function movimentoRaqueteOponente(){
  velocidadeYOponente = 0.7 * yBolinha-yRaqueteOponente-raqueteComprimento / 2 -30;
  yRaqueteOponente += velocidadeYOponente

}

o " 0.7 " no começo do código é o calculo de chance errar da raquete oponente, quanto maior o numero menos o oponente erra.