SDL中文论坛

标题: AI执行环境 [打印本页]

作者: ancientcc    时间: 2020-9-5 19:11
标题: AI执行环境
AI执行环境指的是AI执行时需要的相关数据结构。具体就是这些数据结构是哪些,它们是如何被构造,被析构。

(, 下载次数: 2609)
要分析以上执行环境中各数据结构关系,比较好的办法是分板manager::play_turn的执行流程.

一、准备AI执行环境(假设第一次执行)
1.1:根据side_num从ai_map_定位出holder对象;
1.2:检测到holder成员ai_是NULL,意味着需要构造composite_ai对象。构造ai_composite对象。
1.3:根据config生成stage对象,由config生成stage要分两步骤。
1.3.1:由config生成engine对象。stage这个config的engine=cpp,创建对应的engine_cpp对象,这个对象放在readonly_context_impl内;
1.3.2:由engine生成stage对象。stage这个config的name=testing_ai_default::fallback,创建对应的testing_ai_default::fallback_to_other_ai对象,这个对象放在ai_composite内。
1.4:testing_ai_default::fallback_to_other_ai构造完成后,生成内部ai_ptr对象。stage这个config中的[ai]标签是空,即ai_algorithm字段值是空字段,这时构造对应的ai_default对象。
1.5:由1.2出来的ai_composite指针返回给调用程序,即manger::play_turn中的ai_obj。

二、执行AI行为
2.1:调用ai_composite中所有stage的do_play_stage方法。由于ai_composite只有一个stage,即testing_ai_default::fallback_to_other_ai对象,调用这对象上的do_play_stage方法;
2.2:fallback_to_other_ai::do_play_stage调用内部成员fallback_ai_的play_turn方法。fallback_ai_就是ai_default对象。
2.3:ai_default::play_turn调用主要AI函数do_move。
2.4:所有stage的do_play_stage被调用后,清空unit_stages_chche_。




欢迎光临 SDL中文论坛 (http://www.libsdl.cn/bbs/) Powered by Discuz! X3.3