10
respuestas

Hola, alguien me podria ayudar, decirme donde esta el erro? ejecuto el codigo y no me dice tiro certero cuando hago click dentro del centro?

<canvas width="600" height="400"> </canvas>


<script>

    var pantalla = document.querySelector("canvas");
    var pincel = pantalla.getContext("2d");

    pincel.fillStyle = "lightgrey";
    pincel.fillRect(0,0,600,400);

    var radio = 10;
    var xAleatorio;
    var yAleatorio;

    function disenharCircunferencia(x,y,radio,color){

         pincel.fillStyle = color;
         pincel.beginPath();
         pincel.arc(x,y,radio,0,2*Math.PI);
         pincel.fill();

}

    function limpiarPantalla(){


         pincel.clearRect(0,0,600,400);


    }


    var x = 0


    function disenharObjetivo(x,y){

    disenharCircunferencia(x,y,radio + 20, "red");
    disenharCircunferencia(x,y,radio + 10,"white");
    disenharCircunferencia(x,y,radio,"red");


    }


    function sortearPosicion(maximo){


        return Math.floor(Math.random()*maximo);

    }


     function actualizarPantalla() {

        limpiarPantalla();
        xAleatorio = sortearPosicion(600);
        yAleatorio = sortearPosicion(400);
        disenharObjetivo(xAleatorio,yAleatorio);
        x ++;

    }


    setInterval(actualizarPantalla,1500);


    function disparar(evento){


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

        if ((x > xAleatorio + radio) &&
            (x < xAleatorio - radio) &&
            (y > yAleatorio + radio) &&
            (y < yAleatorio - radio)) {

            alert("Tiro Certero");


       }



    }


    pantalla.onclick = disparar;    



    </script>    
10 respuestas

Hola Mariana, como estas??

Estuve mirando tu código y es muy similar al mío (y esta funcionando el alert("Tiro Certero"), salvo porque tenes dentro de la función actualizarPantalla un x++, y que debajo de la función limpiarPantalla(), inicializaste la var x = 0, que ya la tenes inicializada dentro de la función disparar(evento).

Para probar si funciona correctamente, a la función setInterval, colócale como parámetro 3000 en lugar de 1500, solo para probar si se soluciono el problema y luego lo acomodas nuevamente.

Espero haberte ayudado.

Saludos.

Hola Alejadro! gracias por contestar! como estas?, entonces vos decis que al tener var ×=0 ya en la función disparar(evento) ya inicializada, la tendría que borrar de abajo de la función pantalla? estoy empezando desde 0 y me mareo un poco. Y con respecto a x++ , debería dejarla así? gracias!

Hola Mariana,

Acabo de modificar mi código y le agregue la variable var x = 0; y x++, y sigue funcionando. Te recomiendo que las quites ya que el x++ fue utilizado para controlar el while, y ya no lo tenes, lo mismo que el var x = 0; ya que lo inicializas en el función disparar(evento), como para que te quede un código mas limpio.

Solo por recomendación, a la función setInterval, colócale como 3000 solo para probar que funciona, que yo creo que debería estar funcionando y luego lo volves a colocar en 1000 o 1500.

Saludos desde Buenos Aires - Argentina.

Dale gracias , Alejandro! ni bien pueda lo hago y te aviso como fue todo!

Buenísimo, estamos para ayudarnos!

saludos!

Hola nuevamente Alejandro, como estas?.. me sigue dando error, basicamente no se me ejecuta el codigo alert, cuando hago click en el centro!

No le encuentro falla, pero bueno no me lo ejecuta!

Gracias de todas formas!

Hola Mariana, como estas??

estuve revisando tu código detalladamente y encontré el error, el error se encuentra en la condición en el if, ya que "x" debería ser menor que "xAleatorio+radio" y "x" debería ser mayor que "xAleatorio - radio" y lo mismo con "y", que debería ser menor "yAleatorio+radio" e "y" mayor que "yAleatorio-radio".

Versión original:

function disparar(evento){


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

        if ((x > xAleatorio + radio) &&
            (x < xAleatorio - radio) &&
            (y > yAleatorio + radio) &&
            (y < yAleatorio - radio)) {

            alert("Tiro Certero");


       }

Versión modificada.

function disparar(evento){


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

        if ((x < xAleatorio + radio) &&
            (x > xAleatorio - radio) &&
            (y < yAleatorio + radio) &&
            (y > yAleatorio - radio)) {
                alert("Tiro Certero");
            }



    }

Espero haberte ayudado.

saludos.

Hola alejandro! como estas?!.. tenes razón, seguro son los signos que puse mal del eje x e y de la circunferencia en el if! Cuando salga del trabajo lo pruebo y te aviso! mil gracias por tomarte tu tiempo para ayudarme!!

Mariana

Alejandro ! funcionó! gracias nuevamente por la ayuda!! Mariana

De Nada Mariana!

Me alegra que juntos lo hayamos solucionado.

Saludos!