4
respostas

Bola buga Atrás da Raquete

Estou tenta montando o jogo apara ser jogado em Multplay, mas estou me deparando com a seguinte situação. quando a bola passa da raquete, as vezes ela fica prasa atrás dela e nisso não para de contar pontos.

estou tentando pensar em uma forma de toda vez que um ponto for marcado, o console enviar a bola para posição inicial e retomar o jogo.


// Dados da bola
let xBall = 300;
let yBall = 200;
let dBall = 10;
let rBall = (dBall / 2);

//Dados Player 1
let xPlayer1 = 5;
let yPlayer1 = 170;
let widthPlayer1 = 5;
let heightPlayer1 = 60;

//Dados Player 2
let xPlayer2 = 590;
let yPlayer2 = 170;
let widthPlayer2 = 5;
let heightPlayer2 = 60;
let spedOfPlayertwo;


//Velocida bola
let xSpedOfTheBall = 6;
let ySpedOfTheBall = 6; 

//Placar
let scoresPlayer1 = 0;
let scoresPlayer2 = 0;


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


//Draw
function draw() {
  background(0);
  back();
  seeBall();
  touchTheMargin();
  playerOneMove();
  playerTowMove();
  touchPlayerOne();
  touchPlayerTwo();
  scoreboard();
  countPonits();  


}

//Bola
function seeBall(){
  fill(color(0,225,0));
  circle(xBall,yBall,dBall);
  xBall += xSpedOfTheBall;
  yBall += ySpedOfTheBall;
}

//Toque da bola na margem
function touchTheMargin(){
    if ( xBall+rBall > width || xBall < (0 + rBall)){
    xSpedOfTheBall *= -1;
  }

  if ( yBall+rBall  > height || yBall  < (0 + rBall)){
    ySpedOfTheBall *= -1;
  }   
}

//Movimentação Jogador 1
function playerOneMove(){
  fill(color(0,225,0));
  rect(xPlayer1,yPlayer1,widthPlayer1,heightPlayer1);
  if(keyIsDown(87)){
    yPlayer1 -= 10;
  }
  if(keyIsDown(83)){
    yPlayer1 += 10;
  }

}

//Movimentação Jogador 2
function playerTowMove(){
  fill(color(0,225,0));
  rect(xPlayer2,yPlayer2,widthPlayer2,heightPlayer2);
  if(keyIsDown(UP_ARROW)){
    yPlayer2 -= 10;
  }
  if(keyIsDown(DOWN_ARROW)){
    yPlayer2 += 10;
  }
}

//Toque no Jogador 1
function touchPlayerOne(){
    if(xBall - rBall < xPlayer1 + widthPlayer1 && yBall - rBall < yPlayer1 + heightPlayer1 && yBall + rBall > yPlayer1){
    xSpedOfTheBall *= -1;
  }
}

//Toque no Jogador 2
function touchPlayerTwo(){
    if(xBall + rBall > xPlayer2 && yBall + rBall < yPlayer2 + heightPlayer2 && yBall + rBall > yPlayer2){
    xSpedOfTheBall *= -1;
  }

}

//Placar
function scoreboard(){
  stroke(255);
  textAlign(CENTER);
  textSize(20);
  fill(color(255,140,0));
  rect(150,5,100,25);
  fill(255);
  text(scoresPlayer1,200,26);
  text( "X", 300,26);
  fill(color(255,140,0));
  rect(350,5,100,25);
  fill(255);
  text(scoresPlayer2,400,26);

}

//Contardor de Pontos
function countPonits(){
  if(xBall > 595){
    scoresPlayer1 += 1;
  }

  if(xBall < 5){
    scoresPlayer2 += 1;
  }
}


//Backgorund
function back(){
  fill(color(0,0,0));
  ellipse(300,200,600,300);
  circle(300,200,100);
  line(300,200,300,50);
  line(300,200,300,350);
}
4 respostas

Consegui.


// Dados da bola
let xBall = 300;
let yBall = 200;
let dBall = 10;
let rBall = (dBall / 2);

//Dados Player 1
let xPlayer1 = 5;
let yPlayer1 = 170;
let widthPlayer1 = 5;
let heightPlayer1 = 60;

//Dados Player 2
let xPlayer2 = 590;
let yPlayer2 = 170;
let widthPlayer2 = 5;
let heightPlayer2 = 60;
let spedOfPlayertwo;


//Velocida bola
let xSpedOfTheBall = 6;
let ySpedOfTheBall = 6; 

//Placar
let scoresPlayer1 = 0;
let scoresPlayer2 = 0;


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


