Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Tiro al blanco mejorado.

Hola, le hice una mejora al código del tiro al blanco, para que siempre el tablero circular que va cambiando de lugar, aparezca dentro del canvas y no aparezca por ejemplo una parte fuera. Aqui el código.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <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);

      let radio = 10;
      function disenarCircunferencia(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);
      }

  //determina el valor de equis
      let xAleatorio = 0;
      let yAleatorio = 0;

      function actualizarPantalla() {
        limpiarPantalla();
        xAleatorio = sortearPosicion(570);
        yAleatorio = sortearPosicion(370);
        disenarObjetivo(xAleatorio, yAleatorio);

      }

      function disenarObjetivo(x, y) {
        disenarCircunferencia(x, y, radio + 20, "red");
        disenarCircunferencia(x, y, radio + 10, "white");
        disenarCircunferencia(x, y, radio, "red");
      }

      //genera los x e y dentro del canvas
      //el radio del circulo mayor es de 30, por lo que
      //aceptamos x e y mayores a 29 y menores a 571 y 371.
      //asi los circulos nunca se saldran del canvas
      function sortearPosicion(maximo) {
        let aleatorio = 0;
        while (aleatorio <= 29) {
          aleatorio = Math.round(Math.random() * maximo);
        }
        return aleatorio;
      }

      setInterval(actualizarPantalla, 1000);

      function disparar(evento) {
        let x = evento.pageX - pantalla.offsetLeft;
        let 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>
  </body>
</html>
1 respuesta

¡Hola Alumno! ¡Deseo que estés bien!

¡Muchas Felicidades!

¡Gracias por compartir tu código con nosotros! Nos alegra mucho ver tu avance en las prácticas, éstas te darán un mayor fundamento en el aprendizaje. ¡Continua con ese mismo entusiasmo y no te desanimes!

Es importante recordar que, en lo esencial, para agilizar el tiempo de respuesta que damos a ustedes, estamos priorizando el foro para postear las dudas como: errores, bugs y cualquier otro problema referente a los cursos.

En cambio, si deseas compartir tu código, ideas o actividades dispusimos en Discord un canal exclusivo para ese fin (⛓┇comparte-tu-codigo) Allí la interacción con tus compañeros de estudios es mucho mayor y podrán ayudarte compartiendo sus conocimientos. ¡Ésta interrelación es muy productiva ya que puede ayudarte a expandir tu red de contactos!

Te dejo éste link que muestra donde puedes compartir tus actividades

¡Te deseo mucho éxito en tus estudios! y recuerda que aquí estaremos para apoyarte!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!