"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Programando el ahorcado en Python

Programando el ahorcado en Python

Publicado el 2024-11-09
Navegar:471

Programming Hangman in Python

Para aquellos que no lo saben, Hangman es un juego de adivinanzas de palabras que tradicionalmente se juega con lápiz y papel. Se elige una palabra en secreto y lo único que se sabe de ella es el número de letras que tiene. Luego, el jugador adivina una letra y, si está en la palabra, se revela su posición. Las conjeturas incorrectas cuentan en contra del jugador. Si adivinas la palabra, ganas, si haces demasiadas conjeturas incorrectas, se acabará el juego.

Bien, ahora que todos sabemos lo que implica el juego, veamos cómo se vería cuando se juega en Python.

Word: ---
Wrong guesses: 
Guess a letter > a

Word: -a-
Wrong guesses: 
Guess a letter > g

Word: -a-
Wrong guesses: g
Guess a letter > t

Word: -at
Wrong guesses: g
Guess a letter > c

Word: cat
Well done! You guessed the word with 1 wrong guesses.

Empezando

Comencemos un nuevo programa Python para crear este juego. Necesitaremos una palabra para adivinar y una forma de realizar un seguimiento de las conjeturas correctas e incorrectas.

word = "something"
guessed_letters = []
incorrect_letters = []

¿Qué pasa con los corchetes? Eso es Python, habla de una nueva lista. Una lista es una variable que puede almacenar más de un valor. En este caso vamos a almacenar letras en las listas, pero Python te permitirá poner cualquier cosa ahí.

Nuestro juego será esencialmente un bucle que le mostrará al jugador las partes de la palabra adivinadas hasta el momento y luego le pedirá que adivine otra vez. Podemos usar un bucle while para implementar esto. Pero ¿cuál debería ser nuestra condición para finalizar el ciclo? Bueno, hay dos razones por las que querríamos terminar el juego:

  • El jugador ha adivinado todas las letras correctas.
  • El jugador ha hecho demasiadas conjeturas erróneas.

La primera condición se cumple cuando el número de letras en la lista de letras adivinadas es el mismo que el número de letras en la palabra. Entonces nuestro bucle debe ejecutarse mientras ese no sea el caso. En Python, esto se puede escribir como len(guessed_letters) != len(word). La función len() le indica la longitud de una lista o cadena.

La segunda condición se cumple cuando el número de letras en la lista de letras_incorrectas es mayor que el número máximo de conjeturas permitidas. Por lo tanto, nuestro bucle también debe ejecutarse mientras ese no sea el caso. En Python esto se puede escribir como len(incorrect_letters)

Poniéndolo todo junto, nuestro ciclo while comienza así.

# Game loop.
MAX_WRONG_GUESSES = 5

while len(guessed_letters) != len(word) and len(incorrect_letters) 



Dentro de nuestro bucle necesitaremos hacer cuatro cosas:

  1. Muestra la palabra al jugador.
  2. Muestra la lista de conjeturas incorrectas.
  3. Obtén una suposición del jugador.
  4. Registra si la suposición es correcta o incorrecta.

Abordémoslos en orden.

mostrando la palabra

Necesitamos mostrarle la palabra al jugador, pero solo se deben revelar las letras que ha adivinado correctamente. El resto de las letras deben reemplazarse por un carácter de guión. Escribamos una función que haga esto por nosotros. Se necesitarán dos argumentos, la palabra a mostrar y una lista de letras adivinadas correctamente.

def show_word(word, letters):
    print("Word: ", end="")
    for letter in word:
        if letter in letters:
            print(letter, end="")
        else:
            print("-", end="")
    print()

Recorremos cada letra de la palabra usando un bucle for. Luego verificamos si la letra está en la lista de letras usando el operador in. Si es así, lo imprimimos. Si no, imprimimos un guión en su lugar. Usamos el argumento end="" en las llamadas de impresión para detener la impresión de una nueva línea.

Mostrando las conjeturas equivocadas

Escribamos otra función para mostrar las conjeturas incorrectas. Éste es mucho más sencillo que el anterior. Toma un solo argumento, la lista de conjeturas incorrectas, y usa nuevamente un bucle for para imprimir cada una.

def show_wrong_guesses(guesses):
    print("Wrong guesses: ", end="")
    for letter in guesses:
        print(letter, end="")
    print()

Obtener la suposición del jugador

Nuestra próxima función obtendrá una suposición del jugador. Para asegurarnos de que el reproductor realmente escriba algo, usaremos un bucle while. Seguiremos pidiéndoles una suposición hasta que escriban una. Finalmente, una suposición debe ser solo una letra, por lo que solo les devolvemos el primer carácter que escriban.

def get_letter():
    letter = ""
    while letter == "":
        letter = input("Guess a letter > ")
    return letter[0]

Grabando la suposición

Una vez que tengamos una carta del jugador podemos decidir cuál de nuestras dos listas debemos agregarla también. Si la letra está en la palabra, es una suposición correcta. Podemos agregarlo a la lista de letras adivinadas usando el método append(). Si no está en la palabra, debe agregarse a la lista de letras_incorrectas. Pero también debemos comprobar si la letra ya ha sido adivinada antes. Esto lo hacemos comprobando si es una de las listas con el operador in. (De esta manera, cada conjetura solo se registra una vez).

if letter in word and letter not in guessed_letters:
    guessed_letters.append(letter)
elif letter not in incorrect_letters:
    incorrect_letters.append(letter)

Terminando el juego

Por último, pero no menos importante, debemos mostrar un mensaje adecuado al jugador cuando finalice el ciclo del juego. Dependiendo de si acertaron o no la palabra, el mensaje será de éxito o fracaso. ¿Cómo sabemos si adivinaron la palabra correctamente? El número de letras en la lista de letras adivinadas tendrá la misma longitud que la palabra.

# End of game message.
if len(guessed_letters) == len(word):
    show_word(word, guessed_letters)
    print(f"Well done! You guessed the word with {len(incorrect_letters)} wrong guesses.")
else:
    print(f"Too many wrong guesses! The word was '{word}'")

¡Eso es todo! Tenemos un juego completo del Ahorcado. Para hacer el juego más difícil o más fácil, cambia la cantidad de aciertos incorrectos permitidos.

Listado completo de programas

def show_word(word, letters):
    print("Word: ", end="")
    for letter in word:
        if letter in letters:
            print(letter, end="")
        else:
            print("-", end="")
    print()


def show_wrong_guesses(guesses):
    print("Wrong guesses: ", end="")
    for letter in guesses:
        print(letter, end="")
    print()


def get_letter():
    letter = ""
    while letter == "":
        letter = input("Guess a letter > ")
    return letter[0]


word = "something"
guessed_letters = []
incorrect_letters = []


# Game loop.
MAX_WRONG_GUESSES = 5

while len(guessed_letters) != len(word) and len(incorrect_letters) 




          

            
        
Declaración de liberación Este artículo se reproduce en: https://dev.to/robc79/programming-hangman-in-python-2c73?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3