Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Sugestão] Possibilitando o erro da raquete do oponente " não esta funcionando"

Estou com dificuldades para dar possibilidade de fazer pontos contra o oponente, usei o código oferecido pelo professor porém sem resultado, fiz alterações e só tive alguma diferença colocando o valor da variável direto na função y do oponente, mas não é o desejado.

// variavel da Bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 20;
let raio = diametro / 2;

// variavel da raquete
let xRaquete = 5;
let yRaquete = 150;
let comprimentoRaquete = 10;
let alturaRaquete = 90;

// variavel da raquete oponente
let xRaqueteOponente = 585
let yRaqueteOponente = 150
let velocidadeYOponente;
let chanceDeErrar = 0;

// Velocidade da Bolinha
let velocidadexbolinha = 6;
let velocidadeybolinha = 6;

// variavel colisão usando biblioteca p5.collide2d.js
let colidiu = false

// variavel do placar
let meusPontos = 0;
let pontosDoOponente = 0;


// Sons do jogo
  let ponto
  let trilha
  let raquetada

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

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

function draw() {
  background(0);
  mostraBolinha ();
  velocidadeBolinha ();
  colisaoBolinha ();
  mostraRaquete(xRaquete, yRaquete);
  mostraRaquete(xRaqueteOponente, yRaqueteOponente);
  movimentaRaquete();
  movimentaRaqueteOponente();
 // verificacolisaoRaquete();
  verificaColisaoRaquete(xRaquete, yRaquete);
  verificaColisaoRaquete(xRaqueteOponente, yRaqueteOponente);
  incluiPlacar();
  marcaPontos ();
  calculaChanceDeErrar();
}
function mostraBolinha(){
  circle (xBolinha,yBolinha,diametro);
}

function velocidadeBolinha (){
  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, comprimentoRaquete, alturaRaquete);

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

if (keyIsDown(DOWN_ARROW)) 
    yRaquete += 10;
}
function verificacolisaoRaquete(){
  if (xBolinha - raio < xRaquete + comprimentoRaquete
      &&
     yBolinha - raio < yRaquete + alturaRaquete
      &&
     yBolinha + raio > yRaquete){
    velocidadexbolinha *=-1;
    raquetada.play();
  }
  }
function verificaColisaoRaquete ( x ,y){
 colidiu=
  collideRectCircle(x, y, comprimentoRaquete, alturaRaquete, xBolinha, yBolinha, raio);
  if (colidiu){
      velocidadexbolinha *=-1;
    raquetada.play();

      }
}
function movimentaRaqueteOponente (){
 velocidadeYOponente = yBolinha - yRaqueteOponente -  - comprimentoRaquete / 2 - 50 
  yRaqueteOponente += velocidadeYOponente + chanceDeErrar

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

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

function calculaChanceDeErrar() {
  if (pontosDoOponente >= meusPontos) {
    chanceDeErrar += 1
    if (chanceDeErrar >= 39){
    chanceDeErrar = 40
    }
  } else {
    chanceDeErrar -= 1
    if (chanceDeErrar <= 35){
    chanceDeErrar = 35
    }
  }
}
2 respostas
solução!

Olá, Diego! Tudo certo?

Para dar essa possibilidade, você pode alterar os valores na sua função calculaChanceDeErrar(), por exemplo:

function calculaChanceDeErrar() {
  if (pontosDoOponente >= meusPontos) {
    chanceDeErrar += 1
    if (chanceDeErrar >= 80){
    chanceDeErrar = 50
    }
  } else {
    chanceDeErrar -= 1
    if (chanceDeErrar <= 80){
    chanceDeErrar = 35
    }
  }
}

Seu código final com essa alteração ficará assim:

// variavel da Bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 20;
let raio = diametro / 2;

// variavel da raquete
let xRaquete = 5;
let yRaquete = 150;
let comprimentoRaquete = 10;
let alturaRaquete = 90;

// variavel da raquete oponente
let xRaqueteOponente = 585
let yRaqueteOponente = 150
let velocidadeYOponente;
let chanceDeErrar = 0;

// Velocidade da Bolinha
let velocidadexbolinha = 6;
let velocidadeybolinha = 6;

// variavel colisão usando biblioteca p5.collide2d.js
let colidiu = false

// variavel do placar
let meusPontos = 0;
let pontosDoOponente = 0;


// Sons do jogo
  let ponto
  let trilha
  let raquetada

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

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

function draw() {
  background(0);
  mostraBolinha ();
  velocidadeBolinha ();
  colisaoBolinha ();
  mostraRaquete(xRaquete, yRaquete);
  mostraRaquete(xRaqueteOponente, yRaqueteOponente);
  movimentaRaquete();
  movimentaRaqueteOponente();
 // verificacolisaoRaquete();
  verificaColisaoRaquete(xRaquete, yRaquete);
  verificaColisaoRaquete(xRaqueteOponente, yRaqueteOponente);
  incluiPlacar();
  marcaPontos ();
  calculaChanceDeErrar();
}
function mostraBolinha(){
  circle (xBolinha,yBolinha,diametro);
}

function velocidadeBolinha (){
  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, comprimentoRaquete, alturaRaquete);

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

if (keyIsDown(DOWN_ARROW)) 
    yRaquete += 10;
}
function verificacolisaoRaquete(){
  if (xBolinha - raio < xRaquete + comprimentoRaquete
      &&
     yBolinha - raio < yRaquete + alturaRaquete
      &&
     yBolinha + raio > yRaquete){
    velocidadexbolinha *=-1;
    raquetada.play();
  }
  }
function verificaColisaoRaquete ( x ,y){
 colidiu=
  collideRectCircle(x, y, comprimentoRaquete, alturaRaquete, xBolinha, yBolinha, raio);
  if (colidiu){
      velocidadexbolinha *=-1;
    raquetada.play();

      }
}
function movimentaRaqueteOponente (){
 velocidadeYOponente = yBolinha - yRaqueteOponente - comprimentoRaquete / 2 - 50 
  yRaqueteOponente += velocidadeYOponente + chanceDeErrar

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

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

function calculaChanceDeErrar() {
  if (pontosDoOponente >= meusPontos) {
    chanceDeErrar += 1
    if (chanceDeErrar >= 80){
    chanceDeErrar = 50
    }
  } else {
    chanceDeErrar -= 1
    if (chanceDeErrar <= 80){
    chanceDeErrar = 35
    }
  }
}

Caso tenha ficado com alguma dúvida, não deixe de compartilhar!

Continue praticando e evoluindo na sua jornada.

Bons estudos e até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

aplicando somente as alterações não funcionou, porem aplicando o codigo inteiro deu certo, vou analisaar as diferenças, muito obrigado