2
respostas

Função de movimentação da raquete do oponente nao funciona como deveria.

Na reprodução do jogo Pong a raquete do oponente está sumindo da tela em vez de acomponhar a coordenada Y da bolinha.

// Variaveis da Bolinha
  let xbolinha = 300;
  let ybolinha = 200;
  let diametro = 20;
  let raio= diametro/2;

// Variaveis da Raquete  
  let xraquete= 0;
  let yraquete=150;  
  let raquetealtura= 10;
  let raquetecomprimento = 100;

// Variaveis da Raquete do Oponente
  let xraqueteoponente= 585
  let yraqueteoponente= 150
  let colidiu = false;
  let velocidadey_oponente;

//Variaveis de Velocidade
  let velocidadexbolinha= 6;
  let velocidadeybolinha= 6;

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

function draw() {

//Variaveis Backgroud  
  background(0);  // 1- Cordo fundo do backgroud.
  mostra_bolinha();  // 2- Mostra a bolinha.
  mov_bolinha();  // 3- Movimenta a bolinha.
  cond_impact();  // 4- Verifica a colisão da bolinha.
  mostra_raquete(xraquete,yraquete);
  mostra_raquete(xraqueteoponente,yraqueteoponente);
  mov_raquete();
  mov_raq_op();

 // impact_raq();
  colisao();

  // 5- Volta para o inicio da função draw

//Funções da Bolinha   
  function mostra_bolinha(){
    circle(xbolinha, ybolinha, diametro);
  } //Define o posicionamento no plano e sua dimensão.
  function mov_bolinha(){
  xbolinha += velocidadexbolinha;
  ybolinha += velocidadeybolinha;
  }  // Define a velocidade de movimentação da bolinha em X e Y.
  function cond_impact(){
      if (xbolinha + raio> width ||
      xbolinha - raio<0){
  velocidadexbolinha*= -1;    
  }

  if (ybolinha + raio > height||
      ybolinha - raio<0){
    velocidadeybolinha *= -1;
  }

  }  // Define a condição de impacto perante as bordas da tela.

//Funções Raquete
  function mostra_raquete(x,y){
    rect(x, y, raquetealtura, raquetecomprimento);
  }  //Define o posicionamento no plano e sua dimensão.

  function mov_raquete(){
    if(keyIsDown(UP_ARROW)){
      yraq -= 10;
    }
    if(keyIsDown(DOWN_ARROW)){
      yraq += 10;
  }

}  // Define a velocidade de movimentação da bolinha em X e Y.
  function impact_raq(){
    if (xbolinha - raio < xraq + raquetealtura
       && ybolinha -raio < yraq+ raquetecomprimento
       && ybolinha+ raio > yraq){
      velocidadexbolinha *= -1;
    }
  }      
  function colisao(){
    colidiu=
    collideRectCircle(xraquete, yraquete, raquetealtura, raquetecomprimento, xbolinha, ybolinha, raio);
    if (colidiu){
      velocidadexbolinha *= -1
    }
  }

  function mov_raq_op(){
  velocidadey_oponente = yraqueteoponente - ybolinha - raquetecomprimento / 2 - 30;
    yraqueteoponente += velocidadey_oponente
  }
}

alguem poderia me informar qual o erro da função da linha 95?

2 respostas

Resolvi o problema, era erro de sintaxe da variável, segue Código.

// Variaveis da Bolinha
  let xbolinha = 300;
  let ybolinha = 200;
  let diametro = 20;
  let raio= diametro/2;

// Variaveis da Raquete  
  let xraquete= 0;
  let yraquete=150;  
  let raquetecomprimento= 10;
  let raquetealtura = 100;

// Variaveis da Raquete do Oponente
  let xraqueteoponente= 585
  let yraqueteoponente= 150
  let colidiu = false;
  let velocidadey_oponente;

//Variaveis de Velocidade
  let velocidadexbolinha= 6;
  let velocidadeybolinha= 6;

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

function draw() {

//Variaveis Backgroud  
  background(0);  // 1- Cordo fundo do backgroud.
  mostra_bolinha();  // 2- Mostra a bolinha.
  mov_bolinha();  // 3- Movimenta a bolinha.
  cond_impact();  // 4- Verifica a colisão da bolinha.
  mostra_raquete(xraquete,yraquete);
  mostra_raquete(xraqueteoponente,yraqueteoponente);
  mov_raquete();
  mov_raq_op();

 // impact_raq();
  colisao();

  // 5- Volta para o inicio da função draw

//Funções da Bolinha   
  function mostra_bolinha(){
    circle(xbolinha, ybolinha, diametro);
  } //Define o posicionamento no plano e sua dimensão.
  function mov_bolinha(){
  xbolinha += velocidadexbolinha;
  ybolinha += velocidadeybolinha;
  }  // Define a velocidade de movimentação da bolinha em X e Y.
  function cond_impact(){
      if (xbolinha + raio> width ||
      xbolinha - raio<0){
  velocidadexbolinha*= -1;    
  }

  if (ybolinha + raio > height||
      ybolinha - raio<0){
    velocidadeybolinha *= -1;
  }

  }  // Define a condição de impacto perante as bordas da tela.

//Funções Raquete
  function mostra_raquete(x,y){
    rect(x, y, raquetecomprimento, raquetealtura);
  }  //Define o posicionamento no plano e sua dimensão.

  function mov_raquete(){
    if(keyIsDown(UP_ARROW)){
      yraquete -= 10;
    }
    if(keyIsDown(DOWN_ARROW)){
      yraquete += 10;
  }

}  // Define a velocidade de movimentação da bolinha em X e Y.
  function impact_raq(){
    if (xbolinha - raio < xraq + raquetecomprimento
       && ybolinha -raio < yraquete+ raquetealtura
       && ybolinha+ raio > yraquete){
      velocidadexbolinha *= -1;
    }
  }      
  function colisao(){
    colidiu=
    collideRectCircle(xraquete, yraquete, raquetecomprimento, raquetealtura, xbolinha, ybolinha, raio);
    if (colidiu){
      velocidadexbolinha *= -1
    }
  }

  function mov_raq_op(){
  velocidadey_oponente = ybolinha - yraqueteoponente - raquetealtura / 2 - 30;
    yraqueteoponente += velocidadey_oponente
  }
}

Oi Thalis, tudo bem?

Obrigado pela paciência em aguardar uma resposta!

Fico feliz que tenha conseguido uma solução para o seu problema. Os erros de sintaxe as vezes nos tiram do sério. É uma boa ideia mudar um pouco o foco da atenção por algum tempo e depois observar o código novamente, com a mente descansada.

Caso se sinta confortável para interagir com outros estudantes, trocar experiências e fazer networking, que participe do Discord oficial da Alura de alunas e alunos:

Continue se dedicando em seus estudos e caso tenha outras dúvidas em sua jornada, estarei à disposição para te ajudar!

Grande abraço e bons estudos!