//Draw
function draw() {
  background(0);
  back();
  seeBall();
  touchTheMargin();
  playerOneMove();
  playerTowMove();
  touchPlayerOne();
  touchPlayerTwo();
  scoreboard();
  countPonits();  


}

//Bola
function seeBall(){
  fill(color(0,225,0));
  circle(xBall,yBall,dBall);
  xBall += xSpedOfTheBall;
  yBall += ySpedOfTheBall;
}

//Toque da bola na margem
function touchTheMargin(){
    if ( xBall+rBall > width || xBall < (0 + rBall)){
    xSpedOfTheBall *= -1;
  }

  if ( yBall+rBall  > height || yBall  < (0 + rBall)){
    ySpedOfTheBall *= -1;
  }   
}

//Movimentação Jogador 1
function playerOneMove(){
  fill(color(0,225,0));
  rect(xPlayer1,yPlayer1,widthPlayer1,heightPlayer1);
  if(keyIsDown(87)){
    yPlayer1 -= 10;
  }
  if(keyIsDown(83)){
    yPlayer1 += 10;
  }

}

//Movimentação Jogador 2
function playerTowMove(){
  fill(color(0,225,0));
  rect(xPlayer2,yPlayer2,widthPlayer2,heightPlayer2);
  if(keyIsDown(UP_ARROW)){
    yPlayer2 -= 10;
  }
  if(keyIsDown(DOWN_ARROW)){
    yPlayer2 += 10;
  }
}

//Toque no Jogador 1
function touchPlayerOne(){
    if(xBall - rBall < xPlayer1 + widthPlayer1 && yBall - rBall < yPlayer1 + heightPlayer1 && yBall + rBall > yPlayer1){
    xSpedOfTheBall *= -1;
  }
}

//Toque no Jogador 2
function touchPlayerTwo(){
    if(xBall + rBall > xPlayer2 && yBall + rBall < yPlayer2 + heightPlayer2 && yBall + rBall > yPlayer2){
    xSpedOfTheBall *= -1;
  }

}

//Placar
function scoreboard(){
  stroke(255);
  textAlign(CENTER);
  textSize(20);
  fill(color(255,140,0));
  rect(150,5,100,25);
  fill(255);
  text(scoresPlayer1,200,26);
  text( "X", 300,26);
  fill(color(255,140,0));
  rect(350,5,100,25);
  fill(255);
  text(scoresPlayer2,400,26);

}

//Contardor de Pontos
function countPonits(){
  if(xBall > 595){
    scoresPlayer1 += 1;
    xBall = 300;
    yBall = 200;

  }

  if(xBall < 5){
    scoresPlayer2 += 1;
    xBall = 300;
    yBall = 200;
  }
}


//Backgorund
function back(){
  fill(color(0,0,0));
  ellipse(300,200,600,300);
  circle(300,200,100);
  line(300,200,300,50);
  line(300,200,300,350);
}

Olá, Arthur! Tudo bem com você?

Visualizei seu projeto e só posso afirmar que está incrível!!!

Indentação, nomenclatura de funções e variáveis tudo na língua inglesa e em nível profissional. Além disso, seu projeto ficou com uma estética muito bonita e interessante!

Tenho uma sugestão, você poderia utilizar o método setTimeout() do JavaScript para fazer com que a bolinha demore um pouquinho mais para reaparecer no centro da tela. :D

Parabéns! É muito bacana quando conseguimos acompanhar o progresso de alunos dedicados como você, pode ter certeza que seu esforço trará grandes resultados!

Um forte abraço, bons estudos e avante!!

Como ficaria ?

algo assim ?

//Contardor de Pontos
function countPonits(){
  if(xBall > 595){
    scoresPlayer1 += 1;
    setTimeout(returnBall(),3000);
  }
  if(xBall < 5){
    scoresPlayer2 += 1;
    returnBall();
    setTimeout(returnBall(),3000);
  }
}

 //Retorno da Bola ao centro
function returnBall(){
  xBall = 300;
  yBall = 200; 
}

Oi oi, Arthur!

Isso mesmo, apenas retire os parênteses dentro do método setTimeout e funcionará, vou deixar o código aqui:

function countPonits(){
  if(xBall > 595){
    scoresPlayer1 += 1;
    setTimeout(returnBall,500);
  }
  if(xBall < 5){
    scoresPlayer2 += 1;
    setTimeout(returnBall,500);
  }
}

Espero que tenha ajudado!

Divirta-se bastante e bons estudos!

Ah, parabéns novamente pelo jogo! :D