Funcionalidades avanzadas en Kotlin: Menús y manejo de respuestas
Clase 37 de 38 • Curso de Kotlin desde Cero
Contenido del curso
Configuración del entorno
Hola mundo Kotlin
- 8

Estructura y Funcionalidad de Archivos en un Proyecto Kotlin
03:20 min - 9

Variables en Kotlin: Lectura, Escritura y Constantes
06:30 min - 10

Tipos de Variables y Operaciones en Kotlin
12:31 min - 11

Tipos de Datos y Objetos en Kotlin: Ventajas y Funcionalidades
03:40 min - 12
Operadores y Funciones en Kotlin: Uso y Extensión
01:27 min - 13

Programación Funcional en Kotlin: Paradigmas y Variables Inmutables
02:54 min - 14

Estructuras de Control: Uso de IF en Kotlin
11:55 min - 15

Estructura de Control "When" en Kotlin: Uso y Ejemplos Prácticos
14:20 min
Conceptos básicos de Kotlin
- 16

Bucle while y do-while en Kotlin: Condicionales y Ejecución
06:23 min - 17

Ciclo For y Funciones de Extensión en Kotlin
13:10 min - 18

Null Safety en Kotlin: Evita Errores por Referencias Nulas
04:53 min - 19

Gestión de Tipos Nulables en Kotlin y Buenas Prácticas
06:17 min - 20

Manejo de Excepciones en Kotlin: Try-Catch y Lanzamiento de Errores
10:29 min - 21

Uso del Operador Elvis en Kotlin para Nulables
02:37 min
Collections en Kotlin
Libera el potencial de las funciones
- 26

Creación de funciones propias en Kotlin
03:30 min - 27

Creación de Funciones en Kotlin: Uppercase y Lowercase Aleatorios
11:23 min - 28

Parámetros Nombrados y por Defecto en Funciones de Programación
05:06 min - 29

Creación y Uso de Lambdas en Kotlin
08:50 min - 30

Funciones de Alto Orden y Lambdas en Kotlin
07:33 min
Scope functions
- 31

Uso de la función let en Kotlin para variables nulas
03:28 min - 32

Uso de la función "with" en Kotlin para manejar propiedades
02:10 min - 33

Uso de la Función Run para Operaciones en Listas en Kotlin
02:54 min - 34

Uso de la función apply para manejar tipos anulables en Kotlin
04:28 min - 35

Uso de la Función Also en Kotlin para Encadenamiento de Operaciones
02:18 min
Proyecto: Bola 8 mágica
¿Cómo continuar el proyecto en Kotlin?
En el vídeo anterior, ya hemos cubierto la mitad de nuestro proyecto en Kotlin. Hemos creado las constantes, mapas para las respuestas y diseñado un menú interactivo para que el usuario ingrese sus opciones. Ahora, procederemos a asignarles funcionalidad a cada una de estas opciones en nuestro entorno de desarrollo IntelliJ, en particular, veremos cómo añadir funciones interactivas al juego para hacerlo mucho más completo y atractivo.
¿Cómo generar una respuesta aleatoria a una pregunta?
Creamos una función llamada realizarPregunta que le solicita al usuario su pregunta. Sin embargo, no almacenaremos esta pregunta. La idea es generar una respuesta aleatoria en base al mapa de respuestas que se encuentra en nuestro proyecto.
fun realizarPregunta() {
println("¿Qué pregunta deseas realizar?")
readLine() // Capturamos la pregunta del usuario
val respuestaGenerada = respuestas.keys.random()
println("La respuesta a eso es: $respuestaGenerada")
}
¿Cómo mostrar las respuestas categorizadas por tipo?
Para ello, vamos a desarrollar una función que le permita al usuario elegir entre distintas categorías de respuestas. Creamos un nuevo menú y asignamos funciones específicas para mostrar cada categoría: afirmativas, dudosas y negativas.
fun mostrarRespuesta() {
println(
"""
Selecciona una opción:
1. Revisar todas las respuestas
2. Revisar solo las respuestas afirmativas
3. Revisar solo las respuestas dudosas
4. Revisar solo las respuestas negativas
""".trimIndent()
)
when (readLine()?.toIntOrNull()) {
1 -> mostrarRespuestasPorTipo()
2 -> mostrarRespuestasPorTipo("afirmativa")
3 -> mostrarRespuestasPorTipo("dudosa")
4 -> mostrarRespuestasPorTipo("negativa")
else -> println("Respuesta no válida. Adiós.")
}
}
fun mostrarRespuestasPorTipo(tipoRespuesta: String = "todas") {
when (tipoRespuesta) {
"afirmativa" -> respuestas.filterValues { it == "afirmativa" }
"dudosa" -> respuestas.filterValues { it == "dudosa" }
"negativa" -> respuestas.filterValues { it == "negativa" }
else -> respuestas
}.keys.forEach { println(it) }
}
¿Qué hacer para finalizar el juego o manejar errores?
Implementaremos las funciones sencillas para terminar el programa y manejar errores en caso de que el usuario ingrese comandos no válidos.
fun salir() {
println("Hasta luego.")
}
fun mostrarError() {
println("Vaya, parece que has elegido una opción no válida. Intenta de nuevo.")
}
¿Cómo ejecutar y probar el programa en diferentes sistemas operativos?
El programa en Kotlin puede presentar un comportamiento algo distinto en Windows debido a un bug conocido en la terminal IntelliJ. Asegúrate de presionar 'Enter' para permitir la ejecución correcta de las diferentes opciones.
Para ejecutar el programa:
- Haz clic en el botón verde para compilar y correr el programa.
- Sigue las instrucciones en pantalla, prestando atención al comportamiento en Windows.
Reto final: Refactorización del código
He aquí un pequeño reto: refactoriza el código para evitar repetición en las funciones utilizando una variable externa. Investiga sobre el uso de funciones auxiliares y comparte tu resultado en los comentarios. ¡Nos encantaría ver cómo implementas esta optimización!
El aprendizaje continuo en Kotlin y la práctica constante son clave para dominar este lenguaje. ¡Sigue adelante y no te detengas en tu viaje de conocimiento!