¡Whoo hoo! Otra animación. Esta vez tenemos una bola moviéndose a través de la pantalla,
y ustedes ya saben cómo se hace esto.
Tenemos una variable "x", que nos dice la posición de la bola, una variable "speed" que nos dice qué tan lejos la bola se mueve cada vez
y un ciclo "draw" que ya conocemos donde redibujamos el fondo cada vez
asignamos colores para rellenar y dibujamos la elipse en la posición "x", y cada vez,
vamos a cambiar "x" y la vamos a hacer igual al valor anterior de "x" más la variable "speed". Así que si hago que "speed" sea menor,
puedes ver que se mueve más lento. Puedo hacerla negativa, y hacer que se mueva en sentido contrario, o hacerla igua a cero, y la bola dejará de moverse.
Pero mientras "speed" no sea igual a cero,
eventualmente la bola va a salir de la pantalla,
Y siempre puedo presionar el botón de reinicio para traerla de regreso, pero ya sabes, después de un rato eso se ve mal.
Reinicias y reinicias...
Entonces, ¿qué tal esto? Cuando la bola llegue al borde de la pantalla,
en lugar de que se vaya fuera de la pantalla, como lo hace ahora, quiero que regrese.
Y yo sé cómo hacer que la bola regrese, sólo hacemos que "speed" sea negativa, -5. Si hago "speed" negativa, entonces la bola va a regresar.
Pero hay un problema.
Sólo quiero cambiar la variable "speed" cuando la bola haya llegado al borde derecho.
Mmmm... creo que ya lo dije. Sólo quiero cambiar la variable "speed" si la bola alcanza al borde derecho.
Creo que esto necesita una sentencia "if"
Hasta el momento, le hemos dado a la computadora comandos que se deben ejecutar forzosamente.
La sentencia "if" es una manera de decir, "Hey amigo, quiero que corras este código, pero solamente en estas circunstancias específicas".
"Así que sólo cambia la variable 'speed' si la bola alcanza el borde derecho"
Y así es como se ve el código.
Todo lo que tienes que hacer es teclear "If" y luego un par de paréntesis y un par de llaves.
Dentro de los paréntesis vamos a poner la condición.
Y dentro de las llaves vamos a poner el código que se debe ejecutar.
Entonces la manera en que esto funciona es : "Si esta condición es verdadera, entonces ejecuta este código, de otra manera no te molestes en hacerlo".
Así que en nuestro caso, la condición es que la bola alcance el borde derecho. ¿Cómo sabemos si la bola ha alcanzado el borde derecho?
Tenemos esta variable "x" que nos dice en dónde está la bola, y sé que el borde de la pantalla es cuando "x" es igual a 400, así que vamos a ver.
Cuando "x" sea mayor a 400, entonces sé que la bola ha pasado el borde derecho por un poco.
Así que vamos a ver cómo funciona.
Y el código que vamos a ejecutar como ya lo dijimos antes es cambiar la variable "speed". Asignando a "speed" el valor -5. Vamos a reiniciar y ver qué pasa.
Así que en esta ocasión cuando la bola alcanza el borde derecho, ¡rebota! ¡Sí!
Y luego sigue saliendo de la pantalla.
Pero eso está bien, porque podemos hacer eso del otro lado. En este caso queremos ver si la bola ha alcanzado el borde izquierdo.
Y eso es cuando "x" es menor que cero, y lo que queremos hacer es cambiar "speed" a un valor positivo de nuevo, así que "speed" es igual a 5.
Muy bien, vamos a reiniciar, y esta vez...
boing
¡Hurra! ¡Funciona!
Y sé que estamos comprobando si el balón ha ido más allá de los bordes, pero se siente como que va un poco más allá de los bordes.
Y si recuerdas, estos dos parámetros controlan el centro donde la elipse se dibuja.
Así que ahora, cuando el centro de la elipse alcanza el borde, la mitad de la elipse ha pasado el borde.
Así que si queremos arreglar eso, debemos detener la elipse un poco antes. Si nuestro borde está aquí, en 400, y queremos detener nuestra elipse cuando llegue aquí,
y podemos ver en la función que la elipse tiene una anchura de 50, eso significa que del centro al extremo de la elipse tiene 25.
Entonces queremos que se detenga cuando el centro haya alcanzado 375 que es igual a 400 menos 25.
Así que en lugar de revisar si "x" es mayor que 400, vamos a revisar que "x" sea mayor que 375.
Y en lugar de revisar si "x" es menor que 0, voy a revisar que "x" sea menor que 25.
¡Y ahora es perfecto! ¡Sí! Mira ese rebote.