这是我遇到的一个非常具体的问题:
我正在研究一个基于文本的RPG,其主要工作是实现一个编辑器,它可以添加NPC,项目并将它们放在地图上(...),而不需要任何编程知识。
所有这些事情都可以通过执行一些SQL查询来完成,整个过程已经有效了。现在我正在进行任务编辑。我的基本概念是,每次玩家输入命令时,都会查询特定字符串的数据库条目,该条目链接到一组具有唯一ID的条件和操作。这些在java代码中被查询,其中特定条件(例如,玩家货币等于100)具有返回结果的代码的一部分。这意味着,每次输入命令时都必须传递数百个(或更多)IF - 与根据命令的操作相同。我甚至不确定这是否正确(如果有人对此提出建议,请随时发布)。
现在的观点是,任务基本上由任务阶段组成,其中还包括启用条件和启用时执行的操作。这意味着,对于每个输入的命令,所有这些查询都必须进行。我想过使用某种触发器,但是我不知道如何实现它,因为我真的不想编辑这个编辑器中的java代码。我也考虑使用prolog,但在这种情况下,我必须在java代码中添加触发器。
我知道在这样的论坛中这有点难以处理,但如果有人有建议,我会很高兴。
修改
正如评论中所建议的那样,我想缩短整个事情:如果任何命令(houndres或千人)可以触发一个特定的任务/任务阶段(成千上万)并且这些触发器应该设置为编辑,有什么方法可以实现呢?
答案 0 :(得分:1)
你可以代表玩家作为事实做出的每一个行动/决定,你可以插入到drools知识会话中。
在该会话中,您可以将所有“触发器”存储为drools规则,当内存中的事实集合与条件匹配时,将触发该规则。
drools支持动态添加/删除/编辑规则,并且明确地旨在允许非开发人员使用更简单的规则语言编写逻辑。
开头的drools的特定部分是核心 - drools expert