Spaces:
Sleeping
Sleeping
| from shiny import App, ui, render, reactive | |
| import random | |
| # ========================= | |
| # Diccionario del juego UNTREF | |
| # ========================= | |
| acertijos = { | |
| 1: { | |
| "pista": "Universidad pública argentina con fuerte enfoque en inclusión y territorio", | |
| "respuesta": "untref" | |
| }, | |
| 2: { | |
| "pista": "Modalidad que combina instancias presenciales y virtuales en UNTREF", | |
| "respuesta": "sied" | |
| }, | |
| 3: { | |
| "pista": "Carrera vinculada al comercio exterior y redes globales", | |
| "respuesta": "relaciones comerciales internacionales" | |
| }, | |
| 4: { | |
| "pista": "Sistema institucional que regula la educación a distancia", | |
| "respuesta": "sied" | |
| }, | |
| 5: { | |
| "pista": "Tipo de universidad: pública, gratuita y con compromiso social", | |
| "respuesta": "publica" | |
| } | |
| } | |
| # ========================= | |
| # Estados reactivos | |
| # ========================= | |
| acertijo_actual = reactive.Value(1) | |
| resultado_estado = reactive.Value("") | |
| puntaje = reactive.Value(0) | |
| # ========================= | |
| # Interfaz | |
| # ========================= | |
| app_ui = ui.page_fluid( | |
| ui.h2("🎓 Desafío UNTREF"), | |
| ui.p("Respondé los acertijos sobre la universidad"), | |
| ui.hr(), | |
| ui.h4("📌 Pista"), | |
| ui.output_text("pista"), | |
| ui.input_text("respuesta", "Tu respuesta"), | |
| ui.input_action_button("verificar", "✅ Verificar respuesta"), | |
| ui.input_action_button("siguiente", "➡️ Siguiente desafío"), | |
| ui.hr(), | |
| ui.h4("🧠 Resultado"), | |
| ui.output_text("resultado"), | |
| ui.hr(), | |
| ui.h4("⭐ Puntaje"), | |
| ui.output_text("puntaje_actual") | |
| ) | |
| # ========================= | |
| # Servidor | |
| # ========================= | |
| def server(input, output, session): | |
| def pista(): | |
| return acertijos[acertijo_actual()]["pista"] | |
| def resultado(): | |
| return resultado_estado() | |
| def puntaje_actual(): | |
| return f"Puntaje: {puntaje()}" | |
| def verificar_respuesta(): | |
| respuesta_usuario = input.respuesta().lower().strip() | |
| respuesta_correcta = acertijos[acertijo_actual()]["respuesta"] | |
| if respuesta_usuario == respuesta_correcta: | |
| resultado_estado.set("✅ Correcto! Sumás 1 punto.") | |
| puntaje.set(puntaje() + 1) | |
| else: | |
| resultado_estado.set(f"❌ Incorrecto. Respuesta esperada: {respuesta_correcta}") | |
| def siguiente_acertijo(): | |
| nuevo = random.choice(list(acertijos.keys())) | |
| acertijo_actual.set(nuevo) | |
| resultado_estado.set("") | |
| session.send_input_message("respuesta", {"value": ""}) | |
| # ========================= | |
| # App | |
| # ========================= | |
| app = App(app_ui, server) | |