Boa tarde. Fiz agora o exercício da lógica de acerto. Antes de olhar a resolução tentei fazer por conta e, inicialmente, pensei em 300+ou- raio porém, ao testar no meu navegador (chrome) deu errado em alguns pontos. Então mudei para 300<=x<=320 e y seguindo a mesma lógica, como vcs podem ver no código a seguir. E assim deu exatamente certo! Queria entender o que houve. Obrigado!
<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();
}
function limpaTela() {
pincel.clearRect(0, 0, 600, 400);
}
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;
if(evento.pageX >= 300 && evento.pageX <= 320){
if(evento.pageY >= 200 && evento.pageY <= 220){
alert("Na mosca!!")
}
}
console.log(evento.pageX, evento.pageY);
}
tela.onclick = dispara;
</script>