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

Fiz o código como está no vídeo,porém,não funcionou. Algo de errado com meu código?

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

    var raio = 10;

    function desenhaCirculo(x, y, raio, cor) {

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

    function limpaTela() {
        pincel.clearRect(0, 0, 600, 400);
    }
    function desenhaAlvo(x, y) {
        desenhaCirculo(x, y, raio+20, 'red');
        desenhaCirculo(x, y, raio+10, 'white');
        desenhaCirculo(x, y, raio, 'red');
    }

    function sorteiaPosicao(maximo) {
        Math.floor(Math.random() * maximo);

    }

    function atualizaTela() {
        limpaTela();
        var xAleatorio = sorteiaPosicao(600);
        var yAleatorio = sorteiaPosicao(400);
        desenhaAlvo(xAleatorio, yAleatorio);
    }

    setInterval(atualizaTela, 1000);

</script>
2 respostas
solução!

Oi Igor, tá faltando um return no seu calcula posição, assim os valores não são atribuídos a X e Y na função atualizaTela e por isso a função desenhaAlvo para de funcionar.

Basta você colocar o return na função sorteiaPosicao e tudo irá funcionar. Sem esse comando a função não retorno o valor de X e Y que por sinal são as coordenadas que determina a posição onde vai ser desenhado o alvo.

    function sorteiaPosicao(maximo) {
       return Math.floor(Math.random() * maximo);
    }