1
resposta

Meu código não exibe alert! Alguém para ajudar?

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

<script>

var tela= document.querySelector("canvas");
var pincel= tela.getContext("2d");

pincel.fillStyle= "lightgray";
pincel.fillRect(0, 0, 800, 600);

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, 800, 600);
}

function desenhaAlvo(x, y) {

    desenhaCirculo(x, y, raio + 20, "red");
    desenhaCirculo(x, y, raio + 10 , "white");
    desenhaCirculo(x, y, raio, "red");
}

function atualizaPosicao(maximo) {

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

function alvoAleatorio() {

    limpaTela();

    var xAleatorio= atualizaPosicao(800);
    var yAleatorio= atualizaPosicao(600);
    desenhaAlvo(xAleatorio, yAleatorio);
}

setInterval(alvoAleatorio, 1000);


function dispara(evento) {

    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>
1 resposta

Oi, Victor! Tudo bem com você?

O erro está na função alvoAleatorio, onde você declarou mais uma vez a variável xAleatorio e yAleatorio. Veja:

    var xAleatorio= atualizaPosicao(800);
    var yAleatorio= atualizaPosicao(600);

O correto seria:

    xAleatorio= atualizaPosicao(800);
    yAleatorio= atualizaPosicao(600);

Pronto, agora seu código vai funcionar certinho!

Qualquer dúvida, estamos sempre por aqui.

Abraços e bons estudos! 😄

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software