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

[Projeto] Projeto Pong no p5.js COMPLETO

//essas são as váriaveis da bolinha
let xBolinha = 400;
let yBolinha = 300;
let dBolinha = 20;
let raio = dBolinha / 2;

// essas são as varias da movimentação da bolinha
let velocidadeXBolinha = 9;
let velocidadeYBolinha = 9;

// variaveis da raquete
let xRaquete = 3;
let yRaquete = 200;
let cRaquete = 20;
let aRaquete = 155;

let colidiu = false;

//variaveis da raquete do oponente
let xROponente = 780;
let yROponente = 200;
let velocidadeYOponente;

//placar do jogo
let meusPontos = 0;
let pontosOponentes = 0;

// sons
let raquetada;
let ponto;
let trilha;

//chance para erro do adversario
let chanceDeErrar = 0;



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

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

function draw() {
  background(10);
  mostraBolinha();
  movimentaBolinha();
  verificaColisaoborda();
  mostraRaquete(xRaquete,yRaquete);
  mostraRaquete(xROponente,yROponente);
  movRaquete1();
  movRaquete2();
  colisaoRaqueteBiblio(xRaquete,yRaquete);
  colisaoRaqueteBiblio(xROponente,yROponente);
  incluiPlacar();
  marcaPonto();


}

function mostraRaquete(x,y ){ 
  //desenhando um retangulo na localização 3,200(esquerda) com a largura 20 e o tamanho 155.
rect(x,y, cRaquete, aRaquete);

}


function mostraBolinha(){

  circle(xBolinha, yBolinha, dBolinha);
  //X,Y,D ou seja posição x posição y e diametro da bolinha.
}

function movimentaBolinha(){
  xBolinha += velocidadeXBolinha;
  yBolinha += velocidadeYBolinha;
  // aqui eu estou movimentando a bolinha

}

function verificaColisaoborda(){

if (xBolinha + raio > width || xBolinha - raio< 0 ){

velocidadeXBolinha *= -1;
describe(' se a bolinha tocar no máximo da tela horizontalmente ela vai voltar')
//para a bolinha não perder a metade quando bater na tela, eu usei o raio da bolinha para adicionar quando for cima e diminui quando for para baixo pois o p5js foca no centro da bolinha e não ela por inteira.


}
if (yBolinha + raio > height || yBolinha - raio < 0 ){

velocidadeYBolinha *= -1;
describe(' se a bolinha tocar no máximo da tela verticalmente ela vai voltar')

}
}

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

}
// este código calcula uma chance do oponente errar dependendo dos pontos dele e dos seus.
function calculaChanceDeErrar() {
  if (pontosOponentes >= meusPontos) {
    chanceDeErrar += 1
    if (chanceDeErrar >= 39){
    chanceDeErrar = 40
    }
  } else {
    chanceDeErrar -= 1
    if (chanceDeErrar <= 35){
    chanceDeErrar = 35
    }
  }
}

function movRaquete2(){
  //se você desejar jogar com amigo coloque o /* no começo e no final

// coloque o /* aqui para jogar com amigo
  velocidadeYOponente = yBolinha - yROponente - cRaquete / 2 - 30;
  yROponente += velocidadeYOponente + chanceDeErrar; 
  calculaChanceDeErrar()
// coloque o */


 /* apague esta linha para jogar com amigo
 if (keyIsDown(87)){
    yROponente -= 10;
  }
  if (keyIsDown(83)){
    yROponente += 10;
  }
apague esta linha para jogar com amigo*/
}


function colisaoRaqueteBiblio(x,y){

  colidiu = 
  collideRectCircle(x, y, cRaquete, aRaquete, xBolinha, yBolinha, raio);
   if (colidiu){
      velocidadeXBolinha *= -1;
raquetada.play();
}
}

function incluiPlacar(){
  stroke(255)
  textAlign(CENTER);
  textSize(15);
  fill(color(255,140,0));
  rect(180, 11, 40 ,20);
  fill(255);
  text(meusPontos, 200 , 26);
  fill(color(255,140,0));
  rect(580, 11, 40 ,20);
  fill(255);
  text(pontosOponentes, 600 ,26);

}

function marcaPonto(){

  if (xBolinha > 790){
  meusPontos += 1;
    ponto.play();

}
    if(xBolinha < 10){
      pontosOponentes += 1;
      ponto.play();
    }
}

//para a bolinha não ficar presa a raquete

function bolinhaNaoFicaPresa(){
    if (xBolinha - raio < 0){
    xBolinha = 23
    }
}

1 resposta
solução!

Olá, Renan, tudo bem?

Fico feliz que esteja praticando os exercícios do curso, isso ajuda a consolidar os conhecimentos na programação!

Testei o seu código e notei que mesmo colocando a função chance de errar, o oponente ainda assim nunca erra. Para solucionar esse problema, podemos aumentar a chanceDeErrar na condição em calculaChanceDeErrar(). Alterei de 39, para 46 e a atribuição seguinte, de 40, para 47.

function calculaChanceDeErrar() {
  if (pontosOponentes >= meusPontos) {
    chanceDeErrar += 1
    if (chanceDeErrar >= 46){
    chanceDeErrar = 47
    }
  } else {
    chanceDeErrar -= 1
    if (chanceDeErrar <= 35){
    chanceDeErrar = 35
    }
  }
}

Espero ter ajudado.

Abraços.

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