Python中的字谜游戏
项目理念:
该项目的目的是在Python中创建一个游戏,其中向用户呈现一个单词的字谜,并且必须在有限的尝试次数内猜出正确的单词。
项目特点:
- 用户有固定次数的猜测正确单词的尝试。尝试次数取决于单词的长度。
- 在每次错误尝试后,都会向用户提供正确单词的提示。
- 如果用户在固定的尝试次数内无法猜出正确的单词,则会显示正确的单词并且游戏继续进行下一个单词。
- Ctrl+C 或 Ctrl+D 退出游戏。
执行:
本教程仅对基于 Linux 的系统有效。本教程是在 Linux Mint 17.1 系统上编写的。有关在其他 Linux 系统(Redhat、Arch)上的实现,请参阅本教程末尾的特别说明。
在几乎所有基于 Linux 的系统中,都有一个文件位于目录位置“/usr/share/dict/”,名称不同,如“cracklib-small”(基于 Ubuntu 的系统)、“words”(Redhat、Arch)包含字典中的单词,并且经常被许多应用程序用于实现诸如“拼写检查”之类的功能。
在这个项目中,我将使用同一个文件来创建一个字谜游戏。
阅读文件可以为我们提供游戏所需的所有单词。文件中的单词用换行符分隔,因此在读取文件时,我们需要根据字符拆分单词以获得单个单词。相同的代码如下所示:
Python3
loc='/usr/share/dict/cracklib-small'
with open(loc) as f:
content=f.read().split('\n')
f.close()
Python3
l=len(content)
words=[]
for i in range(0,l):
if '\'' in content[i] or len(content[i])<5:
continue
words.append(content[i])
Python3
words=words[1:]
d=len(words)
words=words[:d]
Python3
shuffle=list(word)
random.shuffle(shuffle)
Python3
if len(word)>7:
chances=7
else:
chances=5
tries=0
Python3
t1=random.randint(0,len(word))
t2=random.randint(0,len(word))
Python3
hint=""
for i in range(0,len(word)):
if i==t1 or i==t2:
hint=hint+word[i]
else:
hint=hint+"."
print (hint)
Python3
if tries==chances:
print ("The answer was "+word)
Python3
os=platform.dist()[0]
if os=='LinuxMint' or os=='Ubuntu':
loc='/usr/share/dict/cracklib-small'
else:
loc='/usr/share/dict/words'
该文件还包含诸如“zoo's”之类的词,但我们不希望游戏中出现此类词,因此我们可以省略它们。为了避免让游戏过于简单,我决定也省略长度小于 5 的单词,但这一步是可选的,可以跳过。相同的代码如下所示:
Python3
l=len(content)
words=[]
for i in range(0,l):
if '\'' in content[i] or len(content[i])<5:
continue
words.append(content[i])
该文件还包含文件开头的“2nd,3rd”等词。为了防止它们出现在我们的游戏中,我们通过以下方式省略它们:
Python3
words=words[1:]
d=len(words)
words=words[:d]
最后,“单词”包含了我们进行游戏所需的所有单词。
我们可以通过以下方式为特定回合的游戏选择特定单词:
word=words[random.randint(0,d)]
该单词将从创建的单词列表中随机选择。
要创建单词的字谜,我们需要对字符进行洗牌。这可以通过以下方式完成:
Python3
shuffle=list(word)
random.shuffle(shuffle)
如果为该轮选择的单词长度超过 7 次,则用户尝试 7 次,否则尝试次数为 5 次。
Python3
if len(word)>7:
chances=7
else:
chances=5
tries=0
变量“tries”跟踪用户尝试的次数。我们将其初始化为零。
在每次用户尝试期间,我们都会接受他们的输入并将其与正确的单词进行比较。如果它们匹配,我们祝贺用户并呈现下一个字谜,否则我们向他们提供提示。
为了生成特定单词的提示,我们在 0 和单词长度之间选择两个随机整数。
Python3
t1=random.randint(0,len(word))
t2=random.randint(0,len(word))
我们在这两个位置 t1 和 t2 显示正确的字符,在所有其他位置显示“.”。
Python3
hint=""
for i in range(0,len(word)):
if i==t1 or i==t2:
hint=hint+word[i]
else:
hint=hint+"."
print (hint)
如果尝试次数 = 机会次数,我们会显示正确的单词并继续游戏。
Python3
if tries==chances:
print ("The answer was "+word)
特别注意:为了使代码尽可能独立于平台,我们可以使用Python的平台模块动态选择文件的位置。
Python3
os=platform.dist()[0]
if os=='LinuxMint' or os=='Ubuntu':
loc='/usr/share/dict/cracklib-small'
else:
loc='/usr/share/dict/words'
所需的软件工具:游戏可以使用Python实现,使用模块平台和随机。这个想法是由Subham 贡献的。如果您喜欢 GeeksforGeeks 并愿意做出贡献,您还可以撰写文章并将您的文章邮寄至 review-team@geeksforgeeks.org。在 GeeksforGeeks 主页上查看您的文章并帮助其他 Geeks。