我目前正在为用 C++ 编写的游戏编写 AI。AI 在概念上相当简单,它只是遍历决策树并选择适当的动作。我以前使用 prolog 作为决策引擎,但由于其他开发人员使用 c++ 以及集成 prolog 代码的一些问题,我现在正尝试将其移植到 c++。
目前我在序言(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++ 规则引擎?