Salvo melhor juízo, o código cerca se houve acerto do centro do alvo num quadrado de 10x10 pixels (solução da Alura) e não num círculo. Ou seja, se clico fora do centro do alvo, mas ainda dentro do quadrado de 10x10 pixels, o aviso de que cliquei dentro do alvo é acionado.
Se eu aumentar em +30 px cada um dos círculos do alvo, bem como se eu fizer as adaptações necessárias ao código, fica mais evidente este erro.
Porém, como o alvo é redondo, deve-se usar Pitágoras = x * x + y * y = d * d, onde d = distância, que, no caso, é o raio do centro do alvo. Os eixos x e y são perpendiculares, logo d é sempre uma hipotenusa de um triângulo retângulo.
Logo, a função dispara corrigida ficaria assim:
function dispara(evento) {
var x = evento.pageX - tela.offsetLeft;
var y = evento.pageY - tela.offsetTop;
if (Math.sqrt((300 - x)*(300 - x) + (200 - y)*(200 - y)) <= raio) {
alert('Acertou o alvo!');
}
}
Atenciosamente,