2
respostas

Expansão do jogo: mensagem de vitória...

function exibeResultado(){
  if(meusPontos >= 10){
    fill(255, 144, 0);
    textSize(40);
    text("Parabéns! Você ganhou!", 300, 200);
    zeraJogo();
}    
  if(pontosOponente >= 1){
    fill(255, 144, 0);
    textSize(40);
    text("Atualize e tente novamente!", 300, 200);
    zeraJogo();
  }    
}

function zeraJogo(){
    meusPontos = 0;
    pontosOponente = 0;
    xBolinha = 300;
    yBolinha = 200;
    velocidadeXBolinha = 0;
    velocidadeYBolinha = 0;

Tentei dar um final pro jogo dizendo "Parabéns, você venceu" ou "Atualize e tente novamente". Está dando certo, mas meu texto só aparece e logo some. Não estou entendendo o por quê; Alguma ideia?

2 respostas

Olá, Mateus. Tudo bem?

Poderia mandar aqui o código completo? Pode ser que o problema não esteja no código que mostra em si, mas se ele está sendo usado como esperado.

Opa, segue aí!

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

//variaveis da velocidade
let velocidadeXBolinha = 7;
let velocidadeYBolinha = 7;

let larguraRaquete = 5;
let alturaRaquete = 100;

//variaveis da raquete um
let posicaoXRaqueteUm = 10;
let posicaoYRaqueteUm = 200;

//variaveis da raquete dois
let posicaoXRaqueteDois = 580;
let posicaoYRaqueteDois = 200;
let velocidadeYOponente;
let chanceDeErrar = 0;

//variavel library
let colidiu = false;

//variaveis placardojogo
let meusPontos = 0;
let pontosOponente = 0;

//sons
let raquetada;
let ponto;
let trilha;

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

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

//funcionamento do jogo
function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  verificaColisaoBorda();
  desenhaRaquete(posicaoXRaqueteUm, posicaoYRaqueteUm);
  movimentaRaqueteUm();
  colisaoRaqueteBiblioteca(posicaoXRaqueteUm, posicaoYRaqueteUm);
  colisaoRaqueteBiblioteca(posicaoXRaqueteDois, posicaoYRaqueteDois);
 movimentaRaqueteOponente();
 incluiPlacar();
 marcaPonto();
 desenhaRaquete(posicaoXRaqueteDois, posicaoYRaqueteDois);
 exibeResultado();
}

//declarações de funções
function mostraBolinha(){
  circle (xBolinha, yBolinha, diametro)
}

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

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

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

function desenhaRaquete(x, y){
  rect(x, y, larguraRaquete, alturaRaquete);
}

function movimentaRaqueteUm(){
  if (keyIsDown(UP_ARROW)){
    posicaoYRaqueteUm -= 10;
  }

  if (keyIsDown(DOWN_ARROW)){
    posicaoYRaqueteUm += 10;
  }
}

function movimentaRaqueteOponente(){
  velocidadeYOponente = yBolinha - posicaoYRaqueteDois - larguraRaquete / 2 - 40;
  posicaoYRaqueteDois += velocidadeYOponente + chanceDeErrar;
  calculaChanceDeErrar();
}

function colisaoRaqueteBiblioteca(x, y){
 colidiu = collideRectCircle(x, y, larguraRaquete, alturaRaquete, xBolinha, yBolinha, raio);
  if(colidiu){
    velocidadeXBolinha *= -1;
    raquetada.play();
  }
}

function calculaChanceDeErrar() {
  if (pontosOponente >= meusPontos) {
    chanceDeErrar += 1
    if (chanceDeErrar >= 39){
    chanceDeErrar = 40
    }
  } else {
    chanceDeErrar -= 1
    if (chanceDeErrar <= 35){
    chanceDeErrar = 35
    }
  }
}

function marcaPonto(){
  if(xBolinha > 593){
    meusPontos += 1;
    ponto.play();
}
  if(xBolinha < 8){
    pontosOponente += 1;
    ponto.play();
  }
}

function incluiPlacar(){
  stroke(168, 204, 0)
  strokeWeight(4)
  fill(255, 144, 0)
  rect(225, -10, 55, 80, 10);
  fill(255, 144, 0)
  rect(325, -10, 55, 80, 10);
  noStroke();
  textAlign(CENTER);
  textSize(20);
  fill(255);
  text("Eu", 250, 50)
  text("CPU", 350, 50)
  text(meusPontos, 250, 26);
  text(pontosOponente, 350, 26);
}

function exibeResultado(){
  if(meusPontos >= 1){
    fill(255, 144, 0);
    textSize(40);
    text("Parabéns! Você ganhou!", 300, 200);
    zeraJogo();
}    

  if(pontosOponente >= 1){
    fill(255, 144, 0);
    textSize(40);
    text("Atualize e tente novamente!", 300, 200);
    zeraJogo(); 
  }    
}

function zeraJogo(){
    meusPontos = 0;
    pontosOponente = 0;
    xBolinha = 300;
    yBolinha = 200;    
    velocidadeXBolinha = 0;
    velocidadeYBolinha = 0;
    trilha.stop();
}

Consegui um resultado chamando uma function wait(); (não se de onde tirei, fui no chute hehehe). Até funcionou, mas no console deu erro.