[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:01.11,0:00:03.82,Default,,0000,0000,0000,,Aquí nos quedamos con nuestro juego de lanzamiento de monedas. Dialogue: 0,0:00:03.82,0:00:06.60,Default,,0000,0000,0000,,Empezamos generando un número aleatorio entre 0 y 1, Dialogue: 0,0:00:06.60,0:00:08.88,Default,,0000,0000,0000,,y luego redondeamos ese número al entero más cercano. Dialogue: 0,0:00:08.88,0:00:12.21,Default,,0000,0000,0000,,Eso nos daba un número que era 0 o 1. Dialogue: 0,0:00:12.21,0:00:18.91,Default,,0000,0000,0000,,Y luego ilustramos nuestra moneda súper realista con una elipse que era morada o amarilla, dependiendo del número. Dialogue: 0,0:00:18.91,0:00:20.99,Default,,0000,0000,0000,,Y aquí está el código con el que hicimos eso. Dialogue: 0,0:00:20.99,0:00:25.82,Default,,0000,0000,0000,,Entonces dijimos si "integer" es igual a 0 rellena de morado, de otra manera, rellena de amarillo. Dialogue: 0,0:00:25.82,0:00:27.92,Default,,0000,0000,0000,,Y luego dibujamos la moneda aquí abajo. Dialogue: 0,0:00:27.92,0:00:32.46,Default,,0000,0000,0000,,Pero ahora he decidido que mi moneda tiene en realidad 3 lados. Sí, una moneda de 3 lados. Dialogue: 0,0:00:32.46,0:00:34.19,Default,,0000,0000,0000,,Así que déjenme agregar el tercer lado. Dialogue: 0,0:00:34.19,0:00:37.11,Default,,0000,0000,0000,,Voy a empezar por generar un número entre 0 y 2, Dialogue: 0,0:00:37.11,0:00:41.53,Default,,0000,0000,0000,,así que después de redondear eso, me regresará un entero que será 0, 1 o 2. Dialogue: 0,0:00:41.53,0:00:45.61,Default,,0000,0000,0000,,Pero si miramos nuestro código de dibujo, sólo estamos contemplando dos casos aquí. Dialogue: 0,0:00:45.61,0:00:48.82,Default,,0000,0000,0000,,Si el entero es 0, rellenará de morado, de otra manera, rellenará de amarillo. Dialogue: 0,0:00:48.82,0:00:51.88,Default,,0000,0000,0000,,Pero ahora, "de otra manera" puede significar 1 o 2. Dialogue: 0,0:00:51.88,0:00:54.93,Default,,0000,0000,0000,,Pero esperen, ¿qué pasa si hago lo mismo que hice antes?, Dialogue: 0,0:00:54.93,0:00:57.40,Default,,0000,0000,0000,,pero dentro de este bloque "else". Así que sólo voy a decir: Dialogue: 0,0:00:57.40,0:01:04.93,Default,,0000,0000,0000,,Si "integer" es igual a 1 entonces rellena de amarillo, como estaba antes, Dialogue: 0,0:01:04.93,0:01:11.40,Default,,0000,0000,0000,,"else" rellenaremos de rojo. Rojo está bien. Dialogue: 0,0:01:11.40,0:01:15.48,Default,,0000,0000,0000,,Entonces lo que esto significa es que si "integer" es igual a 0 el color será morado, Dialogue: 0,0:01:15.48,0:01:18.98,Default,,0000,0000,0000,,de otra manera, si es 1, el color será amarillo; Dialogue: 0,0:01:18.98,0:01:24.61,Default,,0000,0000,0000,,de otra manera, es decir, si no es 0, ni 1, debe ser 2 y rellenaremos de rojo. Dialogue: 0,0:01:24.61,0:01:28.57,Default,,0000,0000,0000,,Presiono "restart" muchas veces. ¡Funciona! ¡Yu ju! Dialogue: 0,0:01:28.57,0:01:31.54,Default,,0000,0000,0000,,Entonces si quiero añadir más lados a mi moneda, Dialogue: 0,0:01:31.54,0:01:37.99,Default,,0000,0000,0000,,Puedo ir aquí arriba y hacer esto de 0 a 3, y luego ir más adentro en el bloque "else" y añadir más "if-else" y así sucesivamente, Dialogue: 0,0:01:37.99,0:01:40.16,Default,,0000,0000,0000,,hasta que tengamos miles de bloques anidados. Dialogue: 0,0:01:40.16,0:01:44.70,Default,,0000,0000,0000,,Y sólo entonces me daré cuenta de que este código es desagradable, quiero decir ¡grotesco! Dialogue: 0,0:01:44.70,0:01:48.35,Default,,0000,0000,0000,,Se supone que un código debe ser fácil de leer y bonito, no lo más feo posible. Dialogue: 0,0:01:48.35,0:01:50.07,Default,,0000,0000,0000,,Así que esto es lo que vamos a hacer: Dialogue: 0,0:01:50.07,0:01:55.68,Default,,0000,0000,0000,,Cuando tengas una sentencia "if" simple o una sentencia "if-else" dentro de un bloque "else", Dialogue: 0,0:01:55.68,0:01:58.31,Default,,0000,0000,0000,,significa que no estamos haciendo nada más fuera de estos bloques, Dialogue: 0,0:01:58.31,0:02:04.49,Default,,0000,0000,0000,,no estamos eligiendo el color del trazo, no tenemos ninguna sentencia "if", nada. Dialogue: 0,0:02:04.49,0:02:08.44,Default,,0000,0000,0000,,Todo lo que tenemos es una sentencia "if", y probablemente contenga un bloque "else". Dialogue: 0,0:02:08.44,0:02:13.16,Default,,0000,0000,0000,,Entonces en realidad podemos combinar esta condición con la línea anterior y decir: Dialogue: 0,0:02:13.16,0:02:17.07,Default,,0000,0000,0000,,"else if integer is = 1" (de otra manera, si "integer" es igual a 1), y establecer el color amarillo para rellenar. Dialogue: 0,0:02:17.07,0:02:21.94,Default,,0000,0000,0000,,Y luego este bloque "else" del final, no está anidado en ningún lado, sólo llega al final por sí mismo. Dialogue: 0,0:02:21.94,0:02:27.07,Default,,0000,0000,0000,,¡Genial! Entonces lo que esto significa es: si "integer" es igual a 0 rellena de morado, Dialogue: 0,0:02:27.07,0:02:30.24,Default,,0000,0000,0000,,de otra manera si "integer" es igual a 1, rellena de amarillo, Dialogue: 0,0:02:30.24,0:02:34.48,Default,,0000,0000,0000,,de otra manera, si estas dos condiciones anteriores fueron falsas entonces rellena de rojo. Dialogue: 0,0:02:34.48,0:02:37.74,Default,,0000,0000,0000,,Si presiono "Restart" muchas veces, puedes ver que sigue funcionando. Dialogue: 0,0:02:37.74,0:02:41.82,Default,,0000,0000,0000,,¡Genial! Y lo interesante de esto es que podemos tener todos los "else-if" que queramos, Dialogue: 0,0:02:41.82,0:02:44.70,Default,,0000,0000,0000,,lo que me hace fácil añadir más lados en mi moneda. Dialogue: 0,0:02:44.70,0:02:48.01,Default,,0000,0000,0000,,Hagamos eso ahora. Voy a generar un número entre 0 y 3, Dialogue: 0,0:02:48.01,0:02:56.06,Default,,0000,0000,0000,,y luego voy a añadir otro bloque "else" que diga: de otra manera si "integer" es igual a 2 Dialogue: 0,0:02:56.14,0:02:59.66,Default,,0000,0000,0000,,rellenaremos de... bueno antes era rojo, podemos dejar el rojo. Dialogue: 0,0:02:59.66,0:03:03.21,Default,,0000,0000,0000,,Y luego este último bloque "else" será para cuando "integer" sea igual a 3, Dialogue: 0,0:03:03.21,0:03:08.50,Default,,0000,0000,0000,,rellenaremos de azul. ¡Genial! Dialogue: 0,0:03:08.50,0:03:12.82,Default,,0000,0000,0000,,Muy bien. Así que para hacer esto, siempre tienes que empezar con una sentencia "if", Dialogue: 0,0:03:12.82,0:03:16.91,Default,,0000,0000,0000,,y luego puedes tener todos los "else-if" que quieras, Dialogue: 0,0:03:16.91,0:03:18.70,Default,,0000,0000,0000,,y luego este último es opcional. Dialogue: 0,0:03:18.70,0:03:21.90,Default,,0000,0000,0000,,En realidad podemos hacerlo sin este último, y es posible que todo esto sea falso, Dialogue: 0,0:03:21.90,0:03:23.72,Default,,0000,0000,0000,,entonces no se ejecutará ninguno de estos bloques. Dialogue: 0,0:03:23.72,0:03:30.48,Default,,0000,0000,0000,,Pero por la manera como lo tenemos ahí, entonces se ejecutará exactamente uno de estos bloques. Dialogue: 0,0:03:30.48,0:03:37.02,Default,,0000,0000,0000,,¿Está bien? Ahora bien, este es un caso en el que no importa si dices "if else-if else-if else", Dialogue: 0,0:03:37.02,0:03:45.51,Default,,0000,0000,0000,,o simplemente usar la vieja y simple sentencia "if", como la teníamos en el principio: si "integer" es igual a 3. Dialogue: 0,0:03:45.51,0:03:50.73,Default,,0000,0000,0000,,Y eso es porque es imposible para "integer" ser igual a 0 y luego ser igual a 1, 2 o 3. Dialogue: 0,0:03:50.73,0:03:54.22,Default,,0000,0000,0000,,¡Genia! Así que estas condiciones son mutuamente excluyentes. Dialogue: 0,0:03:54.22,0:03:56.61,Default,,0000,0000,0000,,De cualquier manera sólo uno de estos bloques se ejecutará. Dialogue: 0,0:03:56.61,0:03:58.28,Default,,0000,0000,0000,,Pero no siempre tenemos este caso. Dialogue: 0,0:03:58.28,0:04:01.64,Default,,0000,0000,0000,,¿Qué pasa si tratamos de hacer un juego como éste pero sin redondear a un entero? Dialogue: 0,0:04:01.64,0:04:04.48,Default,,0000,0000,0000,,Así que me voy a deshacer de esta parte donde redondeamos, Dialogue: 0,0:04:04.48,0:04:06.64,Default,,0000,0000,0000,,y de esta otra parte donde lo dibujamos en la pantalla. Dialogue: 0,0:04:06.64,0:04:09.28,Default,,0000,0000,0000,,Y déjenme hacer nuevas reglas para mi juego. Dialogue: 0,0:04:09.28,0:04:12.64,Default,,0000,0000,0000,,Entonces estoy generando un número entre 0 y 3, Dialogue: 0,0:04:12.64,0:04:15.32,Default,,0000,0000,0000,,ponemos más marcas en nuestra recta numérica. Dialogue: 0,0:04:15.32,0:04:23.38,Default,,0000,0000,0000,,Entonces digamos que si el número cae entre 0 y 1 rellenaremos de morado. Dialogue: 0,0:04:23.38,0:04:26.15,Default,,0000,0000,0000,,Oh, eso no parece una "p". (purple=morado) Bueno... entienden. Ok. Dialogue: 0,0:04:26.15,0:04:30.50,Default,,0000,0000,0000,,Y luego si está entre 1 y 2, lo rellenamos de amarillo. Dialogue: 0,0:04:30.50,0:04:35.53,Default,,0000,0000,0000,,Y si está entre 2 y 3, lo rellenamos de rojo. Dialogue: 0,0:04:35.53,0:04:38.65,Default,,0000,0000,0000,,¡Genial! Entonces veamos cómo podemos hacer eso con "if" y con "else-if´s". Dialogue: 0,0:04:38.65,0:04:43.54,Default,,0000,0000,0000,,Puedo empezar por decir si "number" es menor que 1, Dialogue: 0,0:04:43.54,0:04:51.44,Default,,0000,0000,0000,,si es menor que 1, y sé que está entre 0 y 3, entonces debe estar en este rango, Dialogue: 0,0:04:51.44,0:04:54.16,Default,,0000,0000,0000,,entonces selecciono el morado para rellenar. Dialogue: 0,0:04:54.16,0:05:06.70,Default,,0000,0000,0000,,De otra manera, si "number" es menor que 2, selecciono el amarillo para rellenar... 255... Dialogue: 0,0:05:06.70,0:05:12.52,Default,,0000,0000,0000,,Y de otra manera, relleno con rojo. Dialogue: 0,0:05:12.52,0:05:15.60,Default,,0000,0000,0000,,¡Genial! Y funciona de la manera prevista. Dialogue: 0,0:05:15.60,0:05:19.31,Default,,0000,0000,0000,,Así que si "number" es menor que 1, entonces otra vez está en este rango. Dialogue: 0,0:05:19.31,0:05:23.60,Default,,0000,0000,0000,,De otra manera, es mayor o igual que 1, pero también es menor que 2, Dialogue: 0,0:05:23.60,0:05:26.73,Default,,0000,0000,0000,,eso lo pone en este rango, así que vamos a rellenar de amarillo. Dialogue: 0,0:05:26.73,0:05:31.90,Default,,0000,0000,0000,,De otra manera, "number" debe ser mayor o igual que 2, así que cae en este rango. Dialogue: 0,0:05:31.90,0:05:36.28,Default,,0000,0000,0000,,Y aquí hay un caso en el que no podemos decir simplemente que si "number" es menor que 2, Dialogue: 0,0:05:36.28,0:05:39.65,Default,,0000,0000,0000,,y si "number" es menor que 3, Dialogue: 0,0:05:39.65,0:05:42.93,Default,,0000,0000,0000,,porque si "number"es menor que 1, entonces es definitivamente menor que 2 Dialogue: 0,0:05:42.93,0:05:44.75,Default,,0000,0000,0000,,y también será menor que 3. Dialogue: 0,0:05:44.75,0:05:46.78,Default,,0000,0000,0000,,Así que nuestra moneda terminará siendo roja siempre. Dialogue: 0,0:05:46.78,0:05:51.74,Default,,0000,0000,0000,,Y es por eso que en este caso es realmente útil usar "else-if".