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

Projeto Pong JS Concluído

Link do jogo: https://editor.p5js.org/moraes1606/full/CYyD3_JW2

//Variáveis da bolinha
let xBolinha = 300
let yBolinha = 200
let diametro = 20
let raio = diametro / 2

//Velocidades da bolinha
let velocidadeXbolinha = 6
let velocidadeYbolinha = 6

//Variáveis da raquete
let xRaquete = 5
let yRaquete = 150
let comprimentoRaquete = 10
let alturaRaquete = 90


//Variáveis da raquete do oponente
let xRaqueteOponente = 585
let yRaqueteOponente = 150
let velocidadeYoponente;

//Variáveis de pontuação
let meusPontos = 0
let pontoDoOponente = 0

//Sounds
let trilha;
let ponto;
let raquetada;

let chanceDeErrar = 0;
let colisao = false;


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


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

function draw() {
  background(51, 55, 59);
  bolinha();
  movimentoBolinha();
  colisaoBolinha();
  raquete(xRaquete, yRaquete);
  movimentaRaquete();
  colisaoRaquete();
  verificaColisaoRaquete(xRaquete, yRaquete);
  raquete(xRaqueteOponente, yRaqueteOponente);
  movimentaRaqueteOponente();
  verificaColisaoRaquete(xRaqueteOponente, yRaqueteOponente);
  incluirPlacar();
  marcaPontos();
  calculaChanceDeErrar();
  rede();
  stroke(180);
 }

function rede(){
  fill(202, 69, 59)
    rect(300, 50, 4, 300)
}

function bolinha(){
  fill(255,255,255)
  circle (xBolinha, yBolinha, diametro);
}

function movimentoBolinha(){
  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 raquete(x,y) {
    fill(255,255,255)
    rect(x,y, comprimentoRaquete, alturaRaquete);
  }

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

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

    }
  function verificaColisaoRaquete(x,y){
    colisao = collideRectCircle(x, y, comprimentoRaquete, alturaRaquete, xBolinha, yBolinha, raio);
    if(colisao){
      velocidadeXbolinha *= -1;
    raquetada.play();
    }
  }

function movimentaRaqueteOponente() {
    velocidadeYOponente = yBolinha - yRaqueteOponente - comprimentoRaquete / 2 - 30;
    yRaqueteOponente += velocidadeYOponente + chanceDeErrar

}

function incluirPlacar(){
textAlign(CENTER)
textSize(16)
fill(202, 69, 59)
rect(133,9, 34, 21)
fill(202, 69, 59)
rect(433,9, 34, 21)
fill(255)
text(meusPontos, 150, 26)
text(pontoDoOponente, 450, 26)

}

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

function calculaChanceDeErrar() {
  if (pontoDoOponente >= meusPontos) {
    chanceDeErrar += 1
    if (chanceDeErrar >= 30){
    chanceDeErrar = 48
    }
  } else {
    chanceDeErrar -= 1
    if (chanceDeErrar <= 34){
    chanceDeErrar = 30
    }
  }
}
4 respostas

Oi oi, Lucas! Espero que esteja tudo bem por aí!

Seu jogo ficou incrível! Parabéns pela criatividade nas customizações, as cores ficaram equilibradas e que música sensacional!

Confesso que peguei um susto no início do jogo por conta da música, eu estava com fones e pensei que estava ocorrendo um terremoto hahahah! Mas falando sério, gostei bastante da trilha, é emocionante e muito bonita também, boa escolha!

Ficou muito bom mesmo, a realização de modificações e customizações sempre nos ajudam a aprofundar nossos conhecimentos!

Continue compartilhando seu progresso e dúvidas conosco!

Um grande abraço e bons estudos!

Oi, Camila. Muito obrigado pelo feedback e desde já peço desculpa pelo susto kkkkk, eu tentei diminuir o som por que imaginei que poderia ocorrer isso, mas acabei não conseguindo.

solução!

Não precisa se desculpar, Lucas hahaha!

Tem um curso aqui na Alura sobre Game Design que fala justamente sobre o jogo ser uma experiência para o jogador, e o seu certamente me trouxe uma imersão total no ambiente :D

Sobre essa funcionalidade de diminuir ou aumentar o volume, o aluno Alura Lucas Borges Branco encontrou uma solução bem bacana lendo a documentação oficial do p5.js, olha só:

Também lá através do Reference do p5, descobri que tem como trocar o volume dos sons, já que a trilha estava bem alta, através do código:

  `somTrilha.loop(0.1, 1, 0,1) `

(O primeiro 0.1 é o tempo pra executar a musica, o segundo 1 é a taxa de reprodução, e o terceiro 0,1 é de fato o som do jogo)

Vou deixar também aqui o link para o tópico do seu xará para você consultar melhor :) :https://cursos.alura.com.br/forum/topico-melhorias-no-joguinho-da-vaca-161095

Um grande abraço e bons estudos!

Muito obrigado, Camila. Vou fazer a alteração e ver como fica.