1
resposta

TIRO AO ALVO

Fiz um pouco diferente, sem as funções atualizarTela() e gerarNumeroAleatorio().

<canvas width="600" height="400"></canvas>
<script>
    var tela = document.querySelector("canvas");
    var pincel = tela.getContext("2d");

    tela.style.backgroundColor ="grey";

    var raio = 10;
    var maximoX = 540;
    var maximoY = 340;
    var yA;
    var xA;


    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(){
        limpaTela();
        //gerando numeros Aleatorios toda vez que o alvo for desenhado
        yA = Math.floor(Math.random()*maximoY); //FLOOR arredonda para baixo
        xA = Math.floor(Math.random()*maximoX); //ao contrario do ROUND que arredonda pra cima


        //esta condicional é para evitar que o alvo apareca incompleto no CANVAS(o 60 se dá pelo RAIO do ALVO)
        if(yA < 60){
            yA = 60;
        }
        if(xA < 60){
            xA = 60;
        }

        desenhaCirculo(xA,yA,raio+20,"red");
        desenhaCirculo(xA,yA,raio+10,"white");
        desenhaCirculo(xA,yA,raio,"red");
    }



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

        if(x >= (xA-raio) && x <= (xA +raio)){
            if(y >= (yA-raio) && y <= (yA +raio)){
                alert("Acertou!");

            }
        }

    }



    setInterval(desenhaAlvo,1500);
    tela.onclick = tiro;


</script>
1 resposta

Olá, Allan! Como vai?

Sua solução ficou muito boa, parabéns!

Qualquer dúvida estamos à disposição.

Continue praticando e bons estudos!

Até mais!

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