Vamos a crear un juego clásico y muy divertido: el Ahorcado (Hangman).
Este es un excelente proyecto para principiantes porque utiliza conceptos fundamentales de Python como:
- Variables
- Bucles (
while) - Condicionales (
if,else) - Listas
- Entrada del usuario (
input) - Módulos (
random)
El Juego: Ahorcado
El objetivo del juego es adivinar una palabra secreta letra por letra antes de agotar todos los intentos. Cada vez que el jugador falla, se dibuja una parte del «muñeco» en la horca.
Código Completo
Aquí tienes el código completo. Puedes copiarlo y pegarlo en un archivo llamado ahorcado.py y ejecutarlo.
import random
def jugar_ahorcado():
"""
Función principal que contiene la lógica del juego del Ahorcado.
"""
# --- 1. Configuración Inicial ---
# Lista de palabras posibles para adivinar
palabras_secretas = ["python", "programacion", "computadora", "desarrollador", "inteligencia", "algoritmo", "variable", "funcion"]
# Elegir una palabra al azar de la lista
palabra_secreta = random.choice(palabras_secretas)
# Variables para el estado del juego
letras_adivinadas = [] # Almacenará las letras que el jugador ha adivinado correctamente
intentos_maximos = 6
intentos_realizados = 0
# "Dibujo" del ahorcado en cada etapa
etapas_ahorcado = [
"""
-----
| |
|
|
|
|
=========
""",
"""
-----
| |
O |
|
|
|
=========
""",
"""
-----
| |
O |
| |
|
|
=========
""",
"""
-----
| |
O |
/| |
|
|
=========
""",
"""
-----
| |
O |
/|\\ |
|
|
=========
""",
"""
-----
| |
O |
/|\\ |
/ |
|
=========
""",
"""
-----
| |
O |
/|\\ |
/ \\ |
|
=========
"""
]
# --- 2. Bucle Principal del Juego ---
while intentos_realizados < intentos_maximos:
# Mostrar el estado actual del juego
palabra_oculta = ""
for letra in palabra_secreta:
if letra in letras_adivinadas:
palabra_oculta += letra + " "
else:
palabra_oculta += "_ "
print("\n" + "="*20)
print("¡Juego del Ahorcado!")
print(etapas_ahorcado[intentos_realizados])
print(f"Palabra: {palabra_oculta.strip()}")
print(f"Intentos restantes: {intentos_maximos - intentos_realizados}")
# Verificar si el jugador ha ganado
if "_" not in palabra_oculta:
print("\n¡Felicidades! ¡Has adivinado la palabra!")
print(f"La palabra era: {palabra_secreta}")
break
# --- 3. Obtener y Procesar la Entrada del Usuario ---
intento = input("Adivina una letra: ").lower()
# Validar que la entrada sea una sola letra y que no se haya intentado antes
if len(intento) != 1 or not intento.isalpha():
print("Por favor, introduce una única letra válida.")
continue
if intento in letras_adivinadas:
print(f"Ya has intentado la letra '{intento}'. Intenta con otra.")
continue
# Comprobar si la letra está en la palabra secreta
if intento in palabra_secreta:
print(f"¡Bien hecho! La letra '{intento}' está en la palabra.")
letras_adivinadas.append(intento)
else:
print(f"¡Oh no! La letra '{intento}' no está en la palabra.")
intentos_realizados += 1
# --- 4. Fin del Juego ---
# Si el bucle termina porque se agotaron los intentos
if intentos_realizados == intentos_maximos:
print("\n" + "="*20)
print(etapas_ahorcado[intentos_realizados])
print("¡Lo siento! Te has quedado sin intentos.")
print(f"La palabra secreta era: {palabra_secreta}")
print("¡Mejor suerte la próxima vez!")
# --- Iniciar el juego ---
if __name__ == "__main__":
jugar_ahorcado()Explicación Paso a Paso
1. Configuración Inicial
import random
Importamos el módulo random para poder elegir una palabra al azar de nuestra lista.
palabras_secretas = ["python", "programacion", ...] palabra_secreta = random.choice(palabras_secretas)
Creamos una lista con las palabras posibles y random.choice() selecciona una de ellas para que sea nuestra palabra secreta en esta partida.
letras_adivinadas = [] intentos_maximos = 6 intentos_realizados = 0
letras_adivinadas: Una lista vacía que guardará las letras correctas que el jugador vaya encontrando.intentos_maximos: El número de errores que el jugador puede cometer antes de perder.intentos_realizados: Un contador que empieza en 0 y aumenta con cada fallo.
etapas_ahorcado = [ ... ]
Esta es una lista de strings. Cada string es una «etapa» del dibujo del ahorcado. Usamos el índice intentos_realizados para mostrar el dibujo correspondiente.
2. Bucle Principal del Juego
while intentos_realizados < intentos_maximos:
El juego continuará mientras el jugador no haya agotado sus 6 intentos.
palabra_oculta = ""
for letra in palabra_secreta:
if letra in letras_adivinadas:
palabra_oculta += letra + " "
else:
palabra_oculta += "_ "Este bloque construye la cadena que se le muestra al jugador. Recorre cada letra de la palabra_secreta. Si la letra ya ha sido adivinada (está en la lista letras_adivinadas), la muestra. De lo contrario, muestra un guion bajo (_).
if "_" not in palabra_oculta:
print("\n¡Felicidades! ¡Has adivinado la palabra!")
breakDespués de mostrar la palabra oculta, comprobamos si aún quedan guiones bajos. Si no hay ninguno, significa que el jugador ha adivinado todas las letras, por lo que ha ganado. break sale del bucle while.
3. Obtener y Procesar la Entrada del Usuario
intento = input("Adivina una letra: ").lower()Pedimos al usuario que introduzca una letra y usamos .lower() para convertirla a minúscula. Así, el juego no distingue entre ‘A’ y ‘a’.
if len(intento) != 1 or not intento.isalpha():
print("Por favor, introduce una única letra válida.")
continueHacemos una validación simple: nos aseguramos de que el usuario haya escrito exactamente un carácter y que sea una letra. Si no es así, continue salta al siguiente ciclo del bucle, pidiendo la entrada de nuevo.
if intento in palabra_secreta:
print(f"¡Bien hecho! La letra '{intento}' está en la palabra.")
letras_adivinadas.append(intento)
else:
print(f"¡Oh no! La letra '{intento}' no está en la palabra.")
intentos_realizados += 1Esta es la lógica central:
- Si la letra está en la palabra secreta: Se felicita al jugador y se añade la letra a la lista
letras_adivinadas. - Si la letra no está: Se informa del fallo y se incrementa el contador de
intentos_realizados.
4. Fin del Juego
if intentos_realizados == intentos_maximos:
print("¡Lo siento! Te has quedado sin intentos.")
print(f"La palabra secreta era: {palabra_secreta}")Si el bucle while termina porque la condición intentos_realizados < intentos_maximos se volvió falsa, significa que el jugador perdió. Mostramos el mensaje de derrota y la palabra secreta.
¿Cómo ejecutar el juego?
- Abre un editor de texto (como VS Code, Sublime Text, o incluso el Bloc de Notas).
- Copia y pega el código anterior.
- Guarda el archivo con el nombre
ahorcado.py. - Abre una terminal o línea de comandos.
- Navega hasta el directorio donde guardaste el archivo.
- Ejecuta el siguiente comando:
python ahorcado.py
¡Y listo! Ya puedes empezar a jugar.
Mejoras Posibles
Si quieres seguir practicando, puedes intentar añadir estas funcionalidades:
- Más palabras: Añade más palabras a la lista
palabras_secretas. - Categorías: Crea diferentes listas de palabras (animales, países, etc.) y deja que el jugador elija una categoría.
- Dificultad: Permite al jugador elegir la dificultad, lo que cambiaría el número de
intentos_maximos. - Interfaz gráfica: Cuando te sientas más cómodo, podrías usar librerías como
TkinteroPygamepara crear una versión visual del juego.