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

duvidas estrema

o meu projeto não esta funcional e eu não consigo descobri no p5 js web a previa que deveria mostra como programação esta ficando não é mostrada impedindo saber o que tá acontecendo , tenho que corrigi este problema pra concluir as tarefas do curso. meu link é https://editor.p5js.org/jor444rr/sketches/41WOCEhJY

3 respostas

Olá Jorge, tudo bem contigo?

Eu analisei o que o console estava dizendo e, na verdade, o que aconteceu foi somente alguns erros de sintaxe e digitação.

Eu vou deixar o código corrigido abaixo e peço que você verifique as mudanças feitas e no documento index.html precisa de uma mudança que será indicada lá no fim da resposta, leia tudo e faça o que se pede.

Aqui está o código corrigido e as mudanças feitas, copie ele e cole no lugar do seu código original, eu só alterei algumas coisinhas, mas se desejar leias as mudanças que fiz nesse código e tente consertar o seu:

//variáveis da Bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 15;
let raio = diametro / 2;

//velocidade da bolinha
let velocidadexBolinha = 6;
let velocidadeyBolinha = 6;

//variáveis da raquete
let xRaquete = 5;
let yRaquete = 150;
let raqueteComprimento = 10;
let raqueteAltura = 90;

//variáveis do oponente
let xRaqueteOponente = 585;
let yRaqueteOponente = 150;
let velocidadeYOponente;


let colidiu = false;

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

function draw() {
  background(0);
  mostraBolinha();
  movimentaBola();
  verificaColisaoBorda();
  mostraRaquete(xRaquete, yRaquete);
  movimentaMinhaRaquete();
  verificaColisaoRaquete();
  colisaoMinhaRaqueteBiblioteca();
  mostraRaquete(xRaqueteOponente, yRaqueteOponente);
  movimentaRaqueteOponente();
}

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

function movimentaBola() {
  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;
  }
}

function colisaoMinhaRaqueteBiblioteca() {
  colidiu = collideRectCircle(xRaquete, yRaquete, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio);
  if (colidiu) {
    velocidadexBolinha *= -1;
  }
}

function movimentaRaqueteOponente() {
  velocidadeYOponente = yBolinha - yRaqueteOponente - raqueteComprimento / 2 - 30;
  yRaqueteOponente += velocidadeYOponente;
}

Mudanças feitas:

  • Corrigido uma sintaxe problemática em draw() adicionando as chaves {} para definir o escopo da função;
  • Corrigido uma digitação problemática em movimentaBorda(), alterando para movimentaBola();
  • Corrigido uma digitação problemática em verificaColisaoBolinha(), alterando ybolinha para yBolinha;
  • Corrigido uma sintaxe problemática em mostraRaquete(x, y), removendo a vírgula após raqueteComprimento;
  • Corrigido uma digitação problemática em movimentaMinhaRaquete(), alterando keIsDown para keyIsDown;
  • Corrigido uma digitação problemática em verificaColisaoRaquete(), alterando velocidadexBolinha para velocidadexBolinha;
  • Corrigido uma digitação problemática em colisaoMinhaRaqueteBiblioteca(), alterando raqueteComprimente para raqueteComprimento;
  • Corrigido uma digitação problemática em movimenteRaqueteOponente(), alterando velocidadeYOponente para velocidadeYOponente;

Mudanças que você precisara fazer:

  • No index.html corrija <script src="p5 collide2d.js"></script> para <script src="p5.collide2d.js"></script>.

Em suma era isso, espero ter ajudado!

Caso precise de auxílio adicional me avise, eu estarei aqui!

Abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor marque ele como solução! ✓

as 3 ultimas questões eu não sei se você reparo mas ,(alterando velocidadexBolinha para velocidadexBolinha,alterando raqueteComprimente para raqueteComprimento,alterando velocidadeYOponente para velocidadeYOponente) vc pediu nas três questões que muda-se para mesma coisa, afinal é pra mudar ou manter como esta. outra coisa a citar é (adicionando as chaves {} para definir o escopo da função;) que eu não entendi o que você quis dizer com isto poderia ser mais claro

solução!

Olá Jorge, tudo bem contigo?

Peço desculpas pela confusão causada pelas redundâncias. Houve alguns equívocos na minha resposta anterior, e agradeço por apontar o erro. Aqui estão as três mudanças corretas que foram feitas:

  1. Corrigido um erro de digitação em verificaColisaoRaquete(), alterando velocidadexBolinha para velocidadeyBolinha.

    function verificaColisaoRaquete() {
      if (xBolinha - raio < xRaquete + raqueteComprimento && yBolinha - raio < yRaquete + raqueteAltura && yBolinha + raio > yRaquete) {
        velocidadeyBolinha *= -1;
      }
    }
    
  2. Corrigido um erro de digitação em colisaoMinhaRaqueteBiblioteca(), alterando raqueteComprimente para raqueteComprimento.

    function colisaoMinhaRaqueteBiblioteca() {
      colidiu = collideRectCircle(xRaquete, yRaquete, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio);
      if (colidiu) {
        velocidadexBolinha *= -1;
      }
    }
    
  3. Corrigido um erro de digitação em movimentaRaqueteOponente(), alterando velocidadeYOponente para velocidadeYOponente.

    function movimentaRaqueteOponente() {
      velocidadeYOponente = yBolinha - yRaqueteOponente - raqueteComprimento / 2 - 30;
      yRaqueteOponente += velocidadeYOponente;
    }
    

Quanto à minha frase "adicionando as chaves {} para definir o escopo da função", eu vou explicar o uso das chaves {} para definir o escopo de uma função em JavaScript.

As chaves {} são usadas para delimitar o bloco de código de uma função em JavaScript. Elas são importantes porque indicam onde começa e onde termina o escopo dessa função. O escopo define quais variáveis e instruções são acessíveis dentro da função.

Sem as chaves, o bloco de código seria considerado apenas a primeira instrução após a declaração da função. Isso significa que apenas essa instrução seria parte do escopo da função, e o restante do código seria executado fora do escopo da função. Isso pode levar a resultados inesperados e comportamento indesejado do programa.

No exemplo fornecido inicialmente, a função draw() estava sem as chaves, o que fazia com que apenas a instrução background(0); fosse considerada parte do escopo da função draw(), enquanto as demais funções e instruções ficavam fora do escopo da função. Ao adicionar as chaves corretamente, todas as instruções e funções passam a fazer parte do escopo da função draw().

Aqui está o exemplo corrigido com as chaves corretamente adicionadas:

function draw() {
  background(0);
  mostraBolinha();
  movimentaBola();
  verificaColisaoBorda();
  mostraRaquete(xRaquete, yRaquete);
  movimentaMinhaRaquete();
  verificaColisaoRaquete();
  colisaoMinhaRaqueteBiblioteca();
  mostraRaquete(xRaqueteOponente, yRaqueteOponente);
  movimentaRaqueteOponente();
}

Neste exemplo, todas as instruções e chamadas de função estão dentro das chaves {} da função draw(), indicando que fazem parte do escopo dessa função.

No geral era isso, espero ter explicado tudo bem!

Se tiver mais alguma dúvida, estou aqui para ajudar.

Abraços e bons estudos.