📜  Python中的字谜游戏

📅  最后修改于: 2022-05-13 01:55:43.398000             🧑  作者: Mango

Python中的字谜游戏

项目理念:
该项目的目的是在Python中创建一个游戏,其中向用户呈现一个单词的字谜,并且必须在有限的尝试次数内猜出正确的单词。

项目特点:

  1. 用户有固定次数的猜测正确单词的尝试。尝试次数取决于单词的长度。
  2. 在每次错误尝试后,都会向用户提供正确单词的提示。
  3. 如果用户在固定的尝试次数内无法猜出正确的单词,则会显示正确的单词并且游戏继续进行下一个单词。
  4. 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。