Solucionado (ver solución)
Solucionado
(ver solución)
8
respuestas

sin error en consola aun no genera alert

buenas compañeros, lo revise varias veces y aun cuando en la consola de google no me genera error no manda el alert, no se que podría estar sucediendo

<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 xaleatirio;
    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();
        var xaleatirio = sortearPosicion(600);
        var yaleatorio = sortearPosicion(400);
        disenharObjetivo(xaleatirio,yaleatorio)
        x++;

}

        setInterval(actualizarPantalla,2000);

        function disparar (evento){

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

                if( (x < xaleatirio + radio) &&
                    (x > xaleatirio - radio) &&
                    (y < yaleatorio + radio) &&
                    (y > yaleatorio - radio) ){       
                     alert("acertaste");
                    }

        }
        pantalla.onclick = disparar;

</script>
8 respuestas

Hola, el error para mi es que usas el AND(&&), le estas diciendo que se active si se cumplen todas al mismo tiempo. Deberias usar un OR (||)

no amigo, sigue igual no me da error en la consola pero no me da el alert

solución!

Será esto? function actualizarPantalla(){

    limpiarpantalla();
    var xaleatirio = sortearPosicion(600);
    var yaleatorio = sortearPosicion(400);
    disenharObjetivo(******xaleatirio******,yaleatorio)
    x++;

si y no gracias, en la función yo declare la variables con su respectivo "var" y al quitarle el "var" ya me comenzó a lanzar el alert.!! pero aun no entiendo el porque ya que ese "var" esta dentro de la funcion y no deberia afectar al resto del codigo

estoy igual! revise mil veces sin error revisando el ejercicio del profe y no da el alert. si encontraste el error avisame porfa

Código creado durante el aula

Juego de puntería

Este es el código completo realizado por el profesor y al ejecutarlo en el navegador funciona con el pop up.

Hola, lo que pasa es que si tu declaras una variable dentro de una función solo puede ver esas variable dentro de esa función. Entonces lo que pasas es lo siguiente, al tener

function actualizarPantalla(){
        var xaleatirio = sortearPosicion(600);
        var yaleatorio = sortearPosicion(400);
         //  xaleatorio y yaleatorio solo pueden verse dentro de esa función, puedes poner un console.log(xaleatirio) 
         // y te sale el resultado
        console.log(xaleatirio)
}
// En cambio si lo pones el console.log fuera de la función los valores son undefined ya que no le asignaste 
// valores en las líneas 11 y 12
console.log(xaleatirio)

y las variables que tienes en las líneas 11 y 12 van a estar siempre undefined ya que no tiene ningún valor definido, lo puede comprobar abriendo las herramientas de desarrollo y colocando el nombre de la variable que va a ser undefined, pero cuando ya le quitas el var dentro de la función actualizarPantalla, esas variables están ligadas directamente a las que declaraste en la línea 11 y 12 por lo cual desde las herramientas de desarrollo ya vas a poder ver su valor, ya que las estás llamando dentro de esa función y ahí les estás asignando un valor.

function actualizarPantalla(){
        xaleatirio = sortearPosicion(600);
        yaleatorio = sortearPosicion(400);
        // Sin el var, el valor asignado de sortearPosicion a las variables ya se asigna a las que se declararon 
        // en las líneas 11 y 12 y la función disparar toma los valores de las líneas 11 y 12, por lo que si son undefined
        // nunca va a lanzar la alerta.
}