
1.3 Hangman游戏

1.3 Hangman游戏
在本节的内容中,将详细介绍实现一个Hangman游戏的方法,并详细讲解实现代码的功能,确保读者能够看懂游戏程序的代码。
1.3.1 项目介绍

Hangman直译为“上吊的人”,是一个猜单词的双人游戏。由第一个玩家想出一个单词或短语,而第二个玩家猜该单词或短语中的每一个字母。游戏开始时,第一个人抽走单词或短语,只留下相应数量的空白与下画线。第一个玩家一般会画一个绞刑架,当第二个玩家猜出了单词或短语中存在的一个字母时,第一个玩家就将这个字母存在的所有位置都填上。如果第二个玩家猜的字母不在单词或短语中,那么第一个玩家就给绞刑架上要画的小人添上一笔,直到7笔过后,游戏结束。例如表1-1演示了简单Hangman游戏的过程。
表1-1 简单Hangman游戏的过程

(续)

1.3.2 具体实现
实例文件hangman.py的具体实现代码如下所示。




在上述代码中,变量HANGMAN_PICS的名称全部是大写的,这是表示常量的编程惯例。常量(constant)是在第一次赋值之后其值就不再变化的变量。Hangman程序随机地从神秘单词列表中选择一个神秘单词,这个神秘单词保存在words中。
函数getRandomWord()会接受一个列表参数wordList,并返回wordList列表中的一个神秘单词,而后面的displayBoard()函数有如下所示的3个参数。
● missedLetters:玩家已经猜过并且不在神秘单词中的字母所组成的字符串。
● correctLetters:玩家已经猜过并且在神秘单词中的字母所组成的字符串。
● secretWord:玩家试图猜测的神秘单词。
另外,变量guess包含了玩家猜测的字母。程序需要确保玩家输入了有效的猜测:一个且只有一个小写字母。如果玩家没有这样做,执行会循环回来,再次要求他们输入一个字母。
本实例执行后会输出:


