Universidad Nacional de Rosario (UNR)
Facultad de Ciencias Económicas y Estadística
Licenciatura en Estadística • Licenciatura en Ciencia de Datos
Trabajo Práctico de la materia Programación 1 - Implementación del clásico juego de dados Farkle en el lenguaje R.
- Vazquez, Santos Nicolás (@nicovzq) - Comisión 4A
- Morello, Nino Julián (@ninomorello2008-coder) - Comisión 2A
- Mengarelli, Luca Franco (@lfmen) - Comisión 1B
- Se juega entre dos jugadores, alternando turnos.
- En cada turno se lanzan 5 dados.
- Cada 1 suma 100 puntos; cada 5 suma 50 puntos.
- Los dados que muestran 1 o 5 se retiran; con los restantes el jugador puede optar por seguir tirando o plantarse.
- Si ningún dado muestra 1 o 5 (situación de Farkle), el turno finaliza inmediatamente y se pierden los puntos acumulados en ese turno.
- Si todos los dados son retirados, se habilita una nueva tirada con 5 dados manteniendo el puntaje acumulado del turno en curso.
- Condición de victoria: Resulta ganador el primero en alcanzar exactamente 1000 puntos. Si la sumatoria supera ese valor, los puntos del turno en curso se descartan.
flowchart TD
A["Inicio del turno"] --> B["Lanzar dados"]
B --> C{"¿Hay 1 o 5?"}
C -- No --> D["¡Farkle! Fin del turno, 0 puntos"]
C -- Sí --> E["Retirar dados y sumar puntos"]
E --> L{"¿Puntaje total + turno > 1000?"}
L -- Sí --> M["¡Te pasaste! Fin del turno, 0 puntos"]
L -- No --> F{"¿Se retiraron los 5 dados?"}
F -- Sí --> G["Recargar 5 dados"]
F -- No --> H{"¿Seguir lanzando?"}
G --> H
H -- Sí --> B
H -- No --> J["Plantarse y sumar puntos al total"]
Para ejecutar el proyecto, se debe asegurar que el entorno cuente con R instalado.
El juego requiere instalar el paquete farkle provisto por la cátedra. Ejecutar este bloque de código una sola vez en la consola de R previo a iniciar el programa:
install.packages("pak")
pak::pkg_install("ee-unr/programacion-1/tp/farkle")Desde la terminal, situarse en el directorio raíz del proyecto y ejecutar el siguiente comando:
Rscript jugar.RAl iniciar el juego, verás la siguiente presentación en tu terminal:
____ __ ___ _ __ _ ___
| ___|/ \ | _ \ |/ /| | | __|
| _/ / _ \ | / < | |__| _|
|_| /_/ \__\|_|_\_|\_\|____|___|
================================
EL JUEGO DE DADOS
================================
├── jugar.R # Script principal (punto de entrada)
├── funciones.R # Lógica del juego: calcular_puntaje_tirada, dados_sin_puntaje, ejecutar_turno
├── interfaz.R # Interfaz de usuario: pantalla_inicio, mostrar_puntaje, mostrar_turno
├── .gitignore # Archivos y directorios excluidos del control de versiones
├── LICENSE # Especificación de la Licencia MIT
└── README.md # Documentación general del proyecto
- Modularización: El código se encuentra lógicamente separado en
interfaz.R(dedicado puramente al aspecto visual) yfunciones.R(para la lógica de cálculo). De esta forma, el script principal (jugar.R) se mantiene conciso y enfocado en el bucle principal. - Estética e Interfaz: El título principal fue diseñado mediante ASCII art para mantener un estilo sobrio de terminal, logrando una presentación adecuada al ejecutar el programa.
Usamos GitHub como repositorio compartido para el control de versiones. La redacción de la lógica y documentación fue asignada de la siguiente manera:
| Función | Responsable |
|---|---|
calcular_puntaje_tirada |
Nino Morello |
dados_sin_puntaje |
Luca Mengarelli |
ejecutar_turno |
Nino Morello |
| Función | Responsable |
|---|---|
pantalla_inicio |
Nicolás Vazquez |
mostrar_puntaje |
Nicolás Vazquez |
mostrar_turno |
Nicolás Vazquez |
| Sección | Responsable |
|---|---|
| Programa principal (bucle de rondas, lógica de fin de juego) | Luca Mengarelli |
Redacción y documentación (README.md) |
Luca Mengarelli |
Este proyecto se distribuye bajo los términos de la Licencia MIT.