【问题标题】:What is the best and most pythonic method to design an interactive fiction library? [closed]设计交互式小说库的最佳和最 Pythonic 方法是什么? [关闭]
【发布时间】:2020-12-18 03:56:18
【问题描述】:

对于任何从事交互式小说开发和 python 开发的人,我有一个问题:我在设计选择一个用 python 制作的 IF 库时陷入僵局,完成了所有的花里胡哨,开发进展顺利直到我想出一个想法来解决我不得不解决的几个问题并使代码看起来更符合我作为库的基础的 actual 解释器,但是我似乎,我不知道,有点争议。如果你在一个 IF python 库中编码,你愿意为每个对象做这样的事情吗:

main = ObjMap()


@main.room
class my_room(Room):
    # ... other important stuff like the name and description
    west = "my_other_room"

@main.room
class my_other_room(Room):
    east = "my_room"
    def some_method(self, args, params):
        pass

或类似的东西(我需要地图,以便有一个包含整个游戏的对象):

main = ObjMap()

my_room = Room()  # ... important stuff goes in the constructor...
my_other_room = Room()
with my_other_room:
    def some_method(self, args, params):
        pass
main.create_connection(my_room, "west", my_other_room, "east")

每个都做同样的事情,并且大小接近相同,但我不确定其他 python 编码人员对每种技术的看法。这些是最好的选择,而不仅仅是制作新的编。专用于 IF 的语言。 ahem TADS 如果这是完全错误的地方,请告诉我。谢谢!

【问题讨论】:

    标签: python interactive


    【解决方案1】:

    这取决于您要使用框架还是库。

    • 框架:我会选择第一个。它看起来更像是 DSL,这是一件好事。您希望尽量减少样板文件,并使其在常见情况下尽可能简单和清晰。 Python 是基于 Python 语言制作 DSL 的绝佳选择,只要速度不是大问题并且需要图灵完备性。

    • 图书馆:我会选择第二个。它看起来像一个 API,允许您构建房间和命令的图表,但实际数据来自何处以及如何将其传递到库取决于库的用户。用户很可能自己实现 DSL,可能从文本文件等中读取。

    所以这取决于你想达到什么目标!

    【讨论】:

    • 我确实想让这个没有成为一种特殊的语言,因为已经有很多这样的东西了,所以没有理由制作或使用它.我想将 IF 的创建扩展到一种通用编程语言,不限于自定义语言语法(因此可以进行 Web 调用或将他们的程序移植到 Tkinter 等)所以我想要更多的“库” .谢谢!
    猜你喜欢
    • 2016-11-23
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多