2
respostas

[Dúvida] quando substituo as variáveis no código ele deixa de funcionar !!

// variáveis da bola
let xBolinha = 300;
let yBolinha = 200;
let diametro = 20;
let raio = diametro/2

// velocidade da bola
let veloXBola = 2;
let veloYBola = 6;

// variáveis da raquete
let xRaquete = 5;
let yRaquete = 150;
let raqueteComp = 10;
let raqueteAlt = 80;

//variáveis colisao bola
let esquerdaBolinha = xBolinha - raio;
let superiorBolinha = yBolinha - raio;
let inferiorBolinha = yBolinha + raio;

//variáveis colisao raquete
let direitaRaquete = xRaquete + raqueteComp;
let superiorRaquete = yRaquete;
let inferiorRaquete = yRaquete + raqueteAlt;

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

function draw() {
  background(0);
  drawball();
  movball();
  verifycolison();
  drawrect();
  movRaquete1();
  colisaoRaquete1();

function drawball(){
  circle(xBolinha,yBolinha,diametro);
}  

function movball(){
  xBolinha += veloXBola;
//  yBolinha += veloYBola;

}
  
function verifycolison(){
 if (xBolinha + raio > width||
  xBolinha - raio < 0) {
  veloXBola *= -1;
}

if (yBolinha + raio  > height ||
   yBolinha - raio < 0){
   veloYBola *= -1;
} 
}
  
function drawrect(){
  rect(xRaquete,yRaquete,raqueteComp,raqueteAlt) 
}
  
function movRaquete1(){
  if (keyIsDown(UP_ARROW))
    yRaquete -= 10;
} 
  if (keyIsDown(DOWN_ARROW)){
    yRaquete += 10;
  }

function colisaoRaquete1(){
  if (xBolinha - raio < xRaquete + raqueteComp &&
      yBolinha - raio < yRaquete + raqueteAlt &&
      yBolinha + raio > yRaquete){
      veloXBola *= -1;
  }
}

}

pelo que conferi a sintaxe esta correta mas nao acho o problema, alguem pode dar um help !! obrigado

2 respostas

Opa Alan, tudo ok?

Bom, não tem muito erro ali, só que há chaves de fechamento (}) fora do lugar. Vou reorganizar o código para garantir que as funções estejam corretamente encapsuladas. Aqui está o código revisado:

// variáveis da bola
let xBolinha = 300;
let yBolinha = 200;
let diametro = 20;
let raio = diametro / 2;

// velocidade da bola
let veloXBola = 2;
let veloYBola = 6;

// variáveis da raquete
let xRaquete = 5;
let yRaquete = 150;
let raqueteComp = 10;
let raqueteAlt = 80;

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

function draw() {
  background(0);
  drawball();
  movball();
  verifycolison();
  drawrect();
  movRaquete1();
  colisaoRaquete1();
}

function drawball() {
  circle(xBolinha, yBolinha, diametro);
}

function movball() {
  xBolinha += veloXBola;
  yBolinha += veloYBola;
}

function verifycolison() {
  if (xBolinha + raio > width || xBolinha - raio < 0) {
    veloXBola *= -1;
  }

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

function drawrect() {
  rect(xRaquete, yRaquete, raqueteComp, raqueteAlt);
}

function movRaquete1() {
  if (keyIsDown(UP_ARROW)) {
    yRaquete -= 10;
  }

  if (keyIsDown(DOWN_ARROW)) {
    yRaquete += 10;
  }
}

function colisaoRaquete1(){
  if (xBolinha - raio < xRaquete + raqueteComp &&
      yBolinha - raio < yRaquete + raqueteAlt &&
      yBolinha + raio > yRaquete) {
      veloXBola *= -1;
  }
}

Certifique-se de copiar e colar esse código corrigido em seu editor p5.js. Isso deve resolver os problemas de organização e garantir que as funções sejam chamadas corretamente.

  1. Eu corrigi a posição das chaves de fechamento para garantir que as funções estivessem corretamente encapsuladas dentro de draw().

    • Antes:
      function draw() {
        // ...
      
    • Depois:
      function draw() {
        // ...
      }
      
  2. Eu movi a verificação do pressionamento das teclas e a atualização da posição da raquete para dentro da função movRaquete1() para garantir que a raquete se mova corretamente.

    • Antes:
      function movRaquete1() {
        if (keyIsDown(UP_ARROW))
          yRaquete -= 10;
      } 
      if (keyIsDown(DOWN_ARROW)){
        yRaquete += 10;
      }
      
    • Depois:
      function movRaquete1() {
        if (keyIsDown(UP_ARROW)) {
          yRaquete -= 10;
        }
        if (keyIsDown(DOWN_ARROW)) {
          yRaquete += 10;
        }
      }
      

Essas correções foram feitas para garantir que as estruturas de controle de fluxo estivessem corretas e que as funções fossem chamadas nos momentos certos, evitando problemas de execução.

Era isso, se precisar é só chamar.

Abraços e bons estudos.

Ah sim entendi Renan, muito obrigado !!