【发布时间】:2011-04-11 01:39:38
【问题描述】:
我目前正在为用 c++ 编写的游戏编写 AI。 AI 在概念上相当简单,它只是遍历决策树并选择适当的动作。我以前使用 prolog 作为决策引擎,但由于其他开发人员使用 c++ 以及集成 prolog 代码的一些问题,我现在正尝试将其移植到 c++。
目前我在 prolog (100+) 中有一堆事实和规则。许多表达形式的东西,如果game_state然后做动作xyz。大多数规则都相当简单,有些则相当复杂。我研究了一种有限状态机方法,但这似乎并不能很好地适应更大的情况。 我第一次尝试用 c++ 编写代码是一个巨大的噩梦,即 if then else case 语句。我到处都是这种代码:
if( this->current_game_state->some_condition == true ){
if( this->current_game_state->some_other_condition == false ){
//some code
}else{
return do_default_action();
}
}else if( this->current_game->another_condition ){
//more code
}
复杂性很快变得难以控制。
如果有一种好的方法可以用 C++ 编写这类问题?有没有好的设计模式来处理这种情况?不需要逻辑必须包含在源代码中,它只需要可以从 c++ 访问。唯一真正的要求是它相当快。
我还研究了规则引擎,如果速度足够快,它们可能是合适的。你知道是否有合适的开源 c++ 规则引擎?
【问题讨论】:
标签: c++ design-patterns rule-engine