No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Creando el menú de nuestra bola mágica

35/37
Recursos

Aportes 11

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Les dejo estas ligeras modificaciones, espero les sirvan!

fun main(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

CODIGO DE LA CLASE

//Declarando valores de las respuestas
const val AFFIRMATIVE_ANSWER = "✅"
const val NEGATIVE_ANSWER = "❌"
const val DOUBTFUL_ANSWER = "?"

//uniendo las respuestas con sus valores
val 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 principal
    println("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 usuario
    when(inputValue){
        "1"->askQuestion()
        "2"->checkAnswer()
        "3"->exit()
        else->showError()
    }
    
}



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() {
    var exit: Boolean = false
    while(!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 = true
            else -> showError()
        }
    }
}

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.

fuente : https://wikioes.icu/wiki/Magic_8-ball

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 )

Horriblemente básico el ejercicio. Sin respeto alguno por los alumnos que toman el curso.

Les dejo mi versión con do-while

fun main(args: Array<String>) {
    var userOption : String
    do {
        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")
}

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");

    var valorIngresado : String? = readLine();//Devuelve un String nulleable

    when(valorIngresado){
        "1" -> realizarPregunta();
        "2" -> mostrarRespuestas();
        "3" -> salir();
        else -> mostrarError();
    }
}

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 😄.
Platzi-Test