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

[Proyecto] ¡Ya que va, que vuelva!

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

<script>

    var pantalla = document.querySelector("canvas");
    var pincel = pantalla.getContext("2d");
    pincel.fillStyle = "lightgray";
    pincel.fillRect(0, 0, 600, 400);


    function crearCirculo(x, y, radio) {

        pincel.fillStyle = "blue"
        pincel.beginPath()
        pincel.arc(x, y, radio, 0, 2 * Math.PI)
        pincel.fill()
    }

    function limpiarPantalla() {

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

    var x = 0;
    var i = true

    function actualizarPantalla() {

        if (i == true) {

            limpiarPantalla();
            crearCirculo(x, 30, 20)
            x++
            if (x == 600) {
                i = false
            }
        }

        if (i == false) {

            limpiarPantalla();
            crearCirculo(x, 30, 20)
            x--
            if (x == 0) {
                i = true
            }
        }
    }
    setInterval(actualizarPantalla, 5);




</script>
3 respuestas
solución!

Como sugerencia, en las líneas 34 y 44 podrias considerar el radio del circulo para que no se corte en los bordes del canvas y el rebote sea mas realista. Por ejemplo, en el bloque if de la linea 34 quedaría tal que:

            if (x == 600 - 20) {
                i = false
            }

De forma similar se puede aplicar a la linea 44. Saludos

Gracias Esteban me gusta que me den sus ideas e opiniones para ir mejorando ya que yo nuevo en este mundo de la programación.

Hice lo mismo pero diferente xD, luego vi cómo lo hizo el profesor y quedé en shock, dije: Chanfles, por qué no pensé en hacer eso :v.

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

function disenharCircunferencia(x, y, radio) {
  pincel.fillStyle = "blue";
  pincel.beginPath();
  pincel.arc(x, y, radio, 0, 2 * Math.PI);
  pincel.fill();
}

function limpiarPantalla() {
  pincel.clearRect(0, 0, 600, 400);
}

let x = 0;
let pimba = false;

function actualizarPantalla() {
  limpiarPantalla();
  disenharCircunferencia(x, 20, 10);

  if (pimba) {
    x--;
  } else {
    x++;
  }

  if (x == 0) {
    pimba = false;
  }

  if (x == pantalla.width) {
    pimba = true;
  }
}

setInterval(actualizarPantalla, 3);