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

Variável "colidiu"

Por que inicialmente preciso declarar a variável colidiu como "false"?

4 respostas

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".

solução!

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!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software