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!") break
Despué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.") continue
Hacemos 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 += 1
Esta 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
Tkinter
oPygame
para crear una versión visual del juego.