Proy01: Quién quiere ser millonario
Escriba un programa que permita jugar "Quién quiere ser millonario" con una base de preguntas construida para el curso. El siguiente podría ser un ejemplo de uso, aunque su equipo está en libertad de cambiar la interfaz con el programa.
Ejemplo de interacción
Interacción hipotética de ejemplo con el programa:
$ py src/millonario.py general.tsv 30000000 Escalera: 15: 30,000,000 (1/1) 14: 15,000,000 (1/2) 13: 10,000,000 (1/3) 12: 7,500,000 (1/4) 11: 5,000,000 (1/6) -------------- 10: 3,000,000 (1/10) 9: 2,000,000 (1/15) 8: 1,500,000 (1/20) 7: 1,000,000 (1/30) 6: 750,000 (1/40) -------------- 5: 500,000 (1/60) 4: 400,000 (1/75) 3: 300,000 (1/100) 2: 200,000 (1/150) > 1: 100,000 (1/300) Comodines: 1. 50:50: elimina dos opciones incorrectas 2. 2opcion: permite responder dos veces 3. op_publico: presenta resultados de una encuesta al público 1 2 3 4 5 | 6 7 8 9 10 | 11 12 13 14 15 [1=50:50|2=2opcion|3=op_publico] ^ 0 -> 100,000 1. Según el trabalenguas ¿qué comieron los tres tristes tigres? A. Helado B. Trigo C. Arroz D. Maíz Respuesta: B Definitiva? S Correcto! 1 2 3 4 5 | 6 7 8 9 10 | 11 12 13 14 15 [1=50:50|2=2opcion|3=op_publico] ^ 100,000 -> 200,000 2. ¿Cuántas vidas tiene el gato? A. Una B. Dos C. Siete D. Nueve Respuesta: 1 Aplicar comodín 50:50? S Comodín 50:50 aplicado 2. ¿Cuántas vidas tiene el gato? A. Una B. Dos C. --- D. --- Respuesta: a Correcto! 1 2 3 4 5 | 6 7 8 9 10 | 11 12 13 14 15 [---|2=2opcion|3=op_publico] ^ 200,000 -> 300,000 3. ¿En cuáles de los siguientes países se conduce por el lado izquierdo de la vía? A. Estados Unidos B. Francia C. Inglaterra D. España Respuesta: C Definitiva? S Correcto! 1 2 3 4 5 | 6 7 8 9 10 | 11 12 13 14 15 [---|2=2opcion|3=op_publico] ^ 300,000 -> 400,000 4. ¿Cuál de las siguientes no es una fruta? A. Aguacate B. Banano C. Camote D. Durazno Respuesta: C Definitiva? S Correcto! 1 2 3 4 5 | 6 7 8 9 10 | 11 12 13 14 15 [---|2=2opcion|3=op_publico] ^ 400,000 -> 500,000 5. ¿Cuántos estómagos tiene una gallina? A. Uno B. Dos C. Tres D. Cuatro Respuesta: A Definitiva? N Respuesta: B Definitiva? S Correcto! Escalera: 15: 30,000,000 (1/1) 14: 15,000,000 (1/2) 13: 10,000,000 (1/3) 12: 7,500,000 (1/4) 11: 5,000,000 (1/6) -------------- 10: 3,000,000 (1/10) 9: 2,000,000 (1/15) 8: 1,500,000 (1/20) 7: 1,000,000 (1/30) > 6: 750,000 (1/40) -------------- 5: 500,000 (1/60) 4: 400,000 (1/75) 3: 300,000 (1/100) 2: 200,000 (1/150) 1: 100,000 (1/300) Comodines: 2. 2opcion: permite responder dos veces 3. op_publico: presenta resultados de una encuesta al público 1 2 3 4 5 | 6 7 8 9 10 | 11 12 13 14 15 [---|2=2opcion|3=op_publico] ^ 500,000 -> 750,000 6. ¿En cuál campeonato mundial de fútbol Costa Rica alcanzó los cuartos de final? A. Italia 90 B. Alemania 2006 C. Brasil 2014 D. Catar 2022 Respuesta: C Definitiva? s Correcto! 1 2 3 4 5 | 6 7 8 9 10 | 11 12 13 14 15 [---|2=2opcion|3=op_publico] ^ 750,000 -> 1,000,000 7. ¿Al polímata Charles Babbage se le conoce como el padre de? A. La computación B. La ingeniería mecánica C. La ingeniería eléctrica D. La industria textilera Respuesta: 3 Aplicar comodín Opinión del público?: S Opinión del público: A. 45% B. 25% C. 10% D. 20% 7. ¿Al polímata Charles Babbage se le conoce como el padre de? A. La computación B. La ingeniería mecánica C. La ingeniería eléctrica D. La industria textilera Respuesta: A Definitiva? s Correcto! 1 2 3 4 5 | 6 7 8 9 10 | 11 12 13 14 15 [---|2=2opcion|---] ^ 1,000,000 -> 1,500,000 8. ¿En qué país se inauguró la primera línea ferroviaria del mundo? A. Estados Unidos B. Alemania C. Rusia D. Inglaterra Respuesta: D Definitiva? S Correcto! 1 2 3 4 5 | 6 7 8 9 10 | 11 12 13 14 15 [---|2=2opcion|---] ^ 1,500,000 -> 2,000,000 9. La unidad de potencia "caballo de fuerza" fue acuñada por: A. Alessandro Volta B. James Watt C. André-Marie Ampère D. Michael Faraday Respuesta: E Escalera: 15: 30,000,000 (1/1) 14: 15,000,000 (1/2) 13: 10,000,000 (1/3) 12: 7,500,000 (1/4) 11: 5,000,000 (1/6) -------------- 10: 3,000,000 (1/10) > 9: 2,000,000 (1/15) 8: 1,500,000 (1/20) 7: 1,000,000 (1/30) 6: 750,000 (1/40) -------------- 5: 500,000 (1/60) 4: 400,000 (1/75) 3: 300,000 (1/100) 2: 200,000 (1/150) 1: 100,000 (1/300) Comodines: 2. 2opcion: permite responder dos veces 9. La unidad de potencia "caballo de fuerza" fue acuñada por: A. Alessandro Volta B. James Watt C. André-Marie Ampère D. Michael Faraday Respuesta: 2 Aplicar comodín 2opcion? S Comodín 2opcion aplicado 9. La unidad de potencia "caballo de fuerza" fue acuñada por: A. Alessandro Volta B. James Watt C. André-Marie Ampère D. Michael Faraday Respuesta: D Definitiva? S Incorrecto!!! Respuesta: B Definitiva? S Correcto! 1 2 3 4 5 | 6 7 8 9 10 | 11 12 13 14 15 [---|---|---] ^ 2,000,000 -> 3,000,000 10. El artista costarricense Evangelista Blanco Brenes fue conocido por su obra A. Topiarios del parque de Zarcero B. Alegoría del café y el banano C. La vaca de Marito Mortadela D. El monumento al agricultor Respuesta: A Definitiva? S Correcto! Escalera: 15: 30,000,000 (1/1) 14: 15,000,000 (1/2) 13: 10,000,000 (1/3) 12: 7,500,000 (1/4) > 11: 5,000,000 (1/6) -------------- 10: 3,000,000 (1/10) 9: 2,000,000 (1/15) 8: 1,500,000 (1/20) 7: 1,000,000 (1/30) 6: 750,000 (1/40) -------------- 5: 500,000 (1/60) 4: 400,000 (1/75) 3: 300,000 (1/100) 2: 200,000 (1/150) 1: 100,000 (1/300) Sin comodines 1 2 3 4 5 | 6 7 8 9 10 | 11 12 13 14 15 [---|---|---] ^ 3,000,000 -> 5,000,000 11. ¿Cuál es el vertebrado que puede vivir más años? A. La tortuga gigante de Seychelles B. El elefante asiático C. El loro gris africano D. El tiburón de Groenlandia Respuesta: D Definitiva? S Correcto! 1 2 3 4 5 | 6 7 8 9 10 | 11 12 13 14 15 [---|---|---] ^ 5,000,000 -> 7,500,000 12. ¿Quién salvó más de 62,000 judíos de morir en campos de concentración? A. Carl Lutz Weg B. Nicholas Winton C. Desmond Doss D. Job Maseko Respuesta: R Se retira? S Cuál habría sido su respuesta? B La respuesta correcta es A. Carl Lutz Weg Su premio: 5,000,000 ¡Felicidades! Ha sido un honor tenerle en la silla caliente
Otro posible escenario final: jugador(a) falla una pregunta.
1 2 3 4 5 | 6 7 8 9 10 | 11 12 13 14 15 [---|---|---] ^ 5,000,000 -> 7,500,000 12. ¿Quién salvó más de 62,000 judíos de morir en campos de concentración? A. Carl Lutz Weg B. Nicholas Winton C. Desmond Doss D. Job Maseko Respuesta: B Definitiva? S Incorrecto! La respuesta correcta es A. Carl Lutz Weg Su premio: 3,000,000 ¡Felicidades! Ha sido un honor tenerle en la silla caliente
Otro posible escenario final: jugador(a) contesta todas las preguntas.
1 2 3 4 5 | 6 7 8 9 10 | 11 12 13 14 15 [---|---|---] ^ 5,000,000 -> 7,500,000 12. ¿Quién salvó más de 62,000 judíos de morir en campos de concentración? A. Carl Lutz Weg B. Nicholas Winton C. Desmond Doss D. Job Maseko Respuesta: A Definitiva? S Correcto! 1 2 3 4 5 | 6 7 8 9 10 | 11 12 13 14 15 [---|---|---] ^ 7,500,000 -> 10,000,000 13. ¿Cuál ingeniero comercializó sonido grabado en discos en lugar de cilindros? A. Thomas Alva Edison B. David Edward Hughes C. Emile Berliner D. James Russell Respuesta: C Definitiva? S Correcto! 1 2 3 4 5 | 6 7 8 9 10 | 11 12 13 14 15 [---|---|---] ^ 10,000,000 -> 15,000,000 14. ¿En qué año se creó la Wikipedia? A. 1995 B. 1997 C. 1999 D. 2001 Respuesta: D Definitiva? S Correcto! 1 2 3 4 5 | 6 7 8 9 10 | 11 12 13 14 15 [---|---|---] ^ 15,000,000 -> 30,000,000 15. ¿Cuál de las siguientes islas desapareció a causa del cambio climático? A. Tuvalu B. Maldivas C. Kale D. Carteret Respuesta: C Definitiva? S Correcto! ¡HA CONTESTADO TODAS LAS PREGUNTAS CORRECTAMENTE! Su premio: 15,000,000 ¡Felicidades! Ha sido un honor tenerle en la silla caliente
Acciones
Las siguientes son las letras con que la persona jugadora puede responder en las preguntas, sin importar si las ingresa en mayúscula o minúscula:
-
A
,B
,C
,D
: Escoge una opción para responder la pregunta -
1
,2
,3
: Aplica el comodín con ese número (si está disponible) -
E
: Ver la escalera -
R
: Rendirse, ver la respuesta, y salir del juego -
Q
: Salir del juego inmediatamente
Ante cualquier otra letra repite la pregunta. A excepción de la opción Q
, ante todas las acciones el programa debe solicitar confirmación, culturalmente con la pregunta "¿Definitivo/a?". La persona usuaria puede responder con S
para confirmar con un "Sí" o N
para indicar que cambió de opinión con un "No". También se deben aceptar sus correspondientes s
y n
en minúsculas.
Comodines
Como es habitual en este juego, el programa debe proveer tres comodines a quien juega. Su equipo puede escoger hasta un máximo de 2 comodines "tradicionales", listados a continuación.
-
50:50
-
Votación del público (encuesta con clickers)
-
Pregúntele al público (una persona da su opinión)
-
Videollamada (el progama simula la llamada y provee una respuesta)
-
Cambio de pregunta (cambia por otra pregunta de igual dificultad)
-
Segunda opción (si falla la primera opción, puede escoger una segunda)
Su equipo debe implementar al menos un comodín de inventiva propia, de tal manera que todos los equipos del grupo ofrezcan al menos un comodín distinto. Esto provee nuevas experiencias de juego.
Avance 1 (19-jun)
Para el primer avance su equipo debe presentar los siguientes entregables:
-
[5%] Un repositorio de control de versiones para el proyecto, con ambos miembros, docente y asistente.
-
[25%] Un documento de análisis (
readme
) en la raíz del repositorio que exponga:-
el problema a resolver
-
un ejemplo de interacción (al menos 3 preguntas)
-
un manual de usuario (cómo se corre y se juega con el programa)
-
los comodines y sus efectos, detallar los de invención propia
-
cómo crear nuevas preguntas para el juego en un archivo
.tsv
-
enlace al documento de diseño (ver más adelante)
-
los/as integrantes del equipo (autores/as)
-
-
[10%] Crear al menos 15 preguntas de dificultad 1 a 15 en el libro de cálculo compartido para el grupo. Exportar las hojas de cálculo completas con preguntas a archivos
.tsv
, por ejemplo,general.tsv
y guardarlas en una carpetadata/
en su repositorio de control de versiones. -
[30%] Algoritmo en pseudocódigo que permita jugar 15 preguntas de conocimiento general y de dificultad creciente sin comodines y sin premios. Simplemente permite saber si la persona jugadora acierta o no las respuestas. Escoge preguntas al azar del archivo general. Pide confirmación para responder cada una de ellas ("Definitiva?"). En caso de respuesta fallida o rendirse, muestra la respuesta correcta y termina la ejecución del juego. El algoritmo deberá estar en archivo con extensión
.pseudo
en una carpetadesign/
de su repositorio de control de versiones. En esta carpeta agregue un documentodesign/readme.adoc
que incruste el pseudocódigo. Cree un enlace desde elreadme
del repositorio hacia la carpetadesign/
. Esto facilitará la navegabilidad en el servicio de alojamiento de control de versiones (ej.: git.ucr.ac.cr). -
[30%] Implementación en Python del algoritmo del punto anterior. Sugerencia: implemente en Python sólo las subrutinas de pseudocódigo que ya hayan discutido con el docente. Su implementación debe estar en uno o varios archivos con extensión
.py
en una carpetasrc/
de su repositorio de control de versiones.
Avance 2 (03-jul)
Para el segundo avance su equipo debe aumentar tanto el pseudocódigo como el código en Python para permitir la siguiente funcionalidad:
-
[10%] Permitir a quien usa el programa escoger el archivo de preguntas (por ejemplo,
general.tsv
,compu.tsv
,videojuegos.tsv
, …). Puede hacer una pregunta al inicio del programa o preferiblemente usar argumento de línea de comandos. -
[30%] Implementar las escaleras de premios.
-
Permitir a quien juega establecer el monto del premio mayor (puede hacer una pregunta al inicio del programa o recibirlo como argumento de línea de comandos).
-
Crear la escalera de premios usando las fracciones indicadas en el ejemplo de ejecución.
-
Permite ver en todo momento la escalera vertical con la opción
E
(no es necesario mostrar las fracciones). -
Muestra automáticamente la escalera cuando se encuentra en zona segura.
-
En la escalera indica en qué peldaño se encuentra quien está jugando y las zonas seguras.
-
-
[10%] Implementar la escalera resumida (horizontal) que indica la pregunta donde se encuentra quien juega, su dinero actual, dinero que obtendría si acertara la pregunta, y comodines disponibles. Muestra la escalera horizontal al inicio de cada pregunta.
-
[45%] Implementa los tres comodines.
-
Agrega comodines disponibles a las escaleras vertical y horizontal.
-
Al final de la escalera vertical explica los comodines disponibles con una frase.
-
Permite a la persona jugadora activar los comodines por número.
-
Aplica su efecto sobre las preguntas o el estado del juego.
-
Retira comodines aplicados de las escaleras.
-
Impide activar comodines deshabilitados.
-
-
[5%] Indica el premio ganado y despide a la persona jugadora cuando:
-
Falla una pregunta (premio de última zona segura o cero)
-
Se retira (premio acumulado actual)
-
Responde correctamente las 15 preguntas.
-
Se recomienda discutir con el docente cada funcionalidad en pseudocódigo antes de implementarla en Python.
Revisiones
Las revisiones del primer proyecto serán mediante una presentación. Primero los miembros del equipo hacen una presentación del producto, corriendo el programa y jugando entre todas las personas en la reunión. Los miembros del equipo cargan el proyecto en un ambiente de desarrollo (ej.: VSCode). La persona que revisa puede solicitar explicaciones de cualquier parte del producto (ej.: una funcionalidad en el pseudocódigo o código) a cualquiera de los miembros del equipo. Ambos miembros deben estar en capacidad de explicar bien cualquier parte del producto.
Proy02: El servidor físico
Proyecto que consta de una secuencia de avances elaborados durante las lecciones, idealmente de forma individual o en parejas en función de la cantidad de recursos disponibles en la ECCI. Avances:
-
[20%] Arma la máquina física.
-
[20%] Instala un sistema operativo.
-
[10%] Configura sistema operativo para acceso remoto.
-
[20%] De forma remota a través de red virtual privada, usa comandos para clonar repositorios, correr aplicaciones en Python, entre otros.
-
[10%] De forma remota a instala y configura un servidor web.
-
[20%] Crea un sitio web personal en su repositorio personal a partir de documentos en AsciiDoc o Markdown, y lo publica en el servidor web.