-
Aquí nos quedamos con nuestro juego de lanzamiento de monedas.
-
Empezamos generando un número aleatorio entre 0 y 1,
-
y luego redondeamos ese número al entero más cercano.
-
Eso nos daba un número que era 0 o 1.
-
Y luego ilustramos nuestra moneda súper realista con una elipse que era morada o amarilla, dependiendo del número.
-
Y aquí está el código con el que hicimos eso.
-
Entonces dijimos si "integer" es igual a 0 rellena de morado, de otra manera, rellena de amarillo.
-
Y luego dibujamos la moneda aquí abajo.
-
Pero ahora he decidido que mi moneda tiene en realidad 3 lados. Sí, una moneda de 3 lados.
-
Así que déjenme agregar el tercer lado.
-
Voy a empezar por generar un número entre 0 y 2,
-
así que después de redondear eso, me regresará un entero que será 0, 1 o 2.
-
Pero si miramos nuestro código de dibujo, sólo estamos contemplando dos casos aquí.
-
Si el entero es 0, rellenará de morado, de otra manera, rellenará de amarillo.
-
Pero ahora, "de otra manera" puede significar 1 o 2.
-
Pero esperen, ¿qué pasa si hago lo mismo que hice antes?,
-
pero dentro de este bloque "else". Así que sólo voy a decir:
-
Si "integer" es igual a 1 entonces rellena de amarillo, como estaba antes,
-
"else" rellenaremos de rojo. Rojo está bien.
-
Entonces lo que esto significa es que si "integer" es igual a 0 el color será morado,
-
de otra manera, si es 1, el color será amarillo;
-
de otra manera, es decir, si no es 0, ni 1, debe ser 2 y rellenaremos de rojo.
-
Presiono "restart" muchas veces. ¡Funciona! ¡Yu ju!
-
Entonces si quiero añadir más lados a mi moneda,
-
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,
-
hasta que tengamos miles de bloques anidados.
-
Y sólo entonces me daré cuenta de que este código es desagradable, quiero decir ¡grotesco!
-
Se supone que un código debe ser fácil de leer y bonito, no lo más feo posible.
-
Así que esto es lo que vamos a hacer:
-
Cuando tengas una sentencia "if" simple o una sentencia "if-else" dentro de un bloque "else",
-
significa que no estamos haciendo nada más fuera de estos bloques,
-
no estamos eligiendo el color del trazo, no tenemos ninguna sentencia "if", nada.
-
Todo lo que tenemos es una sentencia "if", y probablemente contenga un bloque "else".
-
Entonces en realidad podemos combinar esta condición con la línea anterior y decir:
-
"else if integer is = 1" (de otra manera, si "integer" es igual a 1), y establecer el color amarillo para rellenar.
-
Y luego este bloque "else" del final, no está anidado en ningún lado, sólo llega al final por sí mismo.
-
¡Genial! Entonces lo que esto significa es: si "integer" es igual a 0 rellena de morado,
-
de otra manera si "integer" es igual a 1, rellena de amarillo,
-
de otra manera, si estas dos condiciones anteriores fueron falsas entonces rellena de rojo.
-
Si presiono "Restart" muchas veces, puedes ver que sigue funcionando.
-
¡Genial! Y lo interesante de esto es que podemos tener todos los "else-if" que queramos,
-
lo que me hace fácil añadir más lados en mi moneda.
-
Hagamos eso ahora. Voy a generar un número entre 0 y 3,
-
y luego voy a añadir otro bloque "else" que diga: de otra manera si "integer" es igual a 2
-
rellenaremos de... bueno antes era rojo, podemos dejar el rojo.
-
Y luego este último bloque "else" será para cuando "integer" sea igual a 3,
-
rellenaremos de azul. ¡Genial!
-
Muy bien. Así que para hacer esto, siempre tienes que empezar con una sentencia "if",
-
y luego puedes tener todos los "else-if" que quieras,
-
y luego este último es opcional.
-
En realidad podemos hacerlo sin este último, y es posible que todo esto sea falso,
-
entonces no se ejecutará ninguno de estos bloques.
-
Pero por la manera como lo tenemos ahí, entonces se ejecutará exactamente uno de estos bloques.
-
¿Está bien? Ahora bien, este es un caso en el que no importa si dices "if else-if else-if else",
-
o simplemente usar la vieja y simple sentencia "if", como la teníamos en el principio: si "integer" es igual a 3.
-
Y eso es porque es imposible para "integer" ser igual a 0 y luego ser igual a 1, 2 o 3.
-
¡Genia! Así que estas condiciones son mutuamente excluyentes.
-
De cualquier manera sólo uno de estos bloques se ejecutará.
-
Pero no siempre tenemos este caso.
-
¿Qué pasa si tratamos de hacer un juego como éste pero sin redondear a un entero?
-
Así que me voy a deshacer de esta parte donde redondeamos,
-
y de esta otra parte donde lo dibujamos en la pantalla.
-
Y déjenme hacer nuevas reglas para mi juego.
-
Entonces estoy generando un número entre 0 y 3,
-
ponemos más marcas en nuestra recta numérica.
-
Entonces digamos que si el número cae entre 0 y 1 rellenaremos de morado.
-
Oh, eso no parece una "p". (purple=morado) Bueno... entienden. Ok.
-
Y luego si está entre 1 y 2, lo rellenamos de amarillo.
-
Y si está entre 2 y 3, lo rellenamos de rojo.
-
¡Genial! Entonces veamos cómo podemos hacer eso con "if" y con "else-if´s".
-
Puedo empezar por decir si "number" es menor que 1,
-
si es menor que 1, y sé que está entre 0 y 3, entonces debe estar en este rango,
-
entonces selecciono el morado para rellenar.
-
De otra manera, si "number" es menor que 2, selecciono el amarillo para rellenar... 255...
-
Y de otra manera, relleno con rojo.
-
¡Genial! Y funciona de la manera prevista.
-
Así que si "number" es menor que 1, entonces otra vez está en este rango.
-
De otra manera, es mayor o igual que 1, pero también es menor que 2,
-
eso lo pone en este rango, así que vamos a rellenar de amarillo.
-
De otra manera, "number" debe ser mayor o igual que 2, así que cae en este rango.
-
Y aquí hay un caso en el que no podemos decir simplemente que si "number" es menor que 2,
-
y si "number" es menor que 3,
-
porque si "number"es menor que 1, entonces es definitivamente menor que 2
-
y también será menor que 3.
-
Así que nuestra moneda terminará siendo roja siempre.
-
Y es por eso que en este caso es realmente útil usar "else-if".