Juego del ahorcado en Python

Hangman Wiki: 
Los orígenes de Hangman son un significado oscuro que no se ha descubierto, pero parece haber surgido en la época victoriana”, dice Tony Augarde, autor de The Oxford Guide to Word Games. El juego se menciona en los «Juegos tradicionales» de Alice Bertha Gomme en 1894 con el nombre de «Aves, bestias y peces». Las reglas son simples; un jugador escribe la primera y la última letra de una palabra y otro jugador adivina las letras intermedias. En otras fuentes, [¿dónde?] el juego se llama «Gallows», «The Game of Hangin» o «Hanger». 
 

Implementación

Este es un simple juego del ahorcado que utiliza el lenguaje de programación Python. Los principiantes pueden usar esto como un pequeño proyecto para mejorar sus habilidades de programación y comprender la lógica. 
 

  1. El programa Hangman selecciona aleatoriamente una palabra secreta de una lista de palabras secretas. El módulo aleatorio proporcionará esta capacidad, por lo que la línea 1 del programa la importa.
  2. El juego: aquí, se elige una palabra aleatoria (el nombre de una fruta) de nuestra colección y el jugador tiene posibilidades limitadas de ganar el juego.
  3. Cuando una letra de esa palabra se adivina correctamente, la posición de esa letra en la palabra se hace visible. De esta manera, todas las letras de la palabra deben ser adivinadas antes de que se acaben todas las posibilidades. 
  4. Por comodidad, hemos dado longitud de palabra + 2 oportunidades. Por ejemplo, la palabra a adivinar es mango, entonces el usuario obtiene 5 + 2 = 7 posibilidades, ya que mango es una palabra de cinco letras.

Python

# Python Program to illustrate
# Hangman Game
import random
from collections import Counter
 
someWords = '''apple banana mango strawberry
orange grape pineapple apricot lemon coconut watermelon
cherry papaya berry peach lychee muskmelon'''
 
someWords = someWords.split(' ')
# randomly choose a secret word from our "someWords" LIST.
word = random.choice(someWords)        
 
if __name__ == '__main__':
    print('Guess the word! HINT: word is a name of a fruit')
     
    for i in word:
         # For printing the empty spaces for letters of the word
        print('_', end = ' ')       
    print()
 
    playing = True
     # list for storing the letters guessed by the player
    letterGuessed = ''               
    chances = len(word) + 2
    correct = 0
    flag = 0
    try:
        while (chances != 0) and flag == 0: #flag is updated when the word is correctly guessed
            print()
            chances -= 1
 
            try:
                guess = str(input('Enter a letter to guess: '))
            except:
                print('Enter only a letter!')
                continue
 
            # Validation of the guess
            if not guess.isalpha():
                print('Enter only a LETTER')
                continue
            else if len(guess) > 1:
                print('Enter only a SINGLE letter')
                continue
            else if guess in letterGuessed:
                print('You have already guessed that letter')
                continue
 
 
            # If letter is guessed correctly
            if guess in word:
                k = word.count(guess) #k stores the number of times the guessed letter occurs in the word
                for _ in range(k):   
                    letterGuessed += guess # The guess letter is added as many times as it occurs
 
            # Print the word
            for char in word:
                if char in letterGuessed and (Counter(letterGuessed) != Counter(word)):
                    print(char, end = ' ')
                    correct += 1
                # If user has guessed all the letters
                else if (Counter(letterGuessed) == Counter(word)): # Once the correct word is guessed fully,
                                                                # the game ends, even if chances remain
                    print("The word is: ", end=' ')
                    print(word)
                    flag = 1
                    print('Congratulations, You won!')
                    break # To break out of the for loop
                    break # To break out of the while loop
                else:
                    print('_', end = ' ')
 
             
 
        # If user has used all of his chances
        if chances <= 0 and (Counter(letterGuessed) != Counter(word)):
            print()
            print('You lost! Try again..')
            print('The word was {}'.format(word))
 
    except KeyboardInterrupt:
        print()
        print('Bye! Try again.')
        exit()

Nota: Ejecute el programa en su terminal. 
 

omkarpathak@omkarpathak-Inspiron-3542:~/Documents/
Python-Programs$ python P37_HangmanGame.py 
Guess the word! HINT: word is a name of a fruit
_ _ _ _ _ 

Enter a letter to guess: m
_ _ m _ _ 
Enter a letter to guess: o
_ _ m o _ 
Enter a letter to guess: l
l _ m o _ 
Enter a letter to guess: e
l e m o _ 
Enter a letter to guess: n
l e m o n 
Congratulations, You won!

Pruébelo usted mismo Ejercicios: 
 

  • Puede mejorar aún más el programa agregando un temporizador después de cada Guess
  • También puede dar pistas desde el principio para hacer la tarea un poco más fácil para el usuario.
  • También puede disminuir la posibilidad en uno solo si la suposición del jugador es INCORRECTA. Si la conjetura es correcta, 
    la oportunidad del jugador no se reduce.

Este artículo es una contribución de Omkar Pathak . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *