本章将结合目前所学的知识,开发一个文本游戏—经典的 Hangman 猜词游戏。如 果之前没玩过,可先了解游戏的大致规则。
1.玩家一挑选一个秘密单词,单词中有多少个字母,则划多少条横线(这里用下划
线表示)。
2.玩家二每次猜一个字母。
3.如果玩家二猜测的字母正确,玩家一将下划线修改为正确的字母。在本书的游戏
版本中,如果单词中有一个字母出现两次,玩家二也必须猜两次。如果玩家二猜测错误,
玩家一则画出上吊的人的一部分身体(从头部开始),如图 10-1 所示。
#第一部分
def hangman(word):
wrong = 0#游戏要尝试次数
stages = ["",
"_____ ",
"| ",
"| | ",
"| 0 ",
"| /|\ ",
"| / \ ",
"| ",
"| "
]
rletters = list(word)#答案单词转化为单个字母
board = ["__"] * len(word)#画填词线
win = False#初始默认是错
print("weilcom to Hangman!")#欢迎词
#进入猜词环节
while wrong < len(stages) - 1:
print("\n")#空一行开始游戏
char = input("猜个字母:")#输入一个字母
if char in rletters :#如果猜的字母是对的
cind = rletters.index(char)#找到才的字母对应正确的的位置
board[cind] = char#在填词线上填上这个字母,这个就可以呈现出来了
rletters[cind] = "$"#猜对的字母就换掉,避免再猜一次
else:
wrong += 1#猜错了话就吊一下
print((" ".join(board)))#把答对的词显示出来
e = wrong + 1
print("\n".join(stages[0:e]))
if "__" not in board:
print("You Win!")
print(" ".join(board))
win = True
break
if not win:
print("\n".join(stages[0:wrong]))
print("You lose!It was {}.".format(word))
hangman("cat")
挑战练习
修改本章编写的游戏,要求从一个单词列表中随机选择单词。
#第一部分
import random
words = ("cat","dog","pig")
def hangman(word):#创建一个函数
wrong = 0#记录玩家二猜错了多少个字母
stages = ["",
"_____ ",
"| ",
"| | ",
"| 0 ",
"| /|\ ",
"| / \ ",
"| ",
"| ",
]
rletters = list(word)
board = ["__"] * len(word)
win = False
print("Welcome to Hangman")
#第二部分
while wrong < len(stages) - 1:#循环9次
print("\n")
msg = "猜一个字母:"
char = input(msg)
if char in rletters :
cind = rletters.index(char)#定位猜对的字母的索引
board[cind] = char#把横线替换成猜对的字母
rletters[cind] = "$"
else:
wrong += 1
print(("|".join(board)))
e = wrong + 1
print("\n".join(stages[0:e]))
if "__" not in board:
print("You Win!")
print(" ".join(board))
win = True
break
if not win:
print("\n".join(stages[0:wrong]))
print("You lose!It was {}.".format(word))
hang = random.choice(words)
hangman(hang)