轮到草绿色AI时,经过analyze_targets之后,它将输出24个目标:
attack_analysis, #0, 1 ----> (1, 0)
move, #0, (1, 1) ---> (1, 1)
attack_analysis, #1, 2 ----> (1, 0)
move, #0, (1, 1) ---> (1, 1)
move, #1, (0, 1) ---> (0, 1)
attack_analysis, #2, 3 ----> (1, 0)
move, #0, (1, 1) ---> (1, 1)
move, #1, (0, 1) ---> (0, 1)
move, #2, (1, 2) ---> (2, 1)
attack_analysis, #3, 2 ----> (1, 0)
move, #0, (1, 1) ---> (1, 1)
move, #1, (1, 2) ---> (2, 1)
attack_analysis, #4, 3 ----> (1, 0)
move, #0, (1, 1) ---> (1, 1)
move, #1, (1, 2) ---> (2, 1)
move, #2, (0, 1) ---> (0, 1)
attack_analysis, #5, 1 ----> (1, 0)
move, #0, (0, 1) ---> (0, 1)
attack_analysis, #6, 2 ----> (1, 0)
move, #0, (0, 1) ---> (0, 1)
move, #1, (1, 1) ---> (1, 1)
attack_analysis, #7, 3 ----> (1, 0)
move, #0, (0, 1) ---> (0, 1)
move, #1, (1, 1) ---> (1, 1)
move, #2, (1, 2) ---> (2, 1)
attack_analysis, #8, 2 ----> (1, 0)
move, #0, (0, 1) ---> (0, 1)
move, #1, (1, 2) ---> (2, 1)
attack_analysis, #9, 3 ----> (1, 0)
move, #0, (0, 1) ---> (0, 1)
move, #1, (1, 2) ---> (2, 1)
move, #2, (1, 1) ---> (1, 1)
attack_analysis, #10, 1 ----> (1, 0)
move, #0, (1, 2) ---> (2, 1)
attack_analysis, #11, 2 ----> (1, 0)
move, #0, (1, 2) ---> (2, 1)
move, #1, (1, 1) ---> (1, 1)
attack_analysis, #12, 3 ----> (1, 0)
move, #0, (1, 2) ---> (2, 1)
move, #1, (1, 1) ---> (1, 1)
move, #2, (0, 1) ---> (0, 1)
attack_analysis, #13, 2 ----> (1, 0)
move, #0, (1, 2) ---> (2, 1)
move, #1, (0, 1) ---> (0, 1)
attack_analysis, #14, 3 ----> (1, 0)
move, #0, (1, 2) ---> (2, 1)
move, #1, (0, 1) ---> (0, 1)
move, #2, (1, 1) ---> (1, 1)
attack_analysis, #15, 1 ----> (2, 0)
move, #0, (1, 1) ---> (2, 1)
attack_analysis, #16, 2 ----> (2, 0)
move, #0, (1, 1) ---> (2, 1)
move, #1, (0, 1) ---> (3, 0)
attack_analysis, #17, 2 ----> (2, 0)
move, #0, (1, 1) ---> (2, 1)
move, #1, (1, 2) ---> (3, 0)
attack_analysis, #18, 1 ----> (2, 0)
move, #0, (0, 1) ---> (2, 1)
attack_analysis, #19, 2 ----> (2, 0)
move, #0, (0, 1) ---> (2, 1)
move, #1, (1, 1) ---> (3, 0)
attack_analysis, #20, 2 ----> (2, 0)
move, #0, (0, 1) ---> (2, 1)
move, #1, (1, 2) ---> (3, 0)
attack_analysis, #21, 1 ----> (2, 0)
move, #0, (1, 2) ---> (2, 1)
attack_analysis, #22, 2 ----> (2, 0)
move, #0, (1, 2) ---> (2, 1)
move, #1, (1, 1) ---> (3, 0)
attack_analysis, #23, 2 ----> (2, 0)
move, #0, (1, 2) ---> (2, 1)
move, #1, (0, 1) ---> (3, 0)
一、输出格式说明
attack_analysis, #23, 2 ----> (2, 0)
move, #0, (1, 2) ---> (2, 1)
move, #1, (0, 1) ---> (3, 0)
这是第23个可能目标,被攻击者是位在(2,0)上的单位,即鲁肃,AI攻击它分两步:
1)站在(1,2)的满宠移动到(2,1)攻击鲁肃
2)站在(0,1)的乐进移动到(3,0)攻击鲁肃
二、为什么会有这么多可能目标
对于可能的攻击目标第一直观能想到的是正面攻击:
出发 移动到 目标
0: (1, 1) ---> (1, 1) ====> (1, 0)
5: (0, 1) ---> (0, 1) ====> (1, 0)
10: (1, 2) ---> (2, 1) ====> (1, 0)
15: (1, 1) ---> (2, 1) ====> (2, 0)
18: (0, 1) ---> (2, 1) ====> (2, 0)
21: (1, 2) ---> (2, 1) ====> (2, 0)
除去这个攻击,剩下就是计划攻击。即它是建立在正面或计划攻击基础上的,以上攻击个数大于1的都是计划攻击。
对于计划攻击,在判断是否是最优目标时,它使用的是合成的最优值;在执行具体移动、攻击时,例使用位在[0]处设置。
三、analyze_targets中do_attack_analysis进入次数减去要被分析敌对单位数等于可能目标数
要被分析敌对单位:不是地图上所有敌对单位,而是满足了可分析条件后进入analyze_targets中的。
要被分析敌对单位数的几次是外面进入do_attack_analysis,其它则都是由递归造成,即对应着形成了一个目标后而进入
四、attack_depth(攻击深度)是一个在*.cfg上给[ai]指定的一个参数,默认值:5。它指出了AI在考虑集到一个敌对单位时,它最大会考虑的深度。因为一个格子旁边最多六个格子,这个值最大值是6。
五、当计算出的累计攻击目标已大于1000时,将开始忽略接下的计划攻击。 |