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

Pontuação do jogo pong aparece como NaN ao invés da pontuação de fato ocorrer

estou na parte de desenvolver o quadro de pontuação para o jogo PONG, criado no p5.js. No entanto, quando qualquer um dos dois marca um ponto, no lugar da quantidade de pontos marcada, é mostrado uma palavra "NaN"

esse é o meu código :

//Bolinha posicionamento e dimensionamento 
let xBolinha = 300;
let yBolinha = 200;
let diametro = 15;
let raio = diametro /2;

//movimentacao da bolinha
let velocidadexBolinha = 6;
let velocidadeyBolinha = 6;

//posicionamento e dimensionamento do retangulo
let xRaquete = 3;
let yRaquete = 150;
let wRaquete = 10;
let hRaquete = 70;
let colidiu = false;

//RaqueteOponente
let xRaqueteOponente = 588;
let yRaqueteOponente = 150;

//VelocidadeRaqueteOponente
let velocidadeyRaqueteOponente;

//placar do jogo
let meusPontos;
let pontosOponente;


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

function draw() {
  background(0);
  mostraBolinha();
  mostraRaquete(xRaquete, yRaquete);
  movimentaBolinha();
  colisaoBolinha();
  movimentaMinhaRaquete();
  colisaoMinhaRaquete();
  mostraRaquete(xRaqueteOponente, yRaqueteOponente);
  movimentaRaqueteOponente();
  colisaoMinhaRaqueteBiblioteca();
  incluiPlacar();
  marcaPonto();
}

//////FUNCTIONS///////
function colisaoBolinha(){
  if (xBolinha + raio > width || xBolinha - raio < 0){ 
  velocidadexBolinha *= -1;}
  if (yBolinha + raio > height || yBolinha - raio < 0){
    velocidadeyBolinha *= -1
  }
}
function mostraBolinha(){
  circle(xBolinha, yBolinha, diametro);
}
function mostraRaquete(x,y){
  rect(x, y, wRaquete, hRaquete);
}
function movimentaBolinha(){
  xBolinha += velocidadexBolinha;
  yBolinha += velocidadeyBolinha;
}
function movimentaMinhaRaquete(){
  if (keyIsDown(UP_ARROW)){
    yRaquete -= 10;
  }
  if (keyIsDown(DOWN_ARROW)){yRaquete += 10;
 }
}
function colisaoMinhaRaquete(){
  if (xBolinha - raio < xRaquete + wRaquete && yBolinha - raio < yRaquete + hRaquete && yBolinha + raio > yRaquete){
    velocidadexBolinha *= -1;
  }
}
function movimentaRaqueteOponente(){
  velocidadeyRaqueteOponente = yBolinha - yRaqueteOponente - hRaquete /2 -50
  yRaqueteOponente += velocidadeyRaqueteOponente;
}
function colisaoMinhaRaqueteBiblioteca() {
  colidiu =
    collideRectCircle(xRaqueteOponente, yRaqueteOponente, wRaquete, hRaquete, xBolinha, yBolinha, raio);{
    if (colidiu){
      velocidadexBolinha *= -1
    }
  }
}
function incluiPlacar(){
  fill(300);
  text(meusPontos, 278, 26);
  text(pontosOponente, 321,26);
}
function marcaPonto(){
  if (xBolinha > 590){
    meusPontos += 1;
  }
  if (xBolinha < 10){
    pontosOponente -= 1;
  }
}
2 respostas
solução!

Seu código está bem bagunçado, é muito difícil vizualizá-lo dessa maneira. Recomendo usar a opção </> e aninhá-lo.

NaN significa que o valor usado para fazer a operação 'não é um número', isso significa que em algum momento você tem uma entrada de String ou uma variável vazia e está tentando calcular com um número: '6' * 6 é igual a NaN.

var velocidade;

var resultado = velocidade + 6;

console.log(resultado)  //NaN

eu identifiquei o erro, e a variável da pontuação estava errada, por isso esse erro estava acontecendo. Obrigado pelo auxílio e pela explicação do que 'NaN' significa!

Quando eu copio o código, ele sai da maneira que ele estava organizado no p5.js, mas ao postá-lo, ele fica todo junto. Como posso consertar isso para dúvidas futuras?

Edit: Consegui resolver também! Obrigado e uma boa tarde!