Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
4
respuestas

[Sugerencia] Algunos puntos dan falso Acierto en el código. Consejo utilizar distancia euclidiana de 2 dimensiones.

Existe algo con el código brindado que no me dejaba tranquilo, es que cuando se usaba la función If para verificar si el clic estaba dentro del círculo pequeño del blanco, las condiciones eran para comparar un recuadro: If((x<xAleatorio+radio)&& (x>xAleatorio-radio)&&( y<yAleatorio+radio)&& (y>yAleatorio-radio)){ Alert(“Tiro certero”) }

Haciendo un contra ejemplo, Suponiendo que:

radio=10; xAleatorio=10; yAleatori=10; y supongamos que el clic lo hago en el punto (1,1)=(x,y)

Entonces (x,y) sí cumple las 4 condiciones del if y mensaje seria que acertamos, pero en realidad no se encuentra en el círculo, dado que se debe cumplir que la distancia entre (x,y) al centro del circulo (xAleatorio,yAleatorio) sea <= al radio =10. La distancia entre (1,1) y (10,10) = raíz( ((1-10)^2) + ((1-10)^2) ) = raíz ( 81+81) = 12.73 Que es mayor al radio, con lo cual no se encuentra dentro del círculo.

Para este caso se debe usar la formula de distancia de dos puntos y verificar que el radio siempre sea mayor o igual a la distancia entre el clic y el centro del círculo. Brindo la ultima parte del código, utilizando este razonamiento.

function disparo(evento){

    var x = evento.pageX - pantalla.offsetLeft;
    var y = evento.pageY - pantalla.offsetTop;

    if (radio>=Math.sqrt(((x-xAleatorio)*(x-xAleatorio))+((y-yAleatorio)*(y-yAleatorio)))){

    alert("Tiro certero");
    }

}

pantalla.onclick = disparo;

4 respuestas

Excelente! compañero, tenia esa misma duda pero no sabia como resolverlo! Gracias!

Saludos! Yo también noté que faltaba refinar la condición if. Lo mencionado resuelve el detalle. Muy buen aporte!

solución!

Buenos días compañeros, tengo una duda, ¿qué hace la expresión "Math.sqrt();"?

La función Math.sqrt() calcula la raiz del número dentro de los parentesis.

Pd. Por error te dí clic como solución y ahora no sé como borrarlo.