Python:选项的一个分支

Python:选项的一个分支,python,python-2.7,if-statement,branch,Python,Python 2.7,If Statement,Branch,我正在用python创建一个游戏,我试图找到一种方法来编写一个故事,然后用户选择要继续的路径,现在这听起来很简单,但是一旦你在if中添加了太多if,事情就会变得一团糟。 我试图找到一种最清晰、高效、无限的方式(你可以不断地在故事情节中添加分支,而不是因为电脑崩溃或其他原因) 我正在使用repl.it和python 2.7.13 说真的,你要读多少遍才能明白这是一个路径分支游戏,你选择一条分支到其他路径的路径,而不是一个room N E S W游戏!一个选项是对所有选项使用字典。-然后在第220行

我正在用python创建一个游戏,我试图找到一种方法来编写一个故事,然后用户选择要继续的路径,现在这听起来很简单,但是一旦你在if中添加了太多if,事情就会变得一团糟。 我试图找到一种最清晰、高效、无限的方式(你可以不断地在故事情节中添加分支,而不是因为电脑崩溃或其他原因)

我正在使用repl.it和python 2.7.13


说真的,你要读多少遍才能明白这是一个路径分支游戏,你选择一条分支到其他路径的路径,而不是一个room N E S W游戏!

一个选项是对所有选项使用字典。-然后在第220行调用
self.orient_dict

你的最佳方法可能取决于你r级Python知识。我认为David Whitlock关于使用字典的建议是一个良好的开端。如果您想要更高级的方法,您可以定义自己的Python对象(类),然后用它们构建您的“世界”(例如房间、对象、玩家、功能等)。这将是无限可扩展的


我四处查看了一下,发现这个现成的模块正好可以做到这一点:。看看它是如何工作的。

你需要为你的冒险找到正确的数据结构。对于带有“房间”的文本冒险,图形将非常合适。基本上,您将创建一个
房间
类,该类是图形中的节点。每个房间都有您可以从那里前往的房间的引用。一个非常简单的
房间
类将有
西
成员可以旅行在每个方向。一个更复杂的游戏可以有一个房间的
目录,其中的键描述了前往下一个房间的方向。

编辑:

我想出了如何回答我自己的问题,以下是我的代码:

区域1='SrtR'

def dict_area1():
    global area1
    if area1 == "SrtR":
        print ("you wake up in a forest")
        print ('''what do you do?
Choices:
    1 = find shelter
    2 = build shelter
    3 = go back 2 sleep''')
        while True:
            AC1 = input('>')
            if AC1 == '1':
                area1 = "area_1_SmlShed"
            elif AC1 == '2':
                area1 = "area_2_PileLog"
            elif AC1 == '3':
                print ('you wake up an hour later, in the same place, it is now afternoon')
                continue
            else:
                print ('that is not a choice')
                continue
            dict_area1()
    if area1 == 'area_1_SmlShed':
        print ('after searching for about an hour, you come across a small shed')
        print ('the shed seems to be abandoned')
        print ('''
Choices:
    1 = go into shed
    2 = scout shed
    3 = keep looking''')
        while True:
            AC1 = input('>')
            if AC1 == '1':
                area1 = "area_1_InShed"
            elif AC1 == '2':
                area1 = "area_BackShed"
            elif AC1 == '3':
                print ('After looking for another hour, you can\'t seem to find anything else')
            else:
                print ('that is not a choice')
                continue
dict_area1()

为了避免过度嵌套,你可以让每个if语句调用一个函数。你需要使用repl.it吗?你不能在你的计算机上安装Python吗?顺便说一句,你应该学习Python 3。不,我正在使用它,所以我不需要在家工作。不,我喜欢Python 2,而且py3完全不同,它甚至不是同一种语言。官方的Python 3 tutorial是一个很好的起点,在SO Python wiki页面中列出了一些很好的教程:。但我想最好有一个简洁的文档,面向那些想要在Python 3上获得最新速度的有能力的Python 2程序员。这里有一个更为最新的代码版本:我不知道这将如何工作,因为我正在制作一个故事情节基于游戏