用户工具

站点工具


方针

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
方针 [2025/04/18 02:01] dangfer方针 [2025/04/24 04:51] (当前版本) dangfer
行 22: 行 22:
   if 未混乱   if 未混乱
     初始化权重表     初始化权重表
-    记录可攻击对象 
     if 兵数过低 且 方针非禁止移动     if 兵数过低 且 方针非禁止移动
       W[可回复地形] += 50 ; 倾向于去回血       W[可回复地形] += 50 ; 倾向于去回血
行 29: 行 28:
         搜索进攻目标         搜索进攻目标
       else       else
-        设置默认进攻目标+        搜索缺省进攻目标
     match 方针     match 方针
       case 前往目标/目的地       case 前往目标/目的地
行 36: 行 35:
         elif 目标方针有目的地         elif 目标方针有目的地
           逃向目的地 = 目标目的地 ; 不会占住目标的目的地, 防止目标卡死           逃向目的地 = 目标目的地 ; 不会占住目标的目的地, 防止目标卡死
-        if 目标是当次达的优先对象+        if 存在目标 且 移动范围内被攻击
           设置范围权重(目标位置, 20)           设置范围权重(目标位置, 20)
           搜索进攻目标           搜索进攻目标
行 45: 行 44:
             搜索进攻目标             搜索进攻目标
           else           else
-            设置默认进攻目标+            搜索缺省进攻目标
       case 进攻       case 进攻
-        设置默认进攻目标+        搜索缺省进攻目标
       case 禁止移动       case 禁止移动
         搜索进攻目标         搜索进攻目标
       case 防御       case 防御
-        if 移动范围内存在优先对象+        if 移动范围内可被攻击
           搜索进攻目标           搜索进攻目标
         else         else
行 68: 行 67:
   检查敌军全部撤退   检查敌军全部撤退
  
-设置默认进攻目标: +搜索缺省进攻目标: 
-  设置移动权重(当次可达优先对象+  if 移动范围内可被攻击 
-  搜索进攻目标+    搜索进攻目标 
 +  elif 场上有敌军 且 可达 
 +    设置移动权重(最近敌军
 +    搜索进攻目标 
 +  else 
 +    不动
  
 设置移动权重: 设置移动权重:
行 76: 行 80:
     设置范围权重(目标位置, 20)     设置范围权重(目标位置, 20)
   else   else
-    设置范围权重(目标位置, 10)+    设置范围权重(最接近目标位置, 10)
  
 设置范围权重(目标位置, w): 设置范围权重(目标位置, w):
-  if w > 8 且 目标位置权重 且 目标位置无其他人+  if w > 8 且 目标位置未设置权重 且 目标位置无其他人
     W[目标位置] += w     W[目标位置] += w
   if 非砲车   if 非砲车
     设置范围权重(目标位置四周, w > 10 ? w - 10 : w - 1)     设置范围权重(目标位置四周, w > 10 ? w - 10 : w - 1)
  
-设置进攻目标:+搜索进攻目标:
   w = W[目标位置]   w = W[目标位置]
   if 目标位置无其他人 且 可进攻    if 目标位置无其他人 且 可进攻 
-    w_a = 设置攻击目标+    w_a = 搜索攻击目标
     if 可用策略     if 可用策略
-      w_s = 设置策略目标+      w_s = 搜索策略目标
     w += max(w_a, w_s)     w += max(w_a, w_s)
-    w += 地形权重 ; 村5, 寨6, 兵营4, 城8, 关7, BUGGY: 当前位于城门, 权重+6+    w += 地形权重 ; 村5, 寨6, 兵营4, 城8, 关7, BUGGY: 当前位于城门, 权重+6 [x]
     if 原地 且 w_a = 0 ; 防止不打人时乱跑     if 原地 且 w_a = 0 ; 防止不打人时乱跑
       w += 1       w += 1
行 102: 行 106:
       更新w_max, 设置进攻目标       更新w_max, 设置进攻目标
  
-设置攻击/策略目标:+搜索攻击/策略目标:
   each 可攻击对象B   each 可攻击对象B
     if w < 计算目标攻击/策略权重(B)     if w < 计算目标攻击/策略权重(B)
行 150: 行 154:
     return 0     return 0
   if 策略为火/地/水计   if 策略为火/地/水计
-    if (策略不为火计 或 不下雨) 且 (A.智力 >= B.智力 * 0.4)+    if (策略不为火计 或 不下雨) 且 (A.智力 >= B.智力 * 0.4) (factor: 5)
       w = 可以秒杀 ? 80 : 20       w = 可以秒杀 ? 80 : 20
-  if 策略为物见/密侦/谍报 且 B.策略 != 0 且 A.智力 >= B.智力 * 0.5+  if 策略为物见/密侦/谍报 且 B.策略 != 0 且 A.智力 >= B.智力 * 0.5 (factor: 4)
     w = 17     w = 17
-  if 策略为压迫/威压 且 B.攻击非↓↓ 且 A.智力 >= B.智力 * 2 / 3+  if 策略为压迫/威压 且 B.攻击非↓↓ 且 A.智力 >= B.智力 * 2 / 3 (factor: 3)
     w = 18     w = 18
-  if 策略为骂声/挑衅 且 B.防御非↓↓ 且 A.智力 >= B.智力 * 2 / 3+  if 策略为骂声/挑衅 且 B.防御非↓↓ 且 A.智力 >= B.智力 * 2 / 3 (factor: 3)
     w = 19     w = 19
   if 策略为伪情报/伪兵/牵制/足止/封策 且 B未处于相应状态 且 B.兵数 >= 40%   if 策略为伪情报/伪兵/牵制/足止/封策 且 B未处于相应状态 且 B.兵数 >= 40%
-    if 策略为伪情报/伪兵 且 A.智力 >= B.智力 * 0.5+    if 策略为伪情报/伪兵 且 A.智力 >= B.智力 * 0.5  (factor: 4)
       w = 22       w = 22
     if 策略为牵制 且 B.攻击速度 > 7     if 策略为牵制 且 B.攻击速度 > 7
行 174: 行 178:
       if B为物资队 或 对自身使用       if B为物资队 或 对自身使用
         return 0         return 0
-  if 策略为奋起/鼓舞/坚固/强阵 且 移动范围内存在优先对象 且 B.攻击/防御非↑↑+  if 策略为奋起/鼓舞/坚固/强阵 且 可攻击到敌军 且 B.攻击/防御非↑↑
     if B.攻击/防御未弱化     if B.攻击/防御未弱化
       if 非困难模式 或 (策略为奋起/鼓舞 且 B为文官)       if 非困难模式 或 (策略为奋起/鼓舞 且 B为文官)
行 200: 行 204:
     if B移动↓     if B移动↓
       w = 26       w = 26
-  if 策略为对策 且 B未处于对策状态+  if 策略为对策 且 B未处于对策状态 且 可攻击到敌军
     w = 13     w = 13
   if 策略为回归 且 B已行动完毕   if 策略为回归 且 B已行动完毕
行 231: 行 235:
   return w   return w
  
-搜索操作存在BUG: 源位置 = 目标位置时, 搜索操作失败+搜索操作存在BUG: 越过判断忽略了无视ZOC的情况. 
 +移动范围内可被攻击: 在处理开始时, 先算出一张敌军攻击范围图, 每个敌军对应的攻击范围存储其战场id. 
 +移动范围内可被攻击即遍历自身移动范围时, 此图中对应的位置不为无效id. 此行为应当近似实现了移动范围内可攻击到敌军的效果.
 </code> </code>
  
方针.1744938094.txt.gz · 最后更改: 2025/04/18 02:01 由 dangfer