Python 中的简单 FLAMES 游戏

2024 年 8 月 29 日 | 阅读 6 分钟

Python 是一种用途广泛的编程语言,可以帮助程序员轻松完成各种活动。Python 也可以用于游戏开发。在接下来的教程中,我们将学习如何在不使用任何外部游戏库(如 PyGame)的情况下构建一个简单的 FLAMES 游戏。

但在开始之前,让我们简要了解一下 FLAMES 游戏是什么。

什么是 FLAMES 游戏?

FLAMES 是一个根据首字母缩写命名的游戏:Friends(朋友)、Lovers(爱人)、Affectionate(深情)、Marriage(婚姻)、Enemies(敌人)、Siblings(兄弟姐妹)。这是年轻女孩在睡衣派对上非常流行的一种游戏,特别是在开始探索暗恋世界的十几岁女孩中。这个游戏并不能准确预测某人是否适合某人,但可以和朋友一起玩得很开心。

如何玩 FLAMES 游戏?

FLAMES 游戏最初是在纸上玩的。因此,玩这个游戏的基本要求是笔/铅笔和纸。但是,我们将在电脑上玩这个游戏。因此,玩的方法包括以下步骤:

第一步:选择两个名字

我们将从写下两个名字开始。例如,我们将使用“LOID FORGER”和“YOR FORGER”。

第二步:取消两个名字中的重复字母

现在我们将取消两个名字中的重复字母,无论字母是大写还是小写。请注意,我们只需要取消一个名字中的一个重复字母,而不是所有重复的字母。

在上例中,从“LOID FORGER”和“YOR FORGER”中,我们将得到“LID”和“YR”。正如我们所观察到的,我们消除了 O、F、O、R、G、E 和 R 这几个重复字母。

第三步:计算剩余字母的数量

一旦我们消除了所有重复的字母,我们将计算两个名字中剩余字母的数量。

在上例中,我们将未划掉的字母组合起来得到“LIDYR”,并计算该单词的总字母数。结果是 5。

第四步:将数字与 FLAMES 首字母缩写进行比较并相应地删除字母。

现在我们将每个数字分配给首字母缩写中的每个字母,例如 1 到 F,2 到 L,3 到 A……,直到达到该数字。计数以逆时针圆周方式进行。如果到达首字母缩写的末尾,我们将重新开始计数,直到达到该数字。例如,6 到 S,那么 7 将从 F 开始,直到我们到达数字的末尾。

一旦我们到达末尾,我们将删除该字母并重新开始计数,直到只剩下一个字母。然后我们将结果与下表进行比较:

序号。信函含义
1F朋友
2L爱人
3A深情
4M婚姻
5E敌人
6S兄弟姐妹

现在让我们考虑实现上述示例,并将我们获得的数字与 **FLAMES** 首字母缩写进行比较。

FLAMES

单词中总共有 5 个字母。我们将从 F 开始计数;E 是第五个字母,所以我们将删除 E 并重新开始计数;但是,这次我们将从 S 开始。

FLAMS

现在,M 是第五个字母,所以我们将删除 M 并从 S 开始计数。

FLAS

S 是第五个字母,所以我们将删除 S 并从 F 开始计数。

FLA

L 是第五个字母,所以我们将删除 L 并从 A 开始计数。

FA

A 是第五个字母,所以我们将删除 A。我们只剩下一个字母;因此,这就是最终答案。

F

因此,关系是 F,即朋友。

Python 中 FLAMES 游戏的实现

我们将接受两个名字作为输入,然后删除公共字符及其各自的公共出现次数。为了删除,我们将创建一个用户定义的函数,该函数将分别存储两个玩家名字的字符列表,并返回连接列表的列表。一旦我们删除所有公共字符,我们将计算剩余字符的总数,并创建一个包含 FLAMES 首字母缩写的新列表,即 ["Friends", "Lovers", "Affectionate", "Marriage", "Enemies", "Siblings"]。然后,我们将使用我们获得的计数,逐个删除单词,直到列表中只剩下一个单词。列表中剩下的单词就是结果。

现在,让我们看以下代码片段,它演示了这一点。

文件:flames.py

说明

在上方的代码片段中,我们定义了一个名为 **eliminateCommonChars()** 的函数来删除公共字符及其各自的出现次数。此函数接受两个列表作为其参数。我们在此函数中使用了两个 **for** 循环来迭代这些列表。然后我们检查是否找到任何公共字符。然后我们删除该字符并使用 **True** 标志返回连接列表。如果未找到公共字符,则返回带有 **False** 标志的另一个连接列表。然后我们定义了主函数,该函数接受用户名字并将其转换为小写,将任何空格替换为空字符串,并创建一个字母或字符列表。然后我们分配一个初始标志 **True**。然后我们使用 **while** 循环并调用 **eliminateCommonChars()** 函数,直到找到公共字符或继续循环直到 proceed 标志为 **True**。然后我们计算列表中剩余的总字母数,并创建一个名为 **res** 的新列表,其中包含 FLAMES 首字母缩写。我们再次使用 **while** 循环并持续循环,直到 **res** 列表中只剩下一项。我们还存储了进行切片操作的索引值。为了执行逆时针圆周计数,我们必须检查拆分索引是否大于或等于零。最后,我们进行了列表切片和列表连接,并打印了结果。

现在让我们保存此 Python 文件,并在命令 shell 或终端中执行以下命令,然后查看输出:

命令

输出 1

First Player Name : LOID FORGER
Second Player Name : YOR FORGER
Relationship status : Friends

输出 2

First Player Name : STEVE ROGERS
Second Player Name : PEGGY CARTER
Relationship status : Lovers