1
resposta

[Sugestão] Pong sem utilizar raio na variável

Fala pessoal! Blz?

Fiz meu jogo Pong no p5 com detalhes diferentes do que foram ensinados no curso. Eu acabei criando esse código porque, do jeito que eu estava codando, estava dando alguns bugs, então, achei algumas soluções e deram certo.

Confere aí e deixe seu comentário.

Vlw

// variáveis da bolinha
let xBolinha = 200;
let yBolinha = 200;
let dBolinha = 20;

// velocidade da Bolinha
let veloX = 4;
let veloY = 4;
let cRaquete = 5;
let aRaquete = 80;

// variáveis da raquete
let xRaquete = 5;
let yRaquete = 150;

// variaveis do oponente
let xRaqueteOponente = 585
let yRaqueteOponente = 150  
let veloyOponente;

// variável biblioteca colisao
let colidiu = false;

// placar do jogo
let meusPontos = 0;
let pontosOponente = 0;

// tamanho da tela
function setup() {
  createCanvas(600, 400);
}

// cor da tela
function draw() {
  background(0);
  // chamando funções
  mostraBolinha();
  movBolinha();
  colisaoBolinha();
  mostraRaquete(xRaquete, yRaquete);
  verificaColisaoBorda();
  verificaColisaoRaquete(xRaquete, yRaquete);
  mostraRaqueteOponente(xRaqueteOponente, yRaqueteOponente);
  movMinhaRaquete();
  movRaqueteOponente();
  verificaColisaoRaquete(xRaqueteOponente, yRaqueteOponente);  
  incluiPlacar();
  marcaPonto();
  bolinhaNaoFicaPresa();

}

// função que cria a bolinha
function mostraBolinha() {
  circle(xBolinha, yBolinha, dBolinha);
}

// função que movimenta a bolinha
function movBolinha() {
  xBolinha += veloX;
  yBolinha += veloY;
}

function colisaoBolinha(){
  if(xBolinha > width || xBolinha < 0){ 
    // se bolinha maior que a borda OU menor zero
    veloX *= - 1;
  }
  if(yBolinha > height || yBolinha < 0){
    veloY *= - 1
  }
}

function mostraRaquete(x,y) {
  rect(x, y, cRaquete, aRaquete);
}

function mostraRaqueteOponente() {
  rect(xRaqueteOponente, yRaqueteOponente, cRaquete, aRaquete);
}

function movRaqueteOponente() {
  if (keyIsDown(UP_ARROW)) {
    yRaqueteOponente -= 10;
  }
  if (keyIsDown(DOWN_ARROW)) {
    yRaqueteOponente += 10;
  }
}

function movMinhaRaquete(){
  if (keyIsDown(87)) {
    yRaquete -= 10;
  }
  if (keyIsDown(83)) {
    yRaquete += 10;
  }
}

function verificaColisaoBorda(){
  if (xBolinha - dBolinha < xRaquete + cRaquete &&
    yBolinha - dBolinha < yRaquete + aRaquete &&
    yBolinha + dBolinha > yRaquete
  ) {
    veloX *= -1;
  }
}

function verificaColisaoRaquete(x,y) {
  colidiu = collideRectCircle(x, y, cRaquete, aRaquete, xBolinha, yBolinha, dBolinha);
  if (colidiu) {
    veloX *= -1;
  }
}

function incluiPlacar(){
  stroke(255);
  textAlign(CENTER);
  textSize(20);
  fill(color(255, 140,0));
  rect(150,10, 40, 20);
  fill(255);
  text(meusPontos, 170, 26);
  fill(color(255, 140,0));
  rect(450,10, 40, 20);
  fill(255);
  text(pontosOponente, 470, 26);
}

function marcaPonto(){
  if(xBolinha > 600){
    meusPontos += 1 ;
  }
 if(xBolinha < 0){
  pontosOponente += 1;
  }
}

function bolinhaNaoFicaPresa(){
    if (xBolinha / 4 < 0){
    xBolinha = 20
    }
 }
1 resposta

Oii, Keo! Como vai?

Desculpe por demorar a te retornar.

Achei isso super interessante, eu mesma já presenciei vários bugs (e até mesmo fiquei confusa na época hahaha) sobre o raio da bolinha. Continue assim! É importante para a carreira de programador buscarmos outras opções para implementarmos novidades e conseguirmos melhorias nos nossos projetos.

Se alguma dúvida surgir, estamos disponíveis para te ajudar. :)

Abraços e bons estudos!