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

Não entendi a resolução

Olá, essa foi a resolução do professor:

<canvas width="600" height="400"></canvas>

<script>

    var tela = document.querySelector('canvas');
    var pincel = tela.getContext('2d');
    pincel.fillStyle = 'lightgray';
    pincel.fillRect(0, 0, 600, 400);

    function desenhaCirculo(x, y, raio) {

        pincel.fillStyle = 'blue';
        pincel.beginPath();
        pincel.arc(x, y, raio, 0, 2 * Math.PI);
        pincel.fill();
    }

    function limpaTela() {

        pincel.clearRect(0, 0, 600, 400);
    }

    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);

</script>

No entanto, não entendi muito bem os parâmetros do 'if'. Por exemplo, quando meu x = 500:

500< 600 , mas é ao mesmo tempo >0 , não se encaixando no x > 600 nem no x< 0..... Nesse caso, o código não deveria parar? Já que não há um comando para números no intervalo entre 0 e 600? Agradeço pela ajuda desde já :D

2 respostas
solução!

Olá, Maria Eduarda!

Sua análise está correta. Quando x vale 500 o código não entrará em nenhum dos dois ifs, mas isso não faz com que o código pare. O que para quando não é atendido é apenas o while e for (não sei se já viu estruturas de repetição).

Nesse caso, o que acontece é que ele não altera o sentido da bolinha enquanto não satisfizer nenhum dos dois ifs.

Então, se sua bolinha está indo pra direita, o valor de sentido é 1. Isso vai fazer a posição x da bolinha ir aumentando de 1 em 1, pois logo depois vc soma "x = x + sentido". E enquanto for menor que 600 (não satisfazendo o if), o sentido não vai ser alterado e a bolinha vai continuar indo pra direita.

Quando chegar no 600, o sentido vai trocar para -1 e a bolinha vai começar a voltar, reduzindo sempre o valor de x. E não será alterada até que chegue em 0 e seja setado o sentido = 1 de novo.

Espero q tenha entendido essa confusão toda kkkkkkk Bons estudos.

AAAAHHH, faz sentido! Genial!! Obrigada :D