14
respostas

Pontos aumentam de 5 em 5.

Olá! Quando eu e o oponente marcamos pontos, aumenta no placar de 5 em 5 e não de 1 em 1. Mesmo eu verificando, percebo que os códigos estão idênticos ao da aula.

14 respostas

Olá Samuel, tudo bem?

Traz pra gente um print do seu código por favor, isso ajuda a vermos sua dúvida junto com o codigo escrito.

As vezes pode ser uma virgula, parenteses, etc que nossos olhos deixaram passar...

Até mais

Eae!

Samuel, cheguei a ter o mesmo Bug, vi em um local aqui do Fórum que o ponto é marcado de acordo com o XBolinha, ou seja, o centro da bolinha, sem contabilizar a borda, logo ele marca por mais tempo a bolinha dentro da coordenada. Assim você tem que relacionar a velocidade e a posição que contabiliza os pontos, segue o meu ai:

function incluiPontos() {
    if (xBolinha > 592) {
        meusPontos += 1;
        ponto.play();
    }
    if (xBolinha < 8) {
        oponentePontos += 1;
        ponto.play();
    }
}

lembrando que minha variável de velocidade da Bolinha é 5:

let velocidadeXBolinha = 5;
let velocidadeYBolinha = 5;

OU

você pode tentar + e - os raios

olá, outra forma de solucionar esse problema é considerar o raio da bolinha dentro da função que marca os pontos.

function marcaPonto(){

 // placar oponente
    if ( xBolinha - raioBolinha < 1){
      placarRaquete2 += 1; ponto.play()
    }

    // placar personagem
     if ( xBolinha + raioBolinha > 599){
      placarRaquete1 += 1; ponto.play()
    }
  }

pode ser também que a bolinha esta marcando os pontos antes de encostar na borda, nesse caso a bolinha marca ponto na ida e na volta. caso seja esse o problema basta você redefinir o ponto " x " onde a bolinha registra o ponto.

ps: estou utilizando uma tela de 600 x 400.

Obrigado a todos, mas ainda não consegui achar o erro!

Aqui está uma cópia de algumas partes do meu código. Até mais!

//variáveis da bolinha let xBolinha = 300; let yBolinha = 200; let diametro = 32; let raio = diametro / 2;

//velocidade da bolinha let velocidadeXBolinha = 6; let velocidadeYBolinha = 6; let raqueteComprimento = 10; let raqueteAltura = 90;

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

Samuel, conpartilha o link do p5.js para podermos olhar o seu código,

na função maraca ponto tem um erro, tem um " () " antes da palavra resevada function.

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

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Assim está meu código!

Samuel, se você clicar em </> que tem aqui, você pode compartilhar o seu código. Eu olhei a parte do seu código que enviou, mas não localizei erro. O meu está igual ao seu nesse print que enviou, porém sem o "ponto.play()" e não dá erro. O que deve estar dando erro para você não é na função que marca os pontos, mas em outra função.

function marcaPontos(){
  if (xBolinha<10){
    pontosDoOp+=1
  }
  if (xBolinha>590){
    meusPontos+=1
  }
}

Tenta enviar o seu código inteiro como eu falei no começo, clicando em </>, para que possamos ver o código.

Tem como fazer essa alteraçao nojogo? Estou com o mesmo problema e ainda não comecei a codificar.

olá, Mylena, respondendo a sua pergunta da para fazer todas as alterações aqui sugeridas no seu código, você só precisa ver qual solução se adequa melhor ao seu projeto.

Ok! vou envia-lo inteiro!

//variáveis da bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 32;
let raio = diametro / 2;

//velocidade da bolinha
let velocidadeXBolinha = 6;
let velocidadeYBolinha = 6;
let raqueteComprimento = 10;
let raqueteAltura = 90;

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

//variáveis do oponente
let xRaqueteOponente = 585;
let yRaqueteOponente = 150;
let velocidadeYOponente;

let colidiu = false;

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

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

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

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

function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  verificaColisaoBorda();
  mostraRaquete(xRaquete, yRaquete);
  movimentaMinhaRaquete();
  //verificaColisaoRaquete();
  verificaColisaoRaquete(xRaquete, yRaquete);
  mostraRaquete(xRaqueteOponente, yRaqueteOponente);
  movimentaRaqueteOponente();
  verificaColisaoMinhaRaquete(xRaqueteOponente, yRaqueteOponente);
  incluiPlacar();
  marcaPonto();
}

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

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

function verificaColisaoBorda(){
  if (xBolinha > width ||
    xBolinha < 0){
    velocidadeXBolinha *= -1;
  }
  if (yBolinha > height || 
     yBolinha < 0){
    velocidadeYBolinha *= -1;
     }
}

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


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

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

function verificaColisaoMinhaRaquete(x, y) {
    colidiu = collideRectCircle(x, y, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio);
    if (colidiu) {
        velocidadeXBolinha *= -1;
      raquetada.play();
    }
}

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

function incluiPlacar(){
  stroke(255);
  textAlign(CENTER);
  textSize(16);
  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(pontosDoOponente, 470, 26);
}

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

Samuel, talvez seja por causa do seu diâmetro. Acho que está muito grande. Tente diminuí-lo para 15:

//variáveis da bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 15; 
let raio = diametro / 2;

Obrigado! Mudei o diâmetro para 15, mas infelizmente o erro permanece.

Samuel, eu olhei o seu código e rodei ele no p5.js, e para ele funcionar corretamente você precisa fazer algumas alterações a primeira é na função "verificaColisaoBorda()" nela você esqueceu de considerar o raio da bolinha fazendo com que a mesma ultrapassasse os limites da tela, a segunda alteração é na função "marcaPonto()" que para manter o diâmetro atual da bolinha você precisa redefini o ponto "x" no qual a bolinha marca o ponto ou considerar o raio da bolinha na função assim independente do diâmetro da bolinha a função ira funcionar corretamente.

Primeira alteração :

function verificaColisaoBorda(){
  if (xBolinha + raio > width ||
    xBolinha - raio < 0){
    velocidadeXBolinha *= -1;
  }
  if (yBolinha + raio > height || 
     yBolinha - raio < 0){
    velocidadeYBolinha *= -1;
     }
}

*Segunda alteração *

    function marcaPonto() {
        if (xBolinha > 582) {
            meusPontos += 1;
            ponto.play();
        }
        if (xBolinha < 18) {
            pontosDoOponente += 1;
            ponto.play();
        }

Segunda alteração considerando o raio da bolinha

    function marcaPonto() {
        if (xBolinha + raio > 599) {
            meusPontos += 1;
            ponto.play();
        }
        if (xBolinha - raio < 1) {
            pontosDoOponente += 1;
            ponto.play();
        }
    }

espero ter ajudado, qualquer duvida e só chamar.

Percebi que nessa função estava faltando essas palavras " + raio e - raio ". coloquei elas e começou a marcar 1 em 1 normalmente.

function verificaColisaoBorda(){
  if (xBolinha + raio> width ||
     xBolinha - raio< 0){
    velocidadeXBolinha *= -1;
  }
  if (yBolinha + raio> height ||
     yBolinha - raio < 0){
    velocidadeYBolinha *= -1;
  }
}

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software