Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Compartilhando alterações feitas no Pong em JS

Com base no código ensinado nas aulas fiz algumas melhorias que gostaria de compartilhar :D.

0 - Criei pastas específicas para salvar os sons e a fonte que baixei

Create Folder -> Sound Uploaded

Create Folder -> Font Uploaded

1 - Baixei a fonte PIXEL e fiz o preload dela para alterar a fonte dos números do jogo.

let fonteTexto;

function preload() {
  fonteTexto = loadFont("Font Uploaded/VCR_OSD_MONO_1.001.ttf");  
}

function incluiPlacar(meusPontos, xMeuPlacar, pontosOponente, xPlacarOponente, yPlacar) {
  stroke(255);
  textAlign(CENTER);
  textFont(fonteTexto); <-- aqui fiz a alteração
  textSize(25);
  fill(color(0, 0, 240));
  rect(279.5, 8, 40, 25);
  fill(color(255, 128, 0));
  rect(330.5, 8, 40, 26);
  fill(255);
  text(meusPontos, xMeuPlacar, yPlacar);
  text(pontosOponente, xPlacarOponente, yPlacar);
}

2 - Criei uma função chamada resultadoPartida() que informa se você ganhou ou perdeu para o Oponente e usei a fonte PIXEL.

function resultadoPartida() {
  textAlign(CENTER);
  textFont(fonteTexto); <-- fonte alterada
  textSize(60);
  fill(255);
  if (meusPontos > pontosOponente) {
    text("YOU WIN", 325, 225); <-- Informa que ganhei do Oponente
    win.play(); <-- Adicionei um som para isso
  } else {
    text("YOU LOSE", 325, 225); <-- Informa que perdi para o Oponente
    lose.play(); <-- Adicionei um som para isso
  }
}

3 - Adicionei um ponto de parada no jogo - quando um dos jogadores fizer 5 pontos - dentro da função draw() e no início dela, antes de todas as outras funções. e chamei a função resultadoPartida().

if (pontosOponente == 5 || meusPontos == 5) {
    noLoop();
    resultadoPartida();
}

4 - Criei uma função para calcular a chance de errar do Oponente (conforme sugerido no curso) e para isso criei calculaChanceErrar(), adicionei essa função dentro da função que marcaPontuacao() (adiantando a bolinha toda vez que eu marcar ponto no oponente) e adicionei a variável chanceErrar à yRaqueteOponente dentro da função movimentaRaqueteOponente().

let chanceErrar;

function calculaChanceErrar() {
  if (meusPontos > pontosOponente && chanceErrar > 0) {
    chanceErrar -= 15;
  } else if (pontosOponente > meusPontos && chanceErrar < 60) {
    chanceErrar += 20;
  }
}
function marcaPontuacao() {  
  if (xBolinha < 10) {
    pontosOponente++;
    ponto.play();
    calculaChanceErrar(); <-- inseri a função aqui, toda vez que alguém marcar ponto
  }
  if (xBolinha > 640) {
    meusPontos++;
    ponto.play();
    xBolinha -= 20; <-- adianto a bolinha
    calculaChanceErrar(); <-- inseri a função aqui, toda vez que alguém marcar ponto
  }
}
function movimentaRaqueteOponente() {
  velocidadeYOponente = yBolinha - yRaqueteOponente - heightRaquete / 2;

  yRaqueteOponente += velocidadeYOponente + chanceErrar; <-- adicionei aqui a variável chanceErrar
}

Dessa maneira, consegui fazer com que a dificuldade do Oponente aumente e diminua conforme o placar do jogo. Espero ter sido claro na explicação, qualquer coisa perguntem que eu tento explicar melhor!

Link código completo: https://editor.p5js.org/pedroscott/sketches/wwMSrrZr9

1 resposta
solução!

Fala, Pedro! Espero que esteja bem!

Parabéns pelo projeto!

Com certeza vai ajudar muito os alunos que passarem pelo curso dando uma outra visão de desenvolvimento

Obrigado por compartilhar!!!

Um abraço e bons estudos!!!