Un juego clásico del ahorcado implementado en Python con arquitectura hexagonal.
Hanged Man es una implementación del clásico juego del ahorcado en la consola. El juego consiste en adivinar una palabra elegida aleatoriamente letra por letra. El jugador tiene un número limitado de intentos para adivinar la palabra completa, dependiendo del nivel de dificultad seleccionado.
- Python: Lenguaje de programación principal (versión >=3.11)
- uv: Herramienta para gestionar dependencias y entornos virtuales
- Arquitectura Hexagonal: Patrón de diseño para separar la lógica de negocio de la infraestructura
El proyecto sigue la arquitectura hexagonal (también conocida como "Ports and Adapters"), que divide la aplicación en tres capas:
-
Dominio: Contiene las entidades y reglas de negocio centrales
app/domain/: Clases comoWord,Level, y la interfazGameState
-
Aplicación: Contiene la lógica de la aplicación
app/application/: ClaseApplicationque implementa la lógica del juego
-
Infraestructura: Contiene adaptadores para interactuar con el mundo exterior
app/infrastructure/: Implementaciones concretas comoConsole,Game,GameStateImpl, yWordRepository
Esta arquitectura permite una clara separación de responsabilidades y facilita las pruebas y el mantenimiento.
hanged_man/
├── app/
│ ├── application/
│ │ └── application.py
│ ├── domain/
│ │ ├── game_state.py
│ │ ├── level.py
│ │ └── word.py
│ └── infrastructure/
│ ├── console.py
│ ├── game.py
│ ├── game_state_impl.py
│ └── word_repository.py
├── data/
│ └── words.txt
├── main.py
├── pyproject.toml
├── README.md
└── uv.lock
- Asegúrate de tener Python 3.11 o superior instalado
- Clona este repositorio:
git clone https://github.com/fedeegmz/hanged_man.git cd hanged_man - Instala uv si aún no lo tienes:
pip install uv - Crea un entorno virtual e instala las dependencias:
uv sync source .venv/bin/activate
- Ejecuta el juego:
uv run main.py - Sigue las instrucciones en pantalla:
- Se mostrará un mensaje de bienvenida
- Selecciona un nivel de dificultad
- Adivina la palabra letra por letra
El juego ofrece cuatro niveles de dificultad:
- Nivel 1: La primera y última letra de la palabra se revelan automáticamente.
- Nivel 2: Tienes un límite de intentos igual a 3 veces la longitud de la palabra.
- Nivel 3: Tienes un límite de intentos igual a 2 veces la longitud de la palabra.
- Nivel DIOS: Tienes un límite de intentos igual a la longitud de la palabra.
- Solo puedes ingresar letras en minúscula
- Debes adivinar la palabra completa antes de quedarte sin intentos
- El juego termina cuando:
- Adivinas todas las letras de la palabra (¡Ganaste!)
- Agotas todos tus intentos (¡Perdiste!)