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

Tambem não estou entendendo a lógica =(

Olá pessoal, já vi essa mesma pergunta no fórum mas depois de ler e reler eu continuo a não entender nada. (kakaakak)

Logo minha pergunta é a seguinte, conforme descrito no código abaixo, quando X for maior que 600, sentido receberá -1, tornando o X em 599 quando chegar em " x = x + sentido". Acontece que com o x valendo 599 ele devia "disparar" o "else" já que nesse caso x > 0 e não mais "x > 600". Logo quando eu vi esse código eu imaginei que a bolinha iria ficar travada no final do canvas oscilando entre x = 599 e x = 601, mas não foi isso que aconteceu, porque???

   var x = 20;

    var sentido = 1;

    function atualizaTela() {

        limpaTela();

        if( x > 600) {
            sentido = -1;
        } else if (x < 0) {
            sentido = 1;
        } 

        desenhaCirculo(x, 20, 10);
        x = x + sentido;
    }

    setInterval(atualizaTela, 10);
3 respostas
solução!

Se for maior que 600, por exemplo, 601, ele deve mudar o sentido porque não pode mais continuar para a direita. O sentido será negativo (subtraindo da posição X) até que a posição x seja negativa. Quando for negativa, não faz sentido continuar a subtrair porque o mínimo é 0.

Acho que aqui é o ponto de maior dúvida. Quando ele cai no else, ele só testará novamente se a posição for abaixo de 0. Veja que 599, 598, 597 não mudará o sentido. Por isso ele ignorará todos os else até que o valor de x seja negativo.

Qualquer coisa grite.

Muito obrigado Flavio! Não tinha percebido que o "else" seria ativado somente quando o valor se torna-se negativo.

Valeu mesmo pela força.

Tranquilo Jean! O importante é que você tenha capturado a essência do código.

Sucesso e bom estudo meu aluno!