Documentos de Académico
Documentos de Profesional
Documentos de Cultura
La imagen fue extraída del videojuego de «New Super Mario Bros U«, ese número
representa el número de vidas. Cada vez que el jugador pierda, se le restará -1. Cuando
ese contador llegue a «00». El juego terminará. ¿Cómo sería esto en un código?
1 if (vidas == 0)
2 {
3 GameOver();
}
4
Este código tiene 3 compuestos:
La palabra reservada «If». La cuál le dice al programa que un evento debe ser ejecutado,
pero sólo si cierta condición se cumple.
Una condición declarada dentro de un (paréntesis). En este caso, se le dice al programa
que si el jugador, tiene «00» vidas, entonces debe disparar el evento «Game Over».
Una función llamada «GameOver()». Ahora mismo puede que no sepas qué son las
funciones, ya llegaremos a eso más tarde, o puedes ir a ver qué son ahora mismo
pulsando aquí, para fines prácticos, digamos que «Game Over()» te llevará a la pantalla
de título, reiniciará tu puntaje a «0» y empezarás desde el nivel 1.
Los tipos más conocidos de condicionales son el SI (IF) y el SEGÚN (case o switch),
aunque también podríamos mencionar al lanzamiento de errores como una alternativa
más moderna para evitar el «anidamiento» de condicionales.
Regresemos a la imagen; observa lo que hay arriba del número de vidas. Se trata del
nombre del nivel. Supongamos que alrededor del juego hay un total de 3 niveles, y
tenemos una variable Int llamada niveles, a la cuál iremos sumando +1 cada vez que se
complete un nivel. ¿Cómo sabríamos que niveles mostrar en pantalla? Sencillo, podemos
hacer uso del condicional «Switch«.
1
2 Switch (nivel)
3 {
case 1:
4 printf ("Nivel 1 \n Praderas champiñón");
5 break;
6
7 case 2:
8 printf ("Nivel 2 \n Lago champiñón")
break;
9
10
case 3:
11 printf ("Castillo de Peach \n La batalla Final");
12 break;
13 }
14
Como puedes ver, el «Switch» es bastante específico, tomará una decisión basada
únicamente basándose en un parámetro, en este caso ¿Qué nivel es?.
Estos únicamente pueden ser usados en una sentencia «If». Como puedes ver, una
condición puede cumplirse de muchas maneras. Supongamos que en un videojuego hay
una misión a la que el jugador no puede acceder, a menos que este sea nivel 10 (o
mayor), o a menos que este posea una espada legendaria, esto en código se vería más o
menos así:
1 if (nivel >= 10 || Espada_Legendaria == true)
2 {
3 Acceso_Misión = true;
}
4
Si el jugador cumple con alguno de esos requisitos, la misión se desbloquea. Pero ¿Qué
pasaría si la misión solo es accesible si el jugador es nivel 10 Y tiene la espada
legendaria? El código entonces luciría más o menos así:
1 if (nivel <= 10 && Espada_Legendaria == true)
2 {
3 Acceso_Misión = true;
}
4
Si el jugador cumple con ambos requisitos, se le dará acceso a la misión, si uno de esos 2
no se cumple, la misión seguirá bloqueada. Ahora ¿Cómo sería si esta misión fuera un
reto que le exige al jugador, ser completada sin usar objetos legendarios?
1 if (Espada_Legendaria ¡= true)
2 {
3 Acceso_Misión = true;
}
4
Decimos que una estructura condicional es anidada cuando por la rama del verdadero o el
falso de una estructura condicional hay otra estructura condicional.
Los condicionales anidados son sumamente útiles, pero hay que tener mucho cuidado a la
hora de usarlos, la sobrecarga de condicionales en un programa puede resultar en un
código desordenado y sumamente difícil de entender, además de acarrear dificultades en
el futuro para agregar nuevas funciones a tu programa. Por ello es importante que sepas
cuándo y cómo usar las herramientas presentadas en esta sección.