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

[Projeto] Projeto finalizado

Projeto finalizado, utilizei algumas sugestões do fórum para contornar o bug da bolinha pressa e também defini um final para o jogo, também inspirada pelo fórum.

https://editor.p5js.org/Hyliia/sketches/Ss1zf8Cn8

// variaveis da bolinha
let xBolinha = 250;
let yBolinha = 200;
let diametro = 15;
let raio = diametro / 2;

//velocidade da bolinha
let = velocidadexBolinha = 5
let = velocidadeyBolinha = 5

// variaveis da raquete
let xRaquete = 2
let yRaquete = 150
let raqueteComprimento = 10
let raqueteAltura = 90

//variaveis do oponente
let xRaqueteOponente = 488
let yRaqueteOponente = 150
let velocidadeyOponente;

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

//sons do jogo
let raquetada;
let ponto;
let trilha;

let direcaoRaqueteOponente = 1;

//Variável global
let colisao = false

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

function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha ();
  colisãoBorda ();
  mostraRaquete (xRaquete, yRaquete);
  movimentoDaRaquete();
  colisaoDaRaquete(xRaquete, yRaquete);
  mostraRaquete(xRaqueteOponente, yRaqueteOponente);
  //movimentoDaRaqueteOp();
  colisaoDaRaquete(xRaqueteOponente, yRaqueteOponente);
  placarDoJogo ();
  marcaPonto();
  limitaRaquete();
  //movimentaoponente();
  fimDeJogo()

}

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

function movimentaBolinha (){
  xBolinha += velocidadexBolinha
  yBolinha += velocidadeyBolinha
}

function colisãoBorda(){
   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 movimentoDaRaquete (){
  if (keyIsDown(UP_ARROW)){ yRaquete -= 10;}
  if (keyIsDown(DOWN_ARROW)){ yRaquete += 10;}
}

function colisaoDaRaquete(x,y){
  colisao = 
  collideRectCircle(x, y, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio)
  if (colisao){
    velocidadexBolinha *= -1; }}

function movimentoDaRaqueteOp (){
  if (keyIsDown(87)){ yRaqueteOponente -= 10;}
  if (keyIsDown(83)){ yRaqueteOponente += 10;}
}

function placarDoJogo (){
  stroke(255)
  textAlign(CENTER);
  textSize(20);
  fill(color (147,112,219));
  rect(180, 10, 40, 20);
  fill (255);
  text(meusPontos, 200, 26);
  fill(color(147,112,219));
  rect(280, 10, 40, 20);
  fill(255)
  text(pontosDoOponente, 300, 26);


}

function marcaPonto(){
  if (xBolinha > 490) { meusPontos += 1; 
                       xBolinha = 200
                       yBolinha = 10
                       ponto.play() } 
  if (xBolinha < 10) {pontosDoOponente += 1;
                      xBolinha = 400
                      yBolinha = 10
                      ponto.play() }}

function limitaRaquete(){
  if (yRaquete < 0)
{yRaquete = 0;} 
  else if(yRaquete > 400 - raqueteComprimento){yraquete = 400 - raqueteComprimento;}
  if (yRaqueteOponente < 0) {yRaqueteOponente = 0;}
  else if (yRaqueteOponente > 400 - raqueteComprimento) {    yRaqueteOponente = 400 - raqueteComprimento;}}

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

function movimentaoponente(){
  const mediaYBolinha = yBolinha + raio;
  const mediaYRaqueteOponente = yRaqueteOponente + (raqueteAltura/2);

  if (mediaYBolinha > mediaYRaqueteOponente) {
    direcaoRaqueteOponente = 1;
  } else {
    direcaoRaqueteOponente = -1;
  }
  yRaqueteOponente += 5.5 * random(0.6, 0.95) * direcaoRaqueteOponente;
}

function fimDeJogo(){
  if (meusPontos > 9){
    fill (color (147,112,219));
    textSize (25);
    textStyle(BOLD);
    textFont('Verdana');
    text ("Turu Bom??", 250, 200);
    xBolinha = 350;
    yBolinha = 200;
    velocidadeXBolinha = 0;
    velocidadeYBolinha = 0;
     trilha.stop();}


 if (pontosDoOponente > 9){
    fill (color (147,112,219));
    textSize (25);
    textStyle(BOLD);
    textFont('Verdana');
    text ("Ah vá!", 250, 200);
    xBolinha = 350;
    yBolinha = 200;
    velocidadeXBolinha = 0;
    velocidadeYBolinha = 0; 
    trilha.stop();}}
1 resposta
solução!

Olá, Júlia! Tudo certo?

Parabéns por finalizar esse projeto! Gostei bastante da organização do seu código. Para mim, ficou muito claro o que quis fazer com o código, obrigado por compartilhar a sua solução conosco!

E se está dando seus primeiros passos na programação, recomendo que dê uma olhada nessa formação em programação. Veja que já fez o primeiro curso dessa formação :)

Continue praticando e evoluindo na sua jornada. Bons estudos e até mais!