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

Gandula

Eu tentei criar um gandula que acelerasse a velocidade da minha bolinha , eu utilizei a função " colisaominharaquete " que havia ficado " comentada " no código passado na aula . Mas infelizmente o meu gandula ganhou os poderes de um jedi , e acabou n movimentando a bola da forma que eu queria . Como eu poderia fazer ele acelerar a bolinha ? https://editor.p5js.org/brenoromeiro94/present/rbcrhtDsk

// variaveis da bolinha 

let xBolinha = 300
let yBolinha = 200
let diametro = 15
let raio = diametro/2 

// velocidade bolinha

let velocidadexBolinha = 4
let velocidadeyBolinha = 4

// Minha raquete 

let xRaquete = 0
let yRaquete = 150
let larguraquete = 10
let comprimentoraquete = 90
let colidiu = false

// Raquete do Oponente

let xRaqueteoponente = 590;
let yRaqueteoponente = 150;
let velocidadeOponente = 2
let chanceDeerrar = 0
// Incluir placar 

let meusPontos = 0 ;
let pontosDoOponente = 0 ;

// gandula

let xGandula = 300
let yGandula = 200
let velocidadeyGandula = 10
let lGandula = 30
let cGandula = 30

// Sons

let trilha;
let raquetada;
let ponto; 

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

}

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

function draw() {
  background(0);
  mostrabolinha();
  velocidadebolinha()
  verificacolisao();
  mostraraquete(xRaquete,yRaquete)
  movimentaminharaquete()
  colisaominharaquete()
  colisaobiblioteca(xRaquete,yRaquete)
  mostraraquete (xRaqueteoponente,yRaqueteoponente)
  oponente()
  gandula()
  velocidadegandula()
  colisaoGandula()
        colisaobiblioteca(xRaqueteoponente,yRaqueteoponente)
  pontos()
  marcaponto ()
  calcularAchanceDerrar()
 }
   function mostrabolinha(){
     circle (xBolinha,yBolinha,diametro);
}

   function velocidadebolinha(){
    xBolinha += velocidadexBolinha;
    yBolinha += velocidadeyBolinha; 
}
   function verificacolisao(){ 
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,larguraquete,comprimentoraquete)
}
  function movimentaminharaquete(){
    if (keyIsDown(UP_ARROW)){yRaquete -= 10}
    if (keyIsDown(DOWN_ARROW)){yRaquete += 10}
  }

  function colisaominharaquete(){
    if (xBolinha - raio < xGandula + lGandula && yBolinha  < yGandula + cGandula && yBolinha > yRaquete)
  velocidadexBolinha += 2 }

  function colisaobiblioteca(x,y){
    colidiu = collideRectCircle(x, y, larguraquete, comprimentoraquete, xBolinha,yBolinha, raio);

  if (colidiu)
  { velocidadexBolinha *=-1 
    raquetada.play()}
  }
  function oponente(){velocidadeoponente = yBolinha - yRaqueteoponente - comprimentoraquete / 2 -80; 
yRaqueteoponente += velocidadeoponente + chanceDeerrar; calcularAchanceDerrar() }

  function pontos (){
    textAlign(CENTER)
    textSize (20)
    fill(color(10,81,0));
    rect (455,2,30,30);
    fill (255);
    text (meusPontos, 470, 26 );
    fill(color(10,81,0))
    rect (135 ,2,30,30);
    fill (255);
    text (pontosDoOponente, 150, 26 );
  } 

  function marcaponto(){

    if (xBolinha > 595)
       {meusPontos += 1
       ponto.play()}

    if (xBolinha < 8) 
      {pontosDoOponente += 1 
       ponto.play()}
  }
  function calcularAchanceDerrar (){
    if (pontosDoOponente >= meusPontos)
    {chanceDeerrar += 1

    if (chanceDeerrar >=39);
        {
      chanceDerrar = 40 ;
    }
       }
    else {chanceDeerrar -= 1

      if (chanceDeerrar <= 35) 
      {chanceDeerrar = 35          
  }
 }
  }
  function gandula () {
    rect(xGandula, yGandula ,lGandula,cGandula)} 

  function velocidadegandula () {
    yGandula += velocidadeyGandula;
  }

  function colisaoGandula() {
if (yGandula > height || yGandula < 0 ) {velocidadeyGandula *=-1}
  }
2 respostas
solução!

Fala, Breno! Tudo bem contigo?

Desculpe a demora em dar um retorno

Uma ideia interessante seria criar uma função com as regras do gandula incluindo a colisão da bolinha, não esquecendo de chama-la dentro do Draw.

Faça esses testes, Breno, e nos dê um retorno!

Fico no aguardo

Um abraço

Tudo certo Cássio ! Eu copiei as informações da função "colisaoBiblioteca" , e utilizei no gandula . A principio consegui deixar o gandula com o comportamento de um raquete ,mas o gandula estava sendo executado dentro dessa função e eu queria uma so para ele.

Fiz uma função idêntica a função " colisaoBiblioteca " , e a chamei de "colisaoBolaGandula" , mas por algum motivo n houve colisão com essa função , e ela esta no draw.

Após muito tempo , vi que n havia copiado o "if" do colidiu , por isso n havia colisão .

Mas enfim consegui fazer o que eu queria que era aumentar a velocidade da bola ao tocar no gandula , mas ainda falta muito para que o jogo n pareça bugado , vou ir evoluindo ele conforme vou evoluindo meus conhecimentos . Obrigado Cássio.