【发布时间】:2011-01-13 12:16:05
【问题描述】:
我正在玩用 Ruby 编写 MUD/文本冒险(请不要笑)。谁能给我任何关于解析输入文本的优雅、基于 oop 的解决方案的指示?
我们在这里谈论的只是“把魔杖放在桌子上”更复杂的事情。但一切都需要柔软;我想稍后轻松地扩展命令集。
我目前的想法,稍微简化一下:
每个项目类别(盒子、桌子、房间、播放器)都知道如何识别“属于”它的命令。
游戏类理解一种特定于领域的语言,涉及诸如“将对象 X 移入对象 Y”、“显示对象 X 的描述”等动作。
游戏类询问房间中的每个项目是否识别输入命令。先说是就赢了。
然后它将控制权传递给项目类中处理命令的方法。此方法重新表述 DSL 中的命令,将其传递回游戏对象以使其发生。
必须有陈旧、优雅的方式来做这些事情。不过,谷歌似乎无法搜索任何内容。
【问题讨论】:
-
作为一个脚注,我当前计划的毛病是实现涉及两个对象的操作。
-
您可以从 stackoverflow.com/questions/tagged/natural-language 开始,然后看看它会导致什么。
-
塔!我刚刚将该标签添加到问题中。
-
我的第一次打勾! :) 我将同时研究有限状态机和解释器模式。在我看来,后者非常符合我目前的想法。但魔鬼会在细节中,也就是解析。我有很多想法。谢谢大家。
标签: ruby language-agnostic oop nlp