SDL中文论坛
标题:
ai顶层逻辑
[打印本页]
作者:
ancientcc
时间:
2020-8-24 16:09
标题:
ai顶层逻辑
术语
城市矩形:在已方拥有的所有城市中找出x,y最小值为左上角,最大x,y值为右下角形成的矩形。
思考矩形:以城市矩形为参考,上、下、左、右扩展得到的矩形。它是此次AI集中于思考的区域,AI此次所有行为不会超出这个区域。
军区:AI形成一个目标的区域,它形状上往往也是个矩形。军区有数种属性,像目标,敌我军事力量。
(, 下载次数: 2270)
上传
点击文件名下载附件
ai逻辑
一、根据城市矩形分隔了军区,得出军区城市矩形
二、在军区内,根据区内城市矩形计算出思考矩形
三、依次计算每个军区中各项数值,确定出该军区在此回合的战略目标
consider_rect:军区思考矩形,它是军区城市矩形向国周扩散20坐标得到的矩形。该军区决策不会超过这个矩形。
target:军区战略目标。目标分:内政、侵略、守卫。它是根据以下的军区中参数计算出的一个结果。(注1)。
own_heros:军区内已方武将数。(包括城中武将、部队中武将)。
own_cities:军区内已方城市。(城市分前线城市、后方城市)。
own_front_cities:军区内前线城市。在own_cities基础上根据前线/后方判定规则计算得出(注2)。(按重要度排序。必须先于enemy_cities前排序)
own_back_cities:军区内后方城市。在own_cities基础上根据前线/后方判定规则计算得出。
enemy_cities:军区内敌方城市。(按以own_front_cities[0]为起点排序。(注3))
enemy_troops:军区内敌方城外部队。
encounterred_sides:军区内遭遇到的敌方势力。
注
确定军区战略规则。
内政
:军区内没有前线城市。流浪势力没有城市,因而它的战略目标肯定是内政。
侵略
:军区内有敌方城市,并且军区内已方武将数大于“每后方城市保留两个除还能是(前线城市+1)乘上10”。
守卫
:不满足以上两个目标时。
前线、后方城市判断规则。
前线
:城市矩形内或存在敌方城市,或存在三支及以上的敌方部队。
后方
:不满足以上条件的城市。
enemy_cities要被以own_front_cities[0]排序。如果不存在own_front_cities[0],意味着军区内就没有已方城市,这也就是说这个势力是流浪势力。对于流浪势力中的enemy_cities不必被排序。
四、对于区内军力已方“小于”敌方的军区执行征兵
目的是使在那个军区内敌、我双方攻击力保持均衡(尽量大于)。对于新征出部队,它们的goto置为此个军区中心点。
五、回防
六、执行攻击
已方城外部队(上回合留下及本回合新出征/征兵)对敌方城外部队/城市;
七、重新计算军区数值
操作和(三)一样。
八、城市间移动武将
根据ordered_holded_cities,把武将向距离该军区中心最近城市移动。
为计算要移多少武将才能达到军事目的,这里要估算一个武将可以产生多少能量。这个能量和“一只部队能量”相关,设定的估值是15000(100(统帅)*150(HP))。
九、内政
建造市场。
十、城外/城内所有未行动部队,执行移动
有goto的执行goto,像此次新征出部队。
没goto的移向1)“最佳”敌方城市;2)没有敌方城市时,则移去军区中心。
部队移动后,goto都置为无效。
什么样城市是“最佳”攻击目标?
1、以上第七步“城市间”移动武将找出的城市。
2、第一个有敌方城市军区内的第一个城市。
欢迎光临 SDL中文论坛 (http://www.libsdl.cn/bbs/)
Powered by Discuz! X3.3