Por que inicialmente preciso declarar a variável colidiu como "false"?
Por que inicialmente preciso declarar a variável colidiu como "false"?
Olá, Bernardo! Tudo bem com você?
Muito interessante sua pergunta. Vamos lá!
a variável colidiu
contém um valor boleano. Os operadores lógicos boleanos podem armazenar apenas dois valores, quem são true
ou false
que corresponde a falso, 0 ou 1. Nesse sentido, o instrutor declarou a colidiu como false
porque para entrar na condição e ser validada ela precisa ser verdadeira(true), olha só:
function colisaoMinhaRaqueteBiblioteca() {
colidiu = collideRectCircle(xRaquete, yRaquete, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio); //toda essa condição começa como falsa.
if (colidiu) { //Aqui SE toda a condição da colidiu for verdadeira (ou seja, se ela acontecer), isso significa que a bolinha vai entrar na instrução abaixo
velocidadeXBolinha *= -1;
}
}
Ficou um pouco mais claro agora?
Fico à disposição caso as dúvidas persistam.
Um abraço e bons estudos!
Oi, Camila!
Ainda não ficou claro para mim. Se dentro da função eu já estou atribuindo um critério para a colisão, por que preciso declarar a varíavel como falsa antes?
Eu fiz um teste e comentei o "//let colidiu = false", isto é, eliminei esta linha do código . E a função de colisão funcionou perfeitamente. Por isso, não estou entendo a necessidade de declarar anteriormente o 'colidiu" como "false".
Olá, Bernardo!
Agora entendi sua pergunta!
Sua observação faz total sentido. A variável let colidiu = false
foi inserida pelo instrutor porque é um requisito do código da própria biblioteca collide2d, olha só:
var hit = false;
function draw() {
background(255);
rect(200, 200, 100, 150);
circle(mouseX, mouseY, 100);
hit = collideRectCircle(200, 200, 100, 150, mouseX, mouseY, 100);
// Use vectors as input:
// const mouse = createVector(mouseX, mouseY);
// const rect_start = createVector(200, 200);
// const rect_size = createVector(100, 150);
// const radius = 100;
// hit = collideRectCircleVector(rect_start, rect_size, mouse, radius);
stroke(hit ? color('red') : 0);
print('colliding?', hit);
}
A implementação da biblioteca solicita que utilize uma variável que inicializa o estado da colisão como falso. Mas você tem total razão, pois ao inserir a variável na condição, ela automaticamente gera um valor boleano.
Parabéns!
Bons estudos!
Obrigado, Camila!
Agora entendi também o raciocínio do professor!
Valeu!