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

AJUDA - ERRO velocidadeYdaBolinha is not defined

Bom dia, a meu ver, meu código está exatamente como na explicação, mas sempre aparece esse erro de sintaxe...

let xBolinha = 300;
let yBolinha = 200;
let diametro = 15;

let velocidadeXBolinha = 10;
let velocidadeYBolinha = 10;

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

function draw() {
    background(0);
    circle(xBolinha, yBolinha, diametro);
    xBolinha += velocidadeXBolinha;
    yBolinha += velocidadeYBolinha;

  if (xBolinha > width || xBolinha < 0){
    velocidadeXdaBolinha = -1; 
} 
  if (yBolinha > height || yBolinha < 0){
    velocidadeYdaBolinha = -1; 
}
}

O que será que esotu fazendo errado?

2 respostas
solução!

Oi, Percy! Tudo bem?

O problema se encontra no trecho de código abaixo:

  if (xBolinha > width || xBolinha < 0){
    velocidadeXdaBolinha = -1; 
   } 
  if (yBolinha > height || yBolinha < 0){
    velocidadeYdaBolinha = -1; 
  }

Podemos notar que ao longo do código a variável que se refere a velocidade no eixo x da bolinha foi declarada com o nome velocidadeXBolinha e não com a nomenclatura velocidadeXdaBolinha, assim como a variável que se refere a velocidade no eixo y da bolinha foi declarada como velocidadeYBolinha e não com a nomenclatura velocidadeYdaBolinha.

Somado a isso, precisamos executar um comando no qual ao a posição da bolinha atingir uma posição equivalente a posição das extremidades da tela do nosso jogo a velocidade da bolinha voltar, ou seja, não continuar executando aquela direção mas sim executar o sentindo contrário, logo, para fazermos isso precisamos definir que a velocidade da bolinha vai ser igual à ela mesma porém multiplicada por -1. Entretanto, o que está acontecendo no código enviado é que está sendo atribuído o valor -1 para a velocidade da bolinha e não multiplicando o seu valor por menos 1.

Dessa forma, para resolvermos o problema precisamos apenas substituir as variáveis velocidadeXdaBolinha e velocidadeYdaBolinha por velocidadeXBolinha e velocidadeYBolinha, além de adicionarmos um sinal de multiplicação ao comando de nova definição dessas variáveis, deixando o nosso código da seguinte maneira:

let xBolinha = 300;
let yBolinha = 200;
let diametro = 15;

let velocidadeXBolinha = 10;
let velocidadeYBolinha = 10;

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

function draw() {
    background(0);
    circle(xBolinha, yBolinha, diametro);
    xBolinha += velocidadeXBolinha;
    yBolinha += velocidadeYBolinha;

  if (xBolinha > width || xBolinha < 0){
    velocidadeXBolinha *= -1; 
} 
  if (yBolinha > height || yBolinha < 0){
    velocidadeYBolinha *= -1; 
}
}

Espero ter ajudado na compreensão do problema. Caso tenha ficado alguma dúvida, sinta-se à vontade em comunicar, estou à disposição!

Um forte abraço e bons estudos!

Caso este post tenha te ajudado, por favor, marcar como solucionado ✓

Ajudou bastante, muito obrigado pela resposta e explicação detalhada!:)