2
respostas

Ajustes finais codigo

Bom dia Guys!

Gostaria de tirar algumas duvidas referente ao codigo:

1) Nao consigo fazer pontuacao no oponente, como ajustar isso? 2) As vezes a bola fica travada atras da raquete marcando pontos repetitivamente, como resolver? 3) A raquete ultrapassa da altura total do topo e da parte debaixo, como ajustar?

Segue abaixo o codigo:

//placar
let meusPontos = 0
let pontosOponente = 0

//variaveis da bolinha
let xBolinha = 300
let yBolinha = 200
let diametro = 16
let raio = diametro / 2

//velocidade da bolinha
let velocidadeXBolinha = 6
let velocidadeYBolinha = 6

//variaveis usuario
let xRaquete = 5
let yRaquete = 170
let colidiu = false

//variaveis oponente
let xRaqueteOponente = 590
let yRaqueteOponente = 170
let velocidadeYOponente;
let colidiuOponente = false

let raqueteComprimento = 5
let raqueteAltura = 60

function setup() {
  createCanvas(600, 400)
}

function draw() {
  background(0)
  mostraBolinha()
  movimentaBolinha()
  verificaColisaoBordaBolinha()

  criaRaquete(xRaquete,yRaquete)
  movimentaRaquete()

  criaRaquete(xRaqueteOponente,yRaqueteOponente)
  movimentaRaqueteOponente()

  verificaColisaoRaquete(xRaquete, yRaquete)
  verificaColisaoRaquete(xRaqueteOponente, yRaqueteOponente)
  /* 
  verificaColisaoRaquete()
  */

  incluiPlacar()
  marcaPonto()

}

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

function movimentaBolinha() {
  xBolinha += velocidadeXBolinha
  yBolinha += velocidadeYBolinha
}

function verificaColisaoBordaBolinha() {
    if( xBolinha + raio > width || xBolinha - raio < 0) {
    velocidadeXBolinha *= -1
  } 

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

function criaRaquete(x, y) {
  rect( x, y, raqueteComprimento, raqueteAltura);
}

function movimentaRaquete() {
    if (keyIsDown(UP_ARROW))
      yRaquete += -6;

    if (keyIsDown(DOWN_ARROW))
      yRaquete += 6;
}

function movimentaRaqueteOponente() {
  velocidadeYOponente = yBolinha - yRaqueteOponente - raqueteComprimento / 2 - 60
  yRaqueteOponente += velocidadeYOponente
}


function verificaColisaoRaquete(x, y) {
  colidiu = collideRectCircle(x, y, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio)
  if(colidiu)
  velocidadeXBolinha *= -1
}

function incluiPlacar() {
  stroke(255)
  textAlign(CENTER)
  textSize(20)

  fill(255,165,0)
  rect(130, 9, 40, 20)
  fill(255)
  text(meusPontos, 150, 26)
  fill(255,165,0)
  rect(430, 9, 40, 20)
  fill(255)
  text(pontosOponente, 450, 26)
}

function marcaPonto() {
  if( xBolinha > 590 ) {
    meusPontos++
  }

  if( xBolinha < 10 ) {
    pontosOponente++
  }
}

/* 

function verificaColisaoRaquete() {
  if( xBolinha - raio < xRaquete + raqueteComprimento
    && yBolinha - raio < yRaquete + raqueteAltura
    && yBolinha + raio > yRaquete) {
    velocidadeXBolinha *= -1

  }

}
*/
2 respostas

Olá! Sou iniciante em programação mas acho que posso ajudar. 1) Você colocou que se a bolinha ficar só com 10 no X, o oponente recebe um ponto. Como o X do círculo representa o X do centro, tente colocar um valor ou pouquinho mais alto ou faça xBolinha - raio < 10 . Acho que é isso.

2) Isso tem acontecido comigo e muitas outras pessoas e não sei qual é o problema. Tente diminuir o tamanho entre a raquete e a borda.

3) Não sei :(

Espero ter ajudado!

Entao... a pontuacao e referente a bolinha passar e pontuar no oponente, quando eu mudo o valor da margem de acerto/erro ou sempre acerta ou sempre erra