1
resposta

Minha versão do jogo.

Olá, terminei o curso e gostaria de compartilhar minha versão com algumas modificações.

Os movimentos do oponente eu usei os do Raphael Aracelli pois achei que ficaram mais orgânicos (link do código dele: (https://cursos.alura.com.br/forum/topico-outra-ideia-para-deixar-o-jogo-mais-interessante-96880 )

O que eu mudei foi, criei uma variável para alterar a distância de onde o oponente percebe a bola. Quanto mais atrás nos pontos você estiver mais fácil será de pontuar, embora mesmo a versão de "maior dificuldade" não é impossível de pontuar.

A trilha sonora e os sons eu criei usando o LMMS. Quem quiser testar: https://editor.p5js.org/Laino/full/Dan4Jf0u9

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

//forma bola
let xBola = 500;
let yBola = 200;
let dBola = 20;
let rBola = dBola/2;

//movimenta bola
let xVel = 11;
let yVel = xVel - 2.5;
let xDirecao = [xVel, xVel*(-1)];
let yDirecao = [yVel, yVel*(-1)];

//comum raquetes
let largP = 10;
let altP = 90;

//forma jogador
let xP1 = 5;
let yP1 = 145;

//oponente
let xP2 = 785;
let yP2 = 145;
let velP2 = [xVel + 1, xVel, xVel - 1];
let dificuldade = 400;

//placar
let pontoP1 = 0;
let pontoP2 = 0;

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

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

function draw() {
  background(0);
  strokeWeight(0);

    //Bola
  Bola();
  moveBola();
  colideBorda();

    //Player
  raquete(xP1, yP1);  
  moveJogador();
  colisaoRaquete(xP1, yP1);

    //Oponent
  raquete(xP2, yP2);
  moveP2();
  colisaoRaquete(xP2, yP2);

    //Score
  criaPlacar();

}

function inicio(){
  xBola = 500;
  yBola = 200;
  xVel = random(xDirecao);
  yVel = random(yDirecao);
}

function Bola(){
  circle(xBola, yBola, dBola);
}

function moveBola(){
  xBola += xVel;
  yBola += yVel;
}

function colideBorda(){
  if (yBola + rBola >= height || yBola - rBola <= 0){
    yVel *= -1;
    mesa.play();
  }
  if (xBola - rBola < 0){
    inicio();
    pontoP2 += 1;
    ponto.play();
  }
  if (xBola + rBola > width){
    inicio();
    pontoP1 += 1;
    ponto.play();
    }
}

function raquete(x, y){
  rect (x, y, largP, altP);
}

function campo(x, y){
  rect (x, y, 15, 20);
}

function moveJogador(){
  if (keyIsDown(UP_ARROW)){
      yP1 -= 10;
    }
  if (keyIsDown(DOWN_ARROW)){
      yP1 += 10;
    }
}

function colisaoRaquete(x, y){

  colide = collideRectCircle(x, y, largP, altP, xBola, yBola, rBola)

  if (colide){
    xVel *= -1;
    raquetada.play();
  }
}

function moveP2(){
  if (xBola > 400 && xVel > 0){
    if(yP2 != yBola){
      if(yP2 < yBola){
        yP2 += random(velP2);
      }
      else{
        yP2 += random(velP2) * -1;
      }
    }
  }  
}

function criaPlacar(){
  fill(255);
  textSize(70);
  text(pontoP1, 200, 90);
  text(pontoP2, 600, 90);
}
1 resposta
O post foi fechado por inatividade. Para continuar o assunto, recomendamos criar um novo tópico. Bons Estudos!

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