1
resposta

[Projeto] Projeto finalizado, mas com uma curiosidade

let X=300;
let Y=150;
let Dia=30;
let raio= Dia/2;

let movimentoX=5;
let movimentoY=5;

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

function draw() {
  background(0);
  Bolinha();
  Movimento();
  Bordas();
}

function Bolinha(){
  circle(X,Y,Dia,raio);
}
Bolinha();

function Movimento(){
  X = X+movimentoX;
  Y=Y+movimentoY;
}
Movimento();

function Bordas(){
  if (X + raio > width || X < 0) {
    movimentoX *= -1
  }
  if(Y + raio > height || Y < 0){
    movimentoY *= -1
  }
 
}
Bordas();

Durante a recriação da lógica do código me veio uma dúvida. Por que devo declarar duas variáveis que no caso são "movimentoX" e "movimentoY" para depois soma-las com outras duas variáveis "X" e "Y" com o objetivo de quando elas tocarem as margens inverterem a sua direção, ao invés de atribui-las diretamente no "X" e "Y".

1 resposta

Olá, Natan!

Entendo sua curiosidade e é ótimo ver que você está pensando criticamente sobre o código! As variáveis "movimentoX" e "movimentoY" são usadas para controlar a direção e a velocidade do movimento da bolinha. Elas são somadas às coordenadas "X" e "Y" da bolinha para atualizar sua posição a cada frame.

A razão para não atribuí-las diretamente a "X" e "Y" é que queremos ter a capacidade de alterar a direção do movimento. Se atribuíssemos um valor fixo a "X" e "Y", a bolinha se moveria em uma direção constante e não poderíamos alterar essa direção.

Quando a bolinha atinge a borda da tela, multiplicamos "movimentoX" ou "movimentoY" por -1. Isso inverte o sinal da variável, fazendo com que a bolinha se mova na direção oposta.

Por exemplo, se "movimentoX" é 5 e a bolinha atinge a borda direita da tela, "movimentoX" se torna -5. Na próxima vez que adicionamos "movimentoX" a "X", estamos realmente subtraindo 5 de "X", o que move a bolinha para a esquerda.

Espero ter ajudado e bons estudos!