Python实现Hangman游戏

编程 · 2023-08-01 · 211 人浏览

Hangman游戏

Hangman直译为“上吊的人”,是一个猜单词的双人游戏。由一个玩家想出一个单词或短语,另一个玩家猜该单词或短语中的每一个字母。第一个人抽走单词或短语,只留下相应数量的空白与下划线。

hangman_words.py

word_list = ["ardvark", "baboon", "camel"]

hangman_art.py

stages = [
    r"""
  +---+
  |   |
  O   |
 /|  |
 /   |
      |
=========
""",
    r"""
  +---+
  |   |
  O   |
 /|  |
 /    |
      |
=========
""",
    r"""
  +---+
  |   |
  O   |
 /|  |
      |
      |
=========
""",
    r"""
  +---+
  |   |
  O   |
 /|   |
      |
      |
=========""",
    r"""
  +---+
  |   |
  O   |
  |   |
      |
      |
=========
""",
    r"""
  +---+
  |   |
  O   |
      |
      |
      |
=========
""",
    r"""
  +---+
  |   |
      |
      |
      |
      |
=========
""",
]

logo = r"""
 _
| |
| |__   __ _ _ __   __ _ _ __ ___   __ _ _ __
| '_  / _` | '_  / _` | '_ ` _  / _` | '_ 
| | | | (_| | | | | (_| | | | | | | (_| | | | |
|_| |_|__,_|_| |_|__, |_| |_| |_|__,_|_| |_|
                    __/ |
                   |___/
"""

main.py

import random
from hangman_art import logo, stages
from hangman_words import word_list

chosen_word = random.choice(word_list)
word_length = len(chosen_word)
end_of_game = False
lives = 6

print(logo)

## Create blanks
display = []
for _ in range(word_length):
    display += "_"

while not end_of_game:
    guess = input("Guess a letter: ").lower()

    if guess in display:
        print(f"You've already guessed {guess}")
        continue

    # Check guessed letter
    for position in range(word_length):
        letter = chosen_word[position]
        if letter == guess:
            display[position] = letter

    # Check if user is wrong.
    if guess not in chosen_word:
        print(f"You guessed {guess}, that's not in the word. You lose a life.")
        lives -= 1

    # Join all the elements in the list and turn it into a string.
    print(f"{' '.join(display)}")

    print(stages[lives])

    if "_" not in display:
        end_of_game = True
        print("You win!")

    if lives == 0:
        end_of_game = True
        print("You lose.")
Python
Theme Jasmine by Kent Liao