1
resposta

RAQUET FICANDO PRESA NA PARTE DE CIMA DA TELA

// variaveis da bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametroBolinha = 20;
let raio = diametroBolinha / 2;

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

 // variaveis da raquete
let xRaquete = 5;
let yRaquete = 150;
let raqueteLargura = 10;
let raqueteAltura = 80;

 // variaveis do oponente ``
let xRaqueteOponente = 580;
let yRaqueteOponente = 150;
let velocidadeYOponente = 250;

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

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

function draw() {
  background(0);
  mostrarBolinha();
  movimentaBolinha();
  verificaColisaoBorda();
  mostraRaquete(xRaquete, yRaquete);
  mostraRaquete(xRaqueteOponente, yRaqueteOponente);
  movimentaMinhaRaquete();
  movimentaRaqueteOponente();
  verificaColisaoRaquete();
  verificaColisaoRaqueteOponente();
  incluiPlacar();
}

function mostrarBolinha(){
  circle(xBolinha, yBolinha, diametroBolinha);
}

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, raqueteLargura, 
         raqueteAltura);
}

function movimentaMinhaRaquete() {
    if (keyIsDown(UP_ARROW)) {
        yRaquete -= 10;
      if (yRaquete <= 0){
        yRaquete = 0;
      }
    }
    if (keyIsDown(DOWN_ARROW)) {
        yRaquete += 10;
      if (yRaquete + raqueteAltura >= height){
        yRaquete = height - raqueteAltura;
      }
    }
}

 function movimentaRaqueteOponente(){
    velocidadeYOponente = yBolinha - yRaqueteOponente - raqueteAltura / 2 - 30;
  yRaqueteOponente += velocidadeYOponente;
  if (yRaqueteOponente <= 0){
      yRaqueteOponente = 0;
  }
  if (yRaqueteOponente + raqueteAltura >= height){
      yRaqueteOponente =  height - raqueteAltura;
  }
}

function verificaColisaoRaquete(){
  if (xBolinha - raio < xRaquete + raqueteLargura
&& yBolinha - raio < yRaquete + raqueteAltura &&
yBolinha + raio > yRaquete){
    velocidadeXBolinha *= -1
  }
}

function verificaColisaoRaqueteOponente(){
  if (xBolinha + raio > xRaqueteOponente && yBolinha - raio 
< yRaqueteOponente + raqueteAltura &&
yBolinha + raio > yRaqueteOponente){
    velocidadeXBolinha *= -1
  }
}

function incluiPlacar(){
  fill (255)
  text (meusPontos, 278, 26)
  text (pontosDoOponente, 321, 26)
}

Alguém sabe me dizer o que esta errado, que esta fazendo com que a raquete fique presa na parte superior da tela ?

1 resposta

Olá, Nathalia, tudo bem?

Editei seu post utilizando a ferramenta </> daqui do fórum, para o seu código ficar legível e estruturado. Caso, queira aprender mais funcionalidades, deixo esse vídeo de como turbinar os estudos utilizando o fórum:

Não sei se entendi exatamente o que você quis dizer, mas se estiver se referindo ao fato de que as raquetes não ultrapassam as bordas de cima e de baixo do jogo, basta comentar o trecho que faz essa verificação nas funções de movimentação:

function movimentaMinhaRaquete() {
    if (keyIsDown(UP_ARROW)) {
      yRaquete -= 10;
      // if (yRaquete <= 0){
      //   yRaquete = 0;
      // }
    }

    if (keyIsDown(DOWN_ARROW)) {
      yRaquete += 10;
      // if (yRaquete + raqueteAltura >= height){
      //   yRaquete = height - raqueteAltura;
      // }
    }
}

 function movimentaRaqueteOponente(){
    velocidadeYOponente = yBolinha - yRaqueteOponente - raqueteAltura / 2 - 30;
  yRaqueteOponente += velocidadeYOponente;
  // if (yRaqueteOponente <= 0){
  //     yRaqueteOponente = 0;
  // }
  // if (yRaqueteOponente + raqueteAltura >= height){
  //     yRaqueteOponente =  height - raqueteAltura;
  // }
}

Porém, pessoalmente, acho que o jogo fica mais interessante da forma que você programou!

Me deixa saber se era isso mesmo que você quis dizer!

Espero ter ajudado.

Abraços,

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