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

Acertando o alvo - forma simples

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

    function desenhaCirculo(x, y, raio, cor) {

        pincel.fillStyle = cor;
        pincel.beginPath();
        pincel.arc(x, y, raio, 0, 2 * Math.PI);
        pincel.fill();
    }
    desenhaCirculo(300,200, raio + 20, 'red'); // maior círculo
    desenhaCirculo(300,200, raio + 10, 'white');
    desenhaCirculo(300,200, raio, 'red'); // menor circulo

    function dispara(evento) {
        var x = evento.pageX - tela.offsetLeft;
        var y = evento.pageY - tela.offsetTop;
       // lógica de acerto?
       if(x>290&&x<310&&y>190&&y<210) {
        alert("ACERTOU!");
       }
    }
    tela.onclick = dispara;
</script>
2 respostas
solução!

Correto Alexandre, só faria uma modificação na linha abaixo:

 if(x>290&&x<310&&y>190&&y<210)

Se você mudasse o valor do raio não seria mais conveniente não ter que mexer na linha acima? O que acha se fosse feito assim:

if ((x > 300 - raio) &&
      (x < 300 + raio) &&
      (y > 200 - raio) &&
      (y < 200 + raio))

Fica sim, André! Acho que os dedos foram mais rápidos que o raciocínio desta vez! Hê hê.

Obrigado pela dica, com o raio fica bem mais claro - além da possibilidade de poder alterar a variável.

Att