1
resposta

Resultado final.

O final do meu projeto, infelizmente não consegui corrigir o bug de ficar preso na raquete, vez ou outra ele ainda acaba ficando preso, depois de um tempo. Além de não ter certeza se consegui aplicar o código de fazer o opoente errar.

https://editor.p5js.org/Byron_18/full/juzDHySO9 https://editor.p5js.org/Byron_18/sketches/juzDHySO9

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

let velocidadexBolinha = 5
let velocidadeyBolinha = 5

//Jogador
let xRaquete = 2
let yRaquete = 150

//Oponente
let xRaqueteOponente = 590
let yRaqueteOponente = 150
let velocidadeYOponente
let chanceDeErrar = 0;

let raqueteComprimento = 8
let raqueteAltura = 80

let colidiu = false;

//placar do jogo
let meusPontos = 0
let pontosDoOponente = 0

//sons do jogo
let raquetada
let ponto
let trilha

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

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

function draw() {
  background(1)
  mostraBolinha()
  movimentoBolinha()
  verificaColisaoBorda()
  mostraRaquete(xRaquete,yRaquete)
  movimentoraquete()
  //colisaoRaquete()
  colisaoRaquetesBiblioteca(xRaquete, yRaquete)
  mostraRaquete(xRaqueteOponente, yRaqueteOponente)
  raqueteOponente()
  colisaoRaquetesBiblioteca(xRaqueteOponente, yRaqueteOponente)
  incluiPlacar()
  marcaPonto()
  loopRaqueteParede()
}

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

function mostraRaqueteOponente() {
    rect(xRaqueteOponente, yRaqueteOponente, raqueteComprimento, raqueteAltura)
}

function movimentoBolinha() {
  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 movimentoraquete(){
  if (keyIsDown(UP_ARROW)) {
     yRaquete -= 10
    }
  if (keyIsDown(DOWN_ARROW)) {
     yRaquete += 10
    }
}

function raqueteOponente() {
  velocidadeYOponente = yBolinha - yRaqueteOponente - raqueteComprimento / 3 - 50;
  yRaqueteOponente += velocidadeYOponente + chanceDeErrar
  calculaChanceDeErrar() 
}

function colisaoRaquete() {
  if (xBolinha - raio < xRaquete + raqueteComprimento
      && yBolinha - raio < yRaquete + raqueteAltura
      && yBolinha + raio > yRaquete) {
      velocidadexBolinha *= -1
  raquetada.play()
    }
}

function colisaoRaquetesBiblioteca(x,y) {
  colidiu = collideRectCircle(x, y, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio);
  if (colidiu){
        velocidadexBolinha *= -1;
  raquetada.play()
    }
}

function incluiPlacar(){
    stroke(255);
    textAlign(CENTER);
    textSize(16);
    fill(color(255, 140, 0));
    rect(180, 10, 40, 20);
    fill(255);
    text(meusPontos, 200, 26);
    fill(color(255, 140, 0));
    rect(380, 10, 40, 20);
    fill(255);
    text(pontosDoOponente, 400, 26);
}

function marcaPonto(){
  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
    }
  }
}

function loopRaqueteParede(){
  if(yRaquete > 400){
    yRaquete = 0;  
  }

  if(yRaquete < 0){
    yRaquete = 400;
  }
}

function bolinhaNaoFicaPresa(){
    if (XBolinha - raio < 0){
    XBolinha = 23
    }
}
1 resposta

Olá Ronaldo, tudo bem com você?

Agradeço a paciência em aguardar uma resposta para o seu tópico.

Eu tentei acessar ao links que você compartilhou que imagino que são referentes ao projeto, porém quando eu entro acaba aparecendo o erro 404, que aparece quando a página não é encontrada.

Já o seu problema com o bug da bolinha ficando presa na raquete, você pode estar solucionado ela com uma função que eu desenvolvi e vou estar compartilhando com você.

function bolinhaNaoFicaPresa( ){
    if (xBolinha - raio <= 0){
    xBolinha = 20;

    } else {

      if (xBolinha - raio >= 588){
        xBolinha = 570;
      }
    }
}

Espero que eu tenha lhe ajudado de alguma forma e caso você ainda tenha algum dúvida vou estar a sua disposição. Abraços e bons estudos!