Skip to content

Latest commit

 

History

32 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BlackJack Recursivo - Modelos de Programación II

Universidad Distrital Francisco José de Caldas
Proyecto Curricular de Ingeniería de Sistemas

Asignatura: Modelos de Programación II
Profesor: Alejandro Paolo Daza Corredor


Integrantes


Descripción del Proyecto

Este proyecto consiste en la implementación de un juego de Blackjack utilizando exclusivamente técnicas de programación funcional. En lugar de usar variables para mantener los estados, el flujo del juego y los cambios en el estado de la partida se gestionan mediante funciones como ciudadanos de primera clase. De esta manera, se evita el uso de estados mutables y se aplica una estructura puramente funcional.

El objetivo principal es simular una partida completa de Blackjack, donde el jugador puede tomar decisiones como pedir una carta, quedarse, o verificar el resultado del juego, todo en un flujo recursivo y funcional.

Objetivos

  • Implementar un juego de Blackjack utilizando únicamente los principios de la programación funcional para manejar la lógica del juego.

  • Profundizar en el entendimiento de la recursividad y la programación funcional, aplicándolos a un problema práctico.

Características del proyecto

El juego está diseñado de manera que toda la lógica del Blackjack, desde la repartición de cartas hasta la evaluación de la mano del jugador, es gestionada sin ninguna variable externa. El flujo del programa depende completamente de funciones de orden superior, currying y funciones recursivas, garantizando un modelo puramente funcional y recursivo.

El jugador puede tomar decisiones como:

  • Cuánto apostar.
  • Pedir cartas adicionales (Hit) o quedarse (Stand).
  • Dividir su mano (Split).
  • Aumentar su apuesta, solicitar una carta adicional y quedarse (Double down).
  • Rendirse. (Surrender)
  • Verificar el resultado final de su mano en comparación con la del dealer.

El Blackjack recursivo sigue varios de los principios del juego de 52 cartas, siendo los más importantes:

  • Un blackjack natural (Una figura o un diez + Un az) valen más que cualquier blackjack de n + 2 cartas.
  • La casa siempre va a solicitar más cartas cuando tenga un número menor a 17 cartas totales.
  • Si se excede en 21 la cantidad de cartas en la mano del jugador o del dealer, pierden.
  • Si el dealer y el jugador empatan en la suma de cartas (Siempre que no sea un blackjack natural y otro de n + 2 cartas), hay un Push.

Notas

  • Recursión Pura: La lógica de juego, incluyendo la decisión del jugador, está estructurada completamente mediante funciones recursivas y funciones de orden superior.
  • Funciones como estructura: No hay variables o bucles, lo que refuerza el uso de la programación funcional y el manejo de la memoria a través de la recursividad.
  • Tuplas y retornos por comprensión: La creación de nuevas estructuras de datos inmutables están constituidas por la comprensión, y no por la iteración con variables.

Hay varias versiones antiguas del problema de Blackjack en la carpeta PrimerasVersiones

Diagramas

Diagrama de Secuencia

Instrucciones de ejecución

Para ejecutar el proyecto, primero debe verificar que tenga instalando Python en su sistema Operativo; preferiblemente una versión 3.10 o mayor.

Estas son las siguientes instrucciones para ejecutar el proyecto:

  1. Clonar el repositorio:
   git clone https://https://github.com/BlackJack-Recursivo
  1. Navega al directorio del repositorio clonado:
   cd BlackJack-Recursivo
  1. Ejecutar el main:
   python -u main.py

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages