1
resposta

"page.X is not defined"

<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 xAleatorio 
    var yAleatorio
    var raioPequeno = 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(){
        desenhaCirculo(xAleatorio,yAleatorio, (raioPequeno + 20), "red")
        desenhaCirculo(xAleatorio,yAleatorio,(raioPequeno + 10), "white")
        desenhaCirculo(xAleatorio,yAleatorio,raioPequeno, "red")
    }

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

    function xy(){
        limpaTela()
        xAleatorio = aleatorio(600)
        yAleatorio = aleatorio(400)
        desenhaAlvo()
    }

    function dispara(evento){
        var x = evento.pageX - tela.offsetLeft;
        var y = evento.pageY - tela.offsetTop;
        if(x < xAleatorio - raioPequeno && x > xAleatorio + raioPequeno)
            if(y < yAleatorio - raioPequeno && x > yAleatorio + raioPequeno){
                alert("acertou")
            }
    }
    setInterval(xy, 10000)

    tela.onclick = dispara;

</script>
1 resposta

Fala, João! Tudo bom contigo?

Eu teste e fiz algumas alterações (detalhes) e consegui rodar normalmente

Dê uma olhada abaixo:

<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 xAleatorio 
    var yAleatorio
    var raioPequeno = 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(){
        desenhaCirculo(xAleatorio,yAleatorio, (raioPequeno + 20), "red")
        desenhaCirculo(xAleatorio,yAleatorio,(raioPequeno + 10), "white")
        desenhaCirculo(xAleatorio,yAleatorio,raioPequeno, "red")
    }

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

    function xy(){
        limpaTela()
        xAleatorio = aleatorio(600)
        yAleatorio = aleatorio(400)
        desenhaAlvo()
    }

    function dispara(evento){
        var x = evento.pageX - tela.offsetLeft;
        var y = evento.pageY - tela.offsetTop;
        if((x > xAleatorio - raioPequeno) 
        && (x < xAleatorio + raioPequeno) 
        && (y > yAleatorio - raioPequeno) 
        && (x < yAleatorio + raioPequeno)){
            alert("acertou")
        }
    }
    setInterval(xy, 3000)

    tela.onclick = dispara;

</script>

Um abraço e bons estudos