Python中的刽子手游戏
刽子手是一个文字游戏,电脑会从字典中随机选择一个单词,玩家必须在给定的回合数内正确猜出它。要猜的单词由一排星星表示。如果猜测的字母是单词,脚本将自动放置到正确的位置。
Rules to guess the word :
- Input single letter in one turn.
- Don’t use repeated letters.
- Turns will be decremented after every guess.
这是代码words.txt中使用的文本文件,其中包含50,000个英文单词。
需要的模块:
import random
下面是实现:
# Python program to implement Hangman game
# Importing random module
import random
# Function to randomly select
# a word from dictionary
def get_word():
# Path to the text file
with open('/Users/Admin/Desktop/words.txt', 'r') as f:
# Reads each word after splitting
words1 = f.read().splitlines()
# Returns any random word
return random.choice(words1)
myword = get_word()
# Function prints row of
# stars in place of words
for i in myword:
print("*", end = " ")
# Calculating length of word
l = len(myword)
print("\nWord has %d letters" %l)
# Check if entered letter is correct
def check(myword, your_word, guess1):
status = ''
matches = 0
for letter in myword:
if letter in your_word:
status += letter
else:
status += '*'
if letter == guess1:
matches += 1
if matches > 1:
print(matches, guess1)
elif matches == 1:
print(guess1)
return status
# Main Game function
def game():
guess = 0
guessed = False
your_word = []
turns = len(myword) + 1
turns1 = turns
print("Total turns: ", turns)
while guess < turns1:
guess1 = input("Enter your guess: ")
# Decrementing turn
# after every guess
turns -= 1
# Print turns left
print("Turns left", turns)
# If letter is already guessed
if guess1 in your_word:
print("You already guessed")
elif len(guess1) == 1:
# Appending the letters
# on their place
your_word.append(guess1)
result = check(myword, your_word, guess1)
if result == myword:
guessed = True
print("You won " + name)
print(myword)
else:
print(result)
else:
print("Invalid entry")
guess += 1
if guess == turns1:
print("Word is:")
print(myword)
# Driver Code
game()
输出 :
* * * * *
Word has 5 letters
Total turns: 11
Enter your guess: a
Turns left 10
**********
Enter your guess: i
Turns left 9
i
**i**i****
Enter your guess: s
Turns left 8
s
**i**i**ss
Enter your guess: r
Turns left 7
**i**i**ss
Enter your guess: h
Turns left 6
**i**i**ss
Enter your guess: e
Turns left 5
e
**i**i*ess
Enter your guess: o
Turns left 4
**i**i*ess
Enter your guess: u
Turns left 3
u
*ui**i*ess
Enter your guess: t
Turns left 2
t
*ui*ti*ess
Enter your guess: n
Turns left 1
n
*ui*tiness
Enter your guess: l
Turns left 0
l
*uiltiness
Word is:
guiltiness