简单的Python FLAMES游戏

简单的Python FLAMES游戏

Python是一种编程语言,可为程序员提供执行任何活动所需的多种功能。Python也可用于游戏开发。在接下来的教程中,让我们构建一个简单的FLAMES游戏,而不使用任何外部游戏库,如PyGame。

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

什么是FLAMES游戏

FLAMES是一个以缩略词命名的游戏:朋友,恋人,深情,婚姻,敌人,兄弟姐妹。这是一个在闺蜜之间非常流行的游戏,尤其是对于开始探索暗恋世界的青少年和青少年来说。该游戏并不能准确预测一个人是否适合某个人,但是和朋友一起玩很有趣。

如何玩FLAMES游戏

FLAMES游戏最初是在纸上玩的。因此,这个游戏的一般要求是一支笔/铅笔和纸。然而,我们将在计算机上玩这个游戏。因此,玩游戏的方法包括以下步骤:

步骤1: 取出两个名字

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

步骤2: 取消两个名字中的相同字母

我们现在将不考虑字母的大小写,取消两个名字中的相同字母。请注意,我们只需要在两个名字中取消一个字母的实例,而不是所有字母的实例。

在上面的示例中,我们将从”LOID FORGER”和”YOR FORGER”中得到”LID”和”YR”。正如我们所观察到的,我们已经从这两个单词中消除了共同的字母 – O,F,O,R,G,E和R。

步骤3: 计算剩余字母的数量

一旦我们取消了所有共同字母,我们将计算两个名字中剩下的字母的数量。

在上面的示例中,我们将组合未被取消的字母并得到”LIDYR”,然后计算该单词中的总字母数。结果得到5。

步骤4: 将数字与首字母缩写FLAMES进行比较,并相应地删除字母

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

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

S. No. Letter Meaning
1 F Friends
2 L Lovers
3 A Affectionate
4 M Marriage
5 E Enemies
6 S Siblings

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

F L A M E S

这个词中总共有5个字母。我们将从F开始计数;E是在第五个位置,所以我们会去掉E,然后再次开始计数;不过,这次我们将从S开始计数。

F L A M S

现在,M是在第五个位置,所以我们将消除M并从S开始计数。

F L A S

S处于第五个位置,所以我们将消除S并从F开始重新计数。

F L A

L处于第五个位置,所以我们将L淘汰并从A开始计数。

F A

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

F

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

在Python中实现FLAMES游戏

我们将接受两个名字作为输入,然后删除两个名字中的共同字符及其出现次数。为了删除,我们将创建一个自定义函数来分别存储两个玩家名字的字符列表,并返回一个连接的列表。一旦删除了所有共同字符,我们将计算剩余字符的总数,并创建一个结果列表,其中包含FLAMES的首字母缩写,即[“朋友”, “恋人”, “亲密”, “婚姻”, “敌人”, “兄弟姐妹”]。然后,我们将开始逐个删除单词,直到列表中只剩下一个词,使用我们得到的计数的帮助。列表中剩下的词将是结果。

现在让我们考虑以下代码片段,演示了同样的操作:

文件:flames.py

# function for removing common characters
def eliminateCommonChars(listOne, listTwo) :
    for i in range(len(listOne)) :
        for j in range(len(listTwo)) :
            if listOne[i] == listTwo[j] :
                c = listOne[i]
                listOne.remove(c)
                listTwo.remove(c)
                listThree = listOne + ["*"] + listTwo
                return [listThree, True]

    listThree = listOne + ["*"] + listTwo
    return [listThree, False]

# Driver code
if __name__ == "__main__" :
    playerOne = input("First Player Name : ")
    playerOne = playerOne.lower()
    playerOne.replace(" ", "")
    playerOneList = list(playerOne)

    playerTwo = input("Second Player Name : ")
    playerTwo = playerTwo.lower()
    playerTwo.replace(" ", "")
    playerTwoList = list(playerTwo)

    proceed = True

    while proceed :
        retList = eliminateCommonChars(playerOneList, playerTwoList)
        conList = retList[0]
        proceed = retList[1]
        starIndex = conList.index("*")

        playerOneList = conList[ : starIndex]
        playerTwoList = conList[starIndex + 1 : ]

    theCount = len(playerOneList) + len(playerTwoList)

    # list of FLAMES acronym
    res = ["Friends", "Lovers", "Affectionate", "Marriage", "Enemies", "Siblings"]

    while len(res) > 1 :
        splitIndex = (theCount % len(res) - 1)
        if splitIndex >= 0 :
            right = res[splitIndex + 1 : ]
            left = res[ : splitIndex]
            res = right + left
        else :
            res = res[ : len(res) - 1]

    # print final result
    print("Relationship Status :", res[0])

解释:

在上面的代码片段中,我们定义了一个名为 eliminateCommonChars() 的函数来删除带有相应出现次数的公共字符。该函数接受两个列表作为参数。在这个函数中,我们使用了两个 for -循环来遍历这些列表。我们然后检查是否找到了任何公共字符。然后我们删除该字符并返回连接列表的列表,并带有 True 标志。如果找不到任何公共字符,则返回带有 False 标志的连接列表。然后我们定义了一个主函数,该函数接受用户的姓名并将其转换为小写,替换任何空格为一个空字符,并创建一个字母或字符的列表。然后我们将初始标志设置为 True 。然后我们使用 while 循环并调用 eliminateCommonChars() 函数,直到找到公共字符或继续循环直到进一步标志为 True 为止。然后我们计算列表中剩余字母的总数并创建另一个由FLAMES缩写组成的列表 res 。我们再次使用 while 循环,并保持循环,直到 res 列表中只剩下一个项目。我们还存储从哪里执行切片的索引值。为了执行逆时针环绕计数,我们必须检查切分索引是否大于或等于零。最后,我们对列表进行切片和列表连接,并打印结果。

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

命令:

$ python flames.py

输出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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程