2
respostas

Sugestão para conseguir fazer pontos

Olá pessoal como vai? Uma sugestão para criar chance de erro do oponente

function chanceDeErro(x){
  if (x <25){
      chanceDeErrar = random(-80,80)
  }     
}

criei uma variável para armazenar o valor sorteado

// função movimento do oponente 
function  movimentoRaqueteOponente(){
  velocidadeYdoOponente = yBolinha - yRaqueteOponente - alturaRaquete / 2;

  yRaqueteOponente += velocidadeYdoOponente + chanceDeErrar;
}

somei ele ao movimento da raquete do oponente

function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  verificaColisaoBorda();
  mostraRaquete(xRaquete, yRaquete);
  mostraRaquete(xRaqueteOponente, yRaqueteOponente);
  movimentoDaRaquete();
  colisaoPorBiblioteca(xRaquete,yRaquete);
  colisaoPorBiblioteca(xRaqueteOponente,yRaqueteOponente);
  //movimentoDaRaqueteOpomenteMultiplayer();
  movimentoRaqueteOponente();
  chanceDeErro(xBolinha);
 //verificaColisaoComRaquete();//solução criado pelo professor
  incluirPlacar();
  marcaPonto()   
}

e chamei a função com o 'x' da bolinha como parâmetro.

e porque o 'x' da bolinha segui o mesma logica da marcação do ponto se a bolinha passar da posição x da bolinha a função ou ferramente (não sei o nome certo rsrsrs ) "random" sorteia os valores

é isso pessoal espero que possa ajudar alguém, Deus abençoe!

2 respostas

o código completo

//variaveis da bolinha 
let xBolinha = 300;  let yBolinha = 200;  let diametro = 20;

//velocidade da bolinha
let velocidadeXBolinha = 5;  let velocidadeYBolinha = 5;

//para bolinha nao entrar nas bordas
let raio = diametro / 2;

//variaveis da raquete
let xRaquete = 10;  let yRaquete = 150;

//dimensões das raquetes
let larguraRaquete = 6;  let alturaRaquete = 100;  let raioDosCantos = 2.5;
let paredaRaquete = larguraRaquete/2

//variaveis da raquete do oponente
let xRaqueteOponente = 585;  let yRaqueteOponente = 150;
let velocidadeYdoOponente;
let chanceDeErrar = 0;

//variavel da colisão
let colidiu = false;

// sons do jogo
let raquetada;
let ponto;
let trilha;

//pre carrega o som do jogo
function preload(){
  trilha = loadSound("trilha.mp3");
  ponto = loadSound("ponto.mp3");
  raquetada = loadSound("raquetada.mp3")
}

//placar do jogo
let meusPontos = 0;  let pontosOponente = 0;

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

function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  verificaColisaoBorda();
  mostraRaquete(xRaquete, yRaquete);
  mostraRaquete(xRaqueteOponente, yRaqueteOponente);
  movimentoDaRaquete();
  colisaoPorBiblioteca(xRaquete,yRaquete);
  colisaoPorBiblioteca(xRaqueteOponente,yRaqueteOponente);
  //movimentoDaRaqueteOpomenteMultiplayer();
  movimentoRaqueteOponente();
  chanceDeErro(xBolinha);
 //verificaColisaoComRaquete();//solução criado pelo professor
  incluirPlacar();
  marcaPonto()   
}

//função montra a bolinha na tela 
function mostraBolinha(){
  circle(xBolinha,yBolinha,diametro);
}
//função comanda o movimento da bolinha
function movimentaBolinha(){
  xBolinha +=  velocidadeXBolinha;
  yBolinha +=  velocidadeYBolinha;
}
//função para verificar o limite das bordas para a bolinha 
function verificaColisaoBorda(){
  if(xBolinha + raio > width || xBolinha - raio < 0){
    velocidadeXBolinha *= -1; 
  }
  if(yBolinha + raio > height || yBolinha - raio < 0){
    velocidadeYBolinha *= -1;  
  }
}
//função para mostrar a raquete
function mostraRaquete(x ,y){
  rect(x, y, larguraRaquete, alturaRaquete, raioDosCantos);
}
//função movimento da raquete
function movimentoDaRaquete(){
  if (keyIsDown(DOWN_ARROW)) {
    yRaquete += 5;
  }
  if (keyIsDown(UP_ARROW)){
      yRaquete -= 5;
      }
}
//função comanda a colisão da bola com a raquete
function verificaColisaoComRaquete(){
  if (xBolinha - raio < xRaquete + larguraRaquete && yBolinha - raio < yRaquete + alturaRaquete && yBolinha + raio > yRaquete){
    velocidadeXBolinha *= -1; 
    raquetada.play();
}
}
// função que e identifica colisão da bolinha com as raquetes
function colisaoPorBiblioteca(x,y){
  colidiu = collideRectCircle(x,y,larguraRaquete, alturaRaquete,xBolinha,yBolinha,raio);

if (colidiu){
  velocidadeXBolinha *= -1;
  raquetada.play();
  }
}
// função movimento do oponente 
function  movimentoRaqueteOponente(){
  velocidadeYdoOponente = yBolinha - yRaqueteOponente - alturaRaquete / 2;

  yRaqueteOponente += velocidadeYdoOponente + chanceDeErrar;
}
//função coloca o placar 
function incluirPlacar(){
  stroke(255)
  textAlign(CENTER)
  textSize(22);
  fill(color(255,140,0))
  rect(130,3,40,30,10);
  fill(255);
  text(meusPontos,150, 25);
  fill(color(255,140,0))
  rect(430,3,40,30,10);
  fill(255);
  text(pontosOponente,450, 25);
}
//função para marcas os pontos do jogo
function marcaPonto(){
  if (xBolinha > 594){
    meusPontos ++ 
    ponto.play();
  }
  if (xBolinha <6){
    pontosOponente ++ 
    ponto.play();   
  }
}
//função movimento da raquete do opomente com 'W' e 'S'
function movimentoDaRaqueteOpomenteMultiplayer(){
  if (keyIsDown(83)) {
    yRaqueteOponente += 5;
  }
  if (keyIsDown(87)){
      yRaqueteOponente -= 5;
      }
}
function chanceDeErro(x){
  if (x <25){
      chanceDeErrar = random(-80,80)
  }     
}

Oiê Alison, tudo bem?

Agradeço por esperar um retorno nosso!

Seu código está muito bom! Apresenta boa estrutura, está organizado, condizente com o que foi passado pelo instrutor, e isso mostra o quão comprometido(a) você está com o curso. Parabéns!

Com certeza sua sugestão ajudará outros(as) alunos(as), agradeço por ter compartilhado o seu código.

Recomendo, caso se sinta confortável em compartilhar seu conhecimento, interagir com outros estudantes, trocar experiências e fazer networking, que participe do Discord oficial da Alura de alunas e alunos:

Caso tenha dúvidas, estarei à disposição para te ajudar!

Bons estudos e a gente se vê!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado! ✓.