游戏介绍
Hangman在西方是一个家喻户晓的猜词游戏。Hang的英文意思是“绞死”,而Man的英文意思是“人”。由于竞猜者在规定的猜词次数内没有猜中单词就认为被“绞死”,Hangman便由此而得名。该游戏可以训练竞猜者的反应能力,又可以测试其词汇量。西方在电视节目中经常利用该游戏进行有奖竞猜。
游戏规则
主持人暗中写出一个英语单词(有时也可以是短语或句子),不公布于众,只是告诉该词有多少个字母,并按字母的多少给出空格,然后让大家猜。竞猜者一次猜一个字母,每猜中一个字母主持人就把该字母按它在被猜词中的顺序填写到空格中。如果该词有两个(或两个以上)相同的字母,当该字母被猜中时,主持人就按字母在被猜单词中的顺序全部写出。为了限制猜词的次数,主持人画一个“绞刑架”,如果被猜的单词中没有竞猜者所猜的字母,则视为一次没猜中,主持人就在“绞刑架”下画出小人儿身体的一个部分,当小人儿被画完整的时候,竞猜者就被“绞死”了,即竞猜者就输了该次游戏。例如,主持人暗中写出school这个词,给出六个空格,并告诉竞猜者该词有六个字母。竞猜者首先可能猜有字母E,主持人告诉他,她所猜单词中没有E,并在“绞刑架”下面画一个小人儿的头;然后竞猜者继续猜有字母s,主持人就告诉他/她所猜的单词中有一个s,并按该字母在单词中的顺序填写空格,即.S _ _ _ _ _;竞猜者再猜有字母A,由于所猜词中没有A,主持人便又在“绞刑架”下画一个小人儿的躯干;竞猜者继续猜有字母o,主持人告诉大家有两个o,并填写在空格上S _ _ o o _,这时可能有竞赛者会猜中是school,那么他/她就赢了这次游戏。如果没猜中,就再在“绞刑架”下面画小人儿的腿、胳膊、手和脚。当画成整个小人儿的时候,竞猜者就输了游戏。
游戏代码
改编后代码还原
import random
HANGMAN_PICS = ['''
+-----+
| |
|
|
|
===''', '''
+-----+
| |
O |
|
|
===''', '''
+-----+
| |
O |
| |
|
===''', '''
+-----+
| |
O |
/| |
|
===''', '''
+-----+
| |
O |
/|\ |
|
===''', '''
+-----+
| |
O |
/|\ |
/ |
===''', '''
+-----+
| |
O |
/|\ |
/ \ |
===''']
words = 'you are died '.split(' ')
def getRandomWord(wordList):
wordIndex = random.randint(0, len(wordList) - 1)
return wordList[wordIndex]
def displayBoard(missedLetters, correctLetters, secretword):
print(HANGMAN_PICS[len(missedLetters)])
print()
print('密信:', end=' ')
for letter in missedLetters:
print(letter, end=' ')
print()
blanks = '*' * len(secretword)
for i in range(len(secretword)):
if secretword[i] in correctLetters:
blanks = blanks[:i] + secretword[i] + blanks[i + 1:]
for letter in blanks:
print(letter, end=' ')
print()
def getGuess(alreadyGuessed):
while True:
print('猜一封信(输入一个字母):')
guess = input()
guess=guess.lower()
if len(guess) != 1:
print('请输入一个字母:')
elif guess in alreadyGuessed:
print('你已经猜过那个单词了。再选择一次。')
elif guess not in 'abcdefghijklmnopqrstuvwxyz':
print('请输入一封信')
else:
return guess
def playAgain():
print('你还想在玩一遍吗(yes or no)')
return input().lower().startswith('y')
print('上吊的人')
missedLetters = ''
correctLetters = ''
secretWord = getRandomWord(words)
gameIsDone = False
while True:
displayBoard(missedLetters, correctLetters, secretWord)
guess = getGuess((missedLetters + correctLetters))
if guess in secretWord:
correctLetters = correctLetters + guess
foundAllLetters = True
for i in range(len(secretWord)):
if secretWord[i] not in correctLetters:
foundAllLetters = False
break
if foundAllLetters:
print('恭喜你,这个神秘的密码是 ' + secretWord + '! 你已经赢了!')
gameIsDone = True
else:
missedLetters = missedLetters + guess
if len(missedLetters) == len(HANGMAN_PICS) - 1:
displayBoard(missedLetters, correctLetters, secretWord)
print('你已经猜不透了!\n接着 ' + str(len(missedLetters)) + ' 漏掉的猜测和 ' + str(
len(correctLetters)) + ' 猜对了,这个词是 "' + secretWord + '"')
gameIsDone = True
if gameIsDone:
if playAgain():
missedLetters = ''
correctLetters = ''
gameIsDone = False
secretWord = getRandomWord(words)
else:
break
print("you are died!")