Funcionalidades avanzadas en Kotlin: Menús y manejo de respuestas
Clase 36 de 37 • Curso de Kotlin desde Cero
Resumen
¿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!