我在用Ruby写一个MUD/文字冒险游戏(请不要笑),与解析输入文本相关的优雅的基于oop的解决方案,有人能给我一些指导吗?我们只需要处理比如“将魔杖放在桌子上”这样简单的命令,但是所有东西都需要灵活;我希望以后可以轻松扩展命令集。
我的当前想法,稍微简化一下:
每个物品类别(盒子、桌子、房间、玩家)知道如何识别属于它的命令。
游戏类别了解一种领域特定语言,其中包括诸如“将对象X移动到对象Y内”、“显示对象X的描述”等操作。
游戏类别询问房间中的每个物品是否识别输入命令。首先回答“是”的物品胜出。
然后将控制权传递给物品类别中处理命令的方法。该方法使用DSL重新表述命令,将其传递回游戏对象以使其发生。
肯定有行之有效的优雅方法来处理这些事情。但是似乎无法通过谷歌找到任何东西。