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

A função da raquete não está sendo reconhecida

Fiz exatamente como na instrução, mas, após definir a função da raquete, o codigo não mais funciona e aparece como "There's an error due to "variaveisRaquete" not being defined in the current scope". Segue abaixo o código.

let xbolinha= 300; let ybolinha= 220; let diametro= 15;

let raio = diametro/2; let velocidadeXBolinha =2; let velocidadeYBolinha = 2;

let xraquete = 5 let yraquete = 150 let comprimentoraquete = 7 let alturaraquete = 90

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

function draw() { background(0); desenhoBolinha (); movimentacaoBolinha (); verificacaoColisaoBolinha (); variaveisRaquete () }

function desenhoBolinha () { circle (xbolinha, ybolinha, diametro); }

function movimentacaoBolinha () { xbolinha += velocidadeXBolinha ybolinha += velocidadeYBolinha }

function verificacaoColisaoBolinha () { if (xbolinha + raio > width || xbolinha - raio < 0) { velocidadeXBolinha *= -1} if (ybolinha + raio > height || ybolinha - raio < 0) { velocidadeYBolinha *= -1}

function variaveisRaquete () { rect (xraquete, yraquete, comprimentoraquete, alturaraquete )}

3 respostas

Olá, Fábio! Tudo bem com você?

Verifiquei seu código e percebi que apenas faltou fechar o escopo corretamente da função. Olha só:

function verificacaoColisaoBolinha () {
  if (xbolinha + raio > width ||
     xbolinha - raio < 0) {
    velocidadeXBolinha *= -1}
  if (ybolinha + raio > height ||
     ybolinha - raio < 0) {
    velocidadeYBolinha *= -1

  }
}

Depois do erro corrigido, o projeto funcionou normalmente.

Outra dica bacana é utilizar a ferramenta inserir bloco de código aqui do fórum. Assim seu código ficará indentado e possibilitará a verificação de erros com mais rapidez.

Vou deixar também um link que redireciona para um tópico que ensina sua utilização: *Link com tutorial para usar botão inserir bloco de código: *

Espero que tenha ajudado!

Um abraço e bons estudos!

Desculpa camila, mas ainda não entendi. Tentei ver item por item e ainda não funcionou. Sinto que estou cego para algum detalhe que pode parecer óbvio, mas que para mim escapa. Desculpe, mas você poderia ser ainda mais clara? Tipo circular ou assinalar o local onde o erro está localizado.

PS: Agora inserir o codigo corretamente. :D

function draw() {
  background(0);
  desenhoBolinha ();
  //movimentacaoBolinha ();
  verificacaoColisaoBolinha ();
  variaveisRaquete
  }


function desenhoBolinha () {
  circle (xbolinha, ybolinha, diametro);
}

function movimentacaoBolinha () {
  xbolinha += velocidadeXBolinha
  ybolinha += velocidadeYBolinha
}

function verificacaoColisaoBolinha () {
  if (xbolinha + raio > width ||
     xbolinha - raio < 0) {
    velocidadeXBolinha *= -1}
  if (ybolinha + raio > height ||
     ybolinha - raio < 0) {
    velocidadeYBolinha *= -1
  }
}

  function variaveisRaquete () {
    rect (xraquete, yraquete, comprimentoRaquete, alturaRaquete)
  }
solução!

Oi oi, Fábio!

Não precisa pedir desculpas, estamos aqui para te ajudar e isso acontece até com programadores experientes.

Copiei o link do primeiro código que você disponibilizou no meu p5.js e quando rodei apareceu esse erro. Aqui ele diz que há um erro de sintaxe e a function verificacaoColisaoBolinha está em vermelho, olha só no print:

Imagem que mostra a existência de um erro de sintaxe e a function verificacaoColisaoBolinha está em vermelho, indicando erroApós isso pude observar que as chaves, ou os "bigodes" como o instrutor menciona na aula, não estão definindo o final do escopo da função. Escopo de uma função é todo o espaço onde ela irá receber as instruções, é o campo onde vamos descrever as tarefas que aquela função irá executar.

Na sua função, eu coloquei alguns pontinhos vermelhos que indicam o local de início e de fechamento desse escopo. No entanto, o último traço vermelho indica que está faltando fechar a função. Isso siginifica que a função está aberta e que toda a linha de código que vier abaixo está contida em seu interior, ou seja, irá dar conflito de informações no código.

Para solucionar esse problema precisamos definir corretamente o escopo da função, ou seja, seu início e seu fim, as instruções que são de sua competência. Nesse sentido primeiro precisamos abrir e fechar o escopo da verificacaoColisaoBolinha() , provavelmente o que houve foi que você se confundiu com o escopo das estruturas condicionais e não percebeu que faltava fechar a função, vou mostrar no código abaixo:

function verificacaoColisaoBolinha () 
{//início do escopo da função

  if (xbolinha + raio > width ||xbolinha - raio < 0) 
    { //início das instruções da estrutura condicional
            velocidadeXBolinha *= -1 //instruções no escopo da estrutura condicional
    }//final das instruções

 if (ybolinha + raio > height ||ybolinha - raio < 0) 
        {    //início das instruções da estrutura condicional
                velocidadeYBolinha *= -1 //instruções no escopo da estrutura condicional
        } //final das instruções 

}//final e fechamento do escopo da função - faltou você inserir essa chave

Dessa forma, ao fecharmos o escopo da função, o código funciona normalmente, olha só no print:

Imagem com a função com os escopo definido corretamente Vou deixar também o código completo para você testar:

let xbolinha= 300;
let ybolinha= 220;
let diametro= 15;

let raio = diametro/2;
let velocidadeXBolinha =2;
let velocidadeYBolinha = 2;

let xraquete = 5
let yraquete = 150
let comprimentoraquete = 7
let alturaraquete = 90

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

function draw() {
  background(0);
  desenhoBolinha ();
  movimentacaoBolinha ();
  verificacaoColisaoBolinha ();
  variaveisRaquete ()
  }


function desenhoBolinha () {
  circle (xbolinha, ybolinha, diametro);
}

function movimentacaoBolinha () {
  xbolinha += velocidadeXBolinha
  ybolinha += velocidadeYBolinha
}

function verificacaoColisaoBolinha () {// início da função
  if (xbolinha + raio > width ||
     xbolinha - raio < 0) {
    velocidadeXBolinha *= -1}
  if (ybolinha + raio > height ||
     ybolinha - raio < 0) 
  {
    velocidadeYBolinha *= -1

  }

}//final da função

  function variaveisRaquete () {
    rect (xraquete, yraquete, comprimentoraquete, alturaraquete )}

Espero que as informações tenham ajudado e caso você ainda tenha dúvidas, estou à disposição!

Um abraço e bons estudos!