El desarrollo de proyectos en Kotlin es un viaje emocionante y desafiante, ¡y creemos que estás listo para comenzar! En este caso, te guiaremos para iniciar un proyecto de bola ocho mágica, un ejercicio clásico pero poderoso para trabajar en lógica y estructura de código. Así que, ¡ponte cómodo y prepárate para aprender!
¿Cómo configurar el entorno de desarrollo?
Antes de sumergirnos en el código, necesitas asegurarte de estar trabajando en un entorno adecuado. Intellij IDEA es una excelente opción, especialmente para proyectos de Kotlin, ya que ofrece herramientas de desarrollo que facilitan la codificación, depuración y prueba.
Configuraciones importantes:
Instalar Intellij IDEA: Puedes descargar la versión comunitaria gratuita desde el sitio oficial de JetBrains.
Configurar Kotlin: Generalmente, la instalación inicial de Intellij te ofrece instalar Kotlin automáticamente. Si no, agrega Kotlin mediante el gestor de plugins de Intellij.
¿Qué funciones básicas se implementan primero?
Con el entorno listo y todo preparado, es momento de comenzar el desarrollo de tu bola ocho mágica. El enfoque inicial se centra en establecer un menú interactivo que el usuario pueda utilizar.
Crear un menú en pantalla
Un menú que ofrezca interactividad es esencial para guiar al usuario en las distintas funcionalidades de tu proyecto. Aquí es donde la función readLine() se convierte en tu mejor aliado, permitiéndote recopilar la entrada del usuario desde la consola.
funmostrarMenu(){println("Hola, soy tu bola ocho mágica creada en Kotlin.")println("¿Cuál de estas opciones deseas realizar?")println("1. Quiero realizar una pregunta.")println("2. Revisar todas las respuestas.")println("3. Salir.")val valorIngresado =readLine()when(valorIngresado){"1"->realizarPregunta()"2"->mostrarRespuestas()"3"->salir()else->println("Error: opción no válida.")}}
¿Cómo manejar la entrada del usuario?
El valor capturado a través de readLine() es de tipo String?, lo que implica que puede ser nulo. Por eso, al momento de utilizarlo en una estructura de control when, lo manejamos como una cadena para evitar errores potenciales relacionados con conversiones y valores nulos. Esta práctica no solo previene errores, sino que también hace que el código sea más legible y fácil de mantener.
Consejos y mejores prácticas
Ser exhaustivo: Al manejar entradas de usuario, siempre contempla un caso else dentro del bloque when para gestionar entradas inesperadas o inválidas.
Simplicidad: Asegúrate de que tu menú y opciones sean claros y fáciles de seguir para los usuarios, esto mejora la experiencia y la interacción.
Prueba constante: Realiza pruebas de cada componente después de su implementación para verificar que funcionen correctamente y ajustar sobre la marcha cualquier detalle.
Este proyecto, aunque simple, sienta las bases para trabajar con más complejidad en el futuro. Recuerda que la práctica hace al maestro, así que no te desanimes y sigue fortaleciendo tus habilidades en Kotlin. ¡Te esperamos en la siguiente clase para otorgar más funcionalidad a este cautivador proyecto!
Creación de Menú Interactivo en Kotlin para Proyecto Bola Ocho
Creación de Menú Interactivo en Kotlin para Proyecto Bola Ocho
Les dejo estas ligeras modificaciones, espero les sirvan!
funmain(args: Array<String>){println("""
"Hello, I'm the Kotlin 8 ball. What do you want to do?"
1. Ask something
2. Check answers
3. Exit
""".trimIndent())val input =readLine()when(input){"1"->askSomething()"2"->showAnswers()"3"->exit()else->showError()}}
Al usar los 3 pares de " y la funcion trimIndent() podemos escribir de manera un poco mas natural con los saltos de linea, y evitamos ejecutar println() cada vez.
Creo que sería bueno que nos mostraran una documentación con los requisitos del proyecto para así poder intentar hacerlo nosotros y después ir comparando con el resultado del maestro
Mi menú persistente hasta elegir la opción para salir, usando bucle, caracter especial \n para usar un solo println(), y elvis operator para convertir de manera segura el string de entrada a entero o nulo, de ser nulo convertirlo 0.
fun main(){varexit:Boolean=falsewhile(!exit){println("Magic 8 Ball! Choose an option:\n1. Ask Something\n2. Check all answers\n3. Exit")when(readLine()?.toIntOrNull()?:0){1->ask()2->check()3-> exit =trueelse->showError()}}}
Ahorrar unas cuantas lineas de codigo:
Al momento que escribes en un println, puedes hacer uso de \n para poder dar un salto de linea (enter) y seguir en la misma linea. Dejo el ejemplo de como lo utilice.
fun main(args:Array<String>){println("Hola, soy tu bola 8 magica creada en Kotlin\nCual de estas opciones deseas realizar?")println("1. Realizar una pregunta\n2. Revisar todas las respuestas\n3. Salir");varvalorIngresado:String?=readLine();//Devuelve un String nulleablewhen(valorIngresado){"1"->realizarPregunta();"2"->mostrarRespuestas();"3"->salir();else->mostrarError();}}
Para evitar transcribir código sin ningun sentido. Os ahorro el trabajo: (solo es lo que el ha hecho fuera de cámaras)
val RESPUESTA_AFITMATICA = "✅"
val RESPUESTA_NEGATIVA = "❌"
val RESPUESTA_DUDOSA = "?"
val respuestas = mapOf(
"Si" to RESPUESTA_AFITMATICA,
"Es cierto" to RESPUESTA_AFITMATICA,
"Totalmente" to RESPUESTA_AFITMATICA,
"Sin duda" to RESPUESTA_AFITMATICA,
"Pregunta en otro momento" to RESPUESTA_DUDOSA,
"No puedo decrte en este momento" to RESPUESTA_DUDOSA,
"Puede que si o puede que no" to RESPUESTA_DUDOSA,
"No va a suceder" to RESPUESTA_NEGATIVA,
"No cuentes con ello" to RESPUESTA_NEGATIVA,
"Definitivamente no" to RESPUESTA_NEGATIVA,
"No lo creo" to RESPUESTA_NEGATIVA
)
los Bola 8 mágica es una esfera de plástico, hecha para parecerse a una bola ocho, que se usa para adivinación o buscando consejo. Fue inventado en 1950 por Albert C. Carter y Abe Bookman y actualmente es fabricado por Mattel. El usuario pregunta un Pregunta de sí o no a la pelota, luego le da la vuelta para revelar una respuesta en una ventana de la pelota.
Depende de dónde veas esto si lo haces desde una laptop lo encontrarás justo debajo del video, si lo haces desde un smartphone, si lo pones en forma vertical, igual debajo del vídeo verás tres apartados "Clases, **> Recursos
**, Comunidad"
Te dejo una liga para que puedas descargar el contenido Aquí
// Declaramos los valores de nuestras respuestas
const val RESPUESTA_AFIRMATIVA = "✅"
const val RESPUESTA_NEGATIVA = "❌"
const val RESPUESTA_DUDOSA = "\uD83E\uDD14"
//Unimos las respuestas con los valores
val respuestas = mapOf(
"Sí" to RESPUESTA_AFIRMATIVA,
"Es cierto" to RESPUESTA_AFIRMATIVA,
"Totalmente" to RESPUESTA_AFIRMATIVA,
"Sin duda" to RESPUESTA_AFIRMATIVA,
"Pregunta en otro momento" to RESPUESTA_DUDOSA,
"No puedo decirte en este momento" to RESPUESTA_DUDOSA,
"Puede que si o puede que no" to RESPUESTA_DUDOSA,
"No va a suceder" to RESPUESTA_NEGATIVA,
"No cuentes con ello" to RESPUESTA_NEGATIVA,
"Definitivamente no" to RESPUESTA_NEGATIVA,
"No lo creo" to RESPUESTA_NEGATIVA,
)
y este es el texto para que lo puedas copiar y pegar.
fun main(args:Array<String>){varuserOption:Stringdo{println("""Hola, soy to bola 8 mágica creada en Kotlin.¿Cuál de estas opciones deseas realizar?|1.Realizar una pregunta
|2.Revisar todas las respuestas
|3.Salir||Ingresa:""".trimMargin()) userOption =readLine()!!when(userOption){"1"->realizarPregunta()"2"->mostrarRespuestas()"3"->salir()else->mostrarErrorDeIngreso()}}while(userOption !="3")}
Hola, les comparto este repositorio que sirve de guía para el examen final, pues contiene las preguntas que se encuentran en el examen, la justificación y el video del curso donde se habla sobre eso. Espero y les sea de utilidad :D.
Platzi-Test
++CODIGO DE LA CLASE++
//Declarando valores de las respuestasconst val AFFIRMATIVE_ANSWER="✅"const val NEGATIVE_ANSWER="❌"const val DOUBTFUL_ANSWER="?"//uniendo las respuestas con sus valoresval answers =mapOf("Yes" to AFFIRMATIVE_ANSWER,"It's true" to AFFIRMATIVE_ANSWER,"Totally" to AFFIRMATIVE_ANSWER,"Undoubtedly" to AFFIRMATIVE_ANSWER,"Ask in an other moment" to DOUBTFUL_ANSWER,"I can't say you in this moment" to DOUBTFUL_ANSWER,"Maybe yes, or maybe not" to DOUBTFUL_ANSWER,"It's not going to happen" to NEGATIVE_ANSWER,"Do not count on it" to NEGATIVE_ANSWER,"Definitely not" to NEGATIVE_ANSWER,"I don't believe it" to NEGATIVE_ANSWER)fun main(args:Array<String>){//Declarando el menu principalprintln("Hello, I'm the Kotlin 8 Ball. What do you want to do?\n"+"1. Ask a question\n"+"2. Check all answers\n"+"3. Exit")//leyendo la respuesta del usuario val inputValue =readLine()//funciones a executar segun la respuesta del usuariowhen(inputValue){"1"->askQuestion()"2"->checkAnswer()"3"->exit()else->showError()}}