Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Ajuda ai

Fiz o código com foi pedido, mas não tenho certeza se está correto. Não consegui arrumar o erro da bolinha ficar presa atrás da minha raquete, se puderem me auxiliar com esse erro agradeço. Também quero saber, se o código está correto como foi pedido.


//Variaveis de movimento
let velocidadeXBolinha = 6;
let velocidadeYBolinha = 6;
let raqueteComprimento = 10;
let raqueteAltura = 90;

//Variaveis da raquete
let xRaquete = 5;
let yRaquete = 150;

// Variaveis do oponente
let xRaqueteOponente = 585;
let yRaqueteOponente = 150;
let velocidadeyOponente;

let colidiu = false;

//Placar do Jogo
let meusPontos = 0;
let pontosDoOponente = 0;

//Sons Jogo
let raquetada;
let ponto;
let trilha;

//raquete oponente erro
let chanceDeErrar = 0;

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

}

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

function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  verificaColisaoBorda();
  mostraRaquete(xRaquete, yRaquete);
  movimentaMinhaRaquete();
  //verificaColisaoRaquete();
  verificaColisaoRaquete(xRaquete, yRaquete);
  mostraRaquete(xRaqueteOponente, yRaqueteOponente);
  movimenteRaqueteOponente();
  verificaColisaoRaquete(xRaqueteOponente, yRaqueteOponente);
  incluiPlacar();
  marcaPonto();
}

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 mostraRaquete(x,y){
  rect(x,y, raqueteComprimento, raqueteAltura);
}

function movimentaMinhaRaquete(){
  if(keyIsDown (UP_ARROW)){
    yRaquete -= 10;
  } 
  if(keyIsDown (DOWN_ARROW)){
    yRaquete += 10;
  } 
}

function verificaColisaoRaquete(){
  if (xBolinha - raio < xRaquete + raqueteComprimento && yBolinha - raio < yRaquete + raqueteAltura && yBolinha + raio > yRaquete){
    velocidadeXBolinha *= -1;
    raquetada.play();
  }
}

function verificaColisaoRaquete(x, y){
  colidiu = collideRectCircle(x,y,raqueteComprimento,raqueteAltura,xBolinha,yBolinha,raio);
  if(colidiu){
    velocidadeXBolinha *= -1;
    raquetada.play();
  }
}


function movimenteRaqueteOponente(){
  velocidadeyOponente = yBolinha - yRaqueteOponente - raqueteComprimento /2 - 30;
  yRaqueteOponente += velocidadeyOponente + chanceDeErrar
  calculaChanceDeErrar();
}

function incluiPlacar(){
  stroke(255);
  textAlign(CENTER);
  textSize(17); 
  fill(color(255,140,0));
  rect(150, 10, 40, 20);
  fill(255);
  text(meusPontos,170, 26);
  fill(color(255,140,0));
  rect(450, 10,40, 20);
  fill(255);
  text(pontosDoOponente, 470, 26);
}

function marcaPonto(){
  if(xBolinha > 590){
    meusPontos += 1;
    ponto.play();
  }
  if(xBolinha < 10){
    pontosDoOponente += 1;
    ponto.play();
  }
}

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

Boa noite, Maurício!

Seu código está correto, sim. Você só não conseguiu arrumar o erro da colisão porque o seu "verificaColisaoRaquete();" na função "draw()" está com as duas barras "//" na frente, ou seja, essa parte do código tá comentada.

Retire essas duas barras e rodo o código.

solução!

E ai Maurício, blz?

Sobre a bolinha não ficar presa atrás da raquete, tenta usar essa função que criei, e não esquece de inserir ela na sua function draw.

function bolinhaNaoFicaPresa(){ if (xBolinha + raio < 0){ xBolinha = 300; } }