1
resposta

Projeto finalizado

https://editor.p5js.org/luscazera/full/xnlS1ZE_tR

Terminei o projeto, algumas coisas que estavam dando errado eu corrigi com a ajuda da galera aqui Muito obirgado! Esta com as cores diferentes haha

O unico bug que não consegui resolver foi o fato do oponente só errar quando eu erro!

vou deixar aqui pra quem quiser ver

//VARIAVEIS DA BOLINHA
var xBolinha = 300;
var yBolinha = 225;
var diametro = 22;
var raio = diametro / 2;

//VELOCIDADE BOLINHA
var speedXBoll = 8;
var speedYBoll = 8;

//VARIAVEIS RAQUETE
var xRaquete = 5;
var yRaquete = 180;
var larguraRaquete = 14;
var alturaRaquete = 90;

//RAQUETE DO OPONENTE
var xRaqueteOp = 575;
var yRaqueteOp = 180;
var speedYOp;
var chanceDeErrar = 0;

//PLACAR
var meusPontos = 0;
var opPontos = 0;

//SONS
var raquetada;
var ponto;
var trilha;

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

function draw() {
  background(0, 0, 246);
  mostraBolinha();
  movimentoBoll();
  colisaoBall();
  raqueteL(xRaquete, yRaquete);
  raqueteMove();
  colisaoRaquete();
  raqueteL(xRaqueteOp, yRaqueteOp);
  raqueteOpAuto();
  colisaoRaqueteOp();
  bolinhaNaoFicaPresa();
  placar();
  marcaPonto();
  calculaChanceDeErrar();
}

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

function movimentoBoll() {
  xBolinha += speedXBoll;
  yBolinha += speedYBoll;
}

function colisaoBall() {
  if (xBolinha + raio > width || xBolinha - raio < 0) {
    speedXBoll *= -1;
    ponto.play();
  }

  if (yBolinha + raio > height || yBolinha - raio < 0) {
    speedYBoll *= -1;
  }
}

function raqueteL(x, y) {
  rect(x, y, larguraRaquete, alturaRaquete);
}

function raqueteOpAuto() {
  speedYOp = yBolinha - yRaqueteOp - larguraRaquete / 2 - 30;
  yRaqueteOp += speedYOp + chanceDeErrar;
  calculaChanceDeErrar();
}

function calculaChanceDeErrar() {
  if (opPontos >= meusPontos) {
    chanceDeErrar += 1;
    if (chanceDeErrar >= 39) {
      chanceDeErrar = 100;
    }
  } else {
    chanceDeErrar -= 1;
    if (chanceDeErrar <= 39) {
      chanceDeErrar = 10;
    }
  }
}

function raqueteMove() {
  if (keyIsDown(UP_ARROW)) {
    yRaquete -= 8;
  }
  if (keyIsDown(DOWN_ARROW)) {
    yRaquete += 8;
  }
}

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

function colisaoRaqueteOp() {
  if (
    xBolinha + raio > xRaqueteOp &&
    (yBolinha - raio < yRaqueteOp + alturaRaquete) &
      (yBolinha + raio > yRaqueteOp)
  ) {
    speedXBoll *= -1;
    raquetada.play();
  }
}

function bolinhaNaoFicaPresa() {
  if (xBolinha + raio < 0) {
    console.log("bolinha reiniciada");
    xBolinha = 300;
  }
}

function placar() {
  stroke(255);
  textAlign(CENTER);
  textSize(20);
  fill(0);
  rect(125, 15, 50, 30);
  fill(255);
  text(meusPontos, 150, 38);
  fill(0);
  rect(425, 15, 50, 30);
  fill(255);
  text(opPontos, 450, 38);
}

function marcaPonto() {
  if (xBolinha > 595) {
    meusPontos += 1;
  }
  if (xBolinha < 10) {
    opPontos += 1;
  }
}

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

Olá, Lucas! Espero que esteja tudo bem com você!

Seu projeto está muito bom, parabéns!

A escrita em inglês é um ótimo exercício e também se consolida como uma boa prática no meio do desenvolvimento. Além disso suas customizações ficaram bem interessantes e funcionais, continue inserindo novas implementações!

Parabéns novamente!

Conte conosco em caso de dúvidas ou para compartilhar seu progresso!

Um abraço e bons estudos!!