1
resposta

Por que meu código não exibe alert?


<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;  
    var yAleatorio; 

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

function dispara(evento) {

    var x = evento.pagaX - 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>
1 resposta

Oii Marcos, tudo bom?

O alert não está funcionando, pois tem um erro de digitação no seu código. Na função dispara a variável 'x', você digita paga. O correto é page.

  • Código errado:

    function dispara(evento) {
    
      var x = evento.pagaX - tela.offsetLeft;
      var y = evento.pageY - tela.offsetTop;
  • Código certo:

    function dispara(evento) {
    
      var x = evento.pageX - tela.offsetLeft;
      var y = evento.pageY - tela.offsetTop;

Corrigindo isso, seu código funciona perfeito.

Espero ter ajudado. Qualquer dúvida é só falar, beleza? :)