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

O ALERT NÃO APARECE

Fiz exatamente como o profressor passou, porém não consigo achar o porque do Alert não estar sendo exibido quando acerto o alvo. poderia verificar o codigo e me ajudar por favor?

<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;
    var xAleatorio = sorteiaPosicao;
    var yAleatorio = sorteiaPosicao;

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

        return Math.floor(Math.random() * maximo);

    }

    function atualizaTela() {

    limpaTela();    
    xAleatorio = sorteiaPosicao(600);
    yAleatorio = sorteiaPosicao(400);

    desenhaAlvo(xAleatorio, yAleatorio);

    }

    setInterval(atualizaTela, 1000);

    function dispara(alvo) {

        var x = evento.pageX - tela.offsetLeft;
        var y = evento.pageY - tela.offsetTop;

        if((x > xAleatorio - raio) && (x < xAleatorio + raio) && (y > yAleatorio - raio) && (y < yAleatorio + raio)) {

            alert("Acertou!");
        }

    }

tela.onclick = dispara;




</script>
2 respostas
solução!

Olá Victor,

o problema está na função dispara. No caso como o nome do parâmetro ficou como alvo, na hora de chamar o pageX e o pageY, deveria ser alvo.pageX e alvo.pageY.

Muito obrigado lucas! falta de atenção a minha!!