Tarea
1. Instrucciones
La tarea consiste en desarrollar una aplicación interactiva utilizando NCL, Lua y las herramientas de GINGA-NCL, con el fin de responder la pregunta al público del programa quién quiere ser millonario, y mostrar la estadística de las respuestas hasta ese momento. La selección de la respuesta debe realizarse a través del control remoto (o en este caso a través de las teclas en el teclado de la máquina virtual que simulan su uso).
La pregunta
Origen
La pregunta, junto a las cuatro alternativas, tendrá que descargarla a través de su aplicación GINGA (con la ayuda del módulo tcp) desde la dirección web <http://www2.elo.utfsm.cl/~elo323/survey/get_question.php>. Revise el código fuente de la respuesta para comprender el formato de las etiquetas, las cuales tendrá que leer en el script LUA y parsear de acuerdo a si es pregunta u alternativa.
Las preguntas cambian cada una hora para que así pueda probar su software con diferentes preguntas.
Despliegue
Para el despliegue de la pregunta tendrá que desarrollar un sistema en el que la pregunta permanezca como máximo 20 segundos visible, para luego desplegar los resultados. Si una respuesta es seleccionada antes de estos 20 segundos, la alternativa seleccionada debe quedar remarcada y esperar el tiempo restante para completar los 20 segundos. Recuerde que una aplicación audiovisual debe ser atractiva visualmente, así como también clara en su ejecución. Se sugiere que agregue mensajes de espera, o de indicaciones si así lo estima necesario.
El voto
El voto tendrá que ser subido a la web a través de http://www2.elo.utfsm.cl/~elo323/survey/set_vote.php?opt=X, donde X equivale al número de la respuesta. Así, si el espectador elige la segunda alternativa para una determinada pregunta, (alternativa B), esta petición web se escribiría <http://www2.elo.utfsm.cl/~elo323/survey/set_vote.php?opt=2>. Usted tiene que encontrar la forma de generar dinámicamente la URL que transporta la opción seleccionada (opt=1, opt=2, opt=3 u opt=4). Note que el voto enviado se asignará a la pregunta de turno en el servidor, y que se debe permitirle al usuario votar sólo una vez por ejecución de la aplicación.
El resultado
Obtención
El resultado de las votaciones de la pregunta de turno en el servidor se puede obtener mediante la consulta a la web <http://www2.elo.utfsm.cl/~elo323/survey/get_results.php>. Nuevamente, revise el código fuente de esta respuesta para comprender el formato de las etiquetas retornadas. Básicamente, se entrega en un string la cantidad de votos por cada una de las alternativas en orden: opt1,opt2,opt3,opt4.
Despliegue
Para el despliegue de los resultados, se considerarán no más de 20 segundos. Este se deberá entregar en forma de porcentaje junto a un gráfico de barras de las votaciones. Este gráfico debe mostrar los porcentajes de votación de cada alternativa con respecto al total de los votos emitidos.
En resumen, el ciclo de ejecución de la aplicación es el siguiente:
Screenshots
A continuación algunos screenshots de la implementación de referencia para esta tarea. Se espera que sea capaz de implementar algo que cumpla una funcionalidad similar a la expuesta.
Antes de la votación |
Al realizar la votación |
Luego de la votación - luego de los 20 segundos transcurridos desde el inicio |
Evaluación
90% al desarrollo de la tarea
* Programa NCL
(50%): Interfaz gráfica e interactividad
* Programa Lua
(40%): Recolección de datos desde internet
(10%): Despliegue gráfico de los resultados
10% a la documentación
- Código adecuadamente comentado
- Archivo de texto con una explicación general del funcionamiento, incluyendo el ambiente utilizado, y comentarios.
Formato de entrega
Archivo comprimido en .zip, .rar, .tar, etc., de nombre: apellido1_apellido2_apellido3.zip
Enviar al correo del ayudante.
Debe contener, al menos, los siguientes archivos:
- Archivo NCL
- Archivo(s) Lua(s)
- Archivo de texto, con explicaciones
- Carpeta con los archivos de media (imágenes, audio, video, etc.)
2. Ejemplos
Básicos
Menú e interacción lua sencilla
Conexión TCP (uso de tcp.lua)
Ejemplos más complejos en una página de la comunidad brasilera.Detalles:
-Este ejemplo ya no funciona en su totalidad, por algún problema en la página a la que se conecta. Sin embargo, el código a utilizar funciona correctamente al aplicarlo a la tarea.
-Si utiliza la VM, podrá ver los "print" enviados por el código Lua.
- No compatible con Ginga4Windows(se cae por el problema mencionado anteriormente).
3. Recomendaciones y Observaciones
- Usar la VM de Telemidia o Ginga4Windows para el desarrollo, preferiblemente. Las razones: son los más simples de usar y ya fue comprobado que permiten cumplir los objetivos. Esto no prohibe el uso de las otras alternativas expuestas, que son tan válidas como las recomendadas, pero se sugieren solo para aquellos interesados en el tema y que deseen comparar las facultades de cada una.
- Revise ejemplos y ejecútelos, son la mejor manera de comprender el funcionamiento de las aplicaciones ginga. Mantenga la documentación a mano para agilizar el proceso de aprendizaje.
- Cualquier duda, consultar al ayudante.