2021年 10月 16日
戦略アルゴリズムにデタラメな挙動を作って、先の強いアルゴリズムを 100%としたゲームレベルを設ける。

ソースは次の通り、前回の *strategyの前半に r=rnd(5)でデタラメな挙動をするようにしてる。
*strategy
al_cal ; 国の行動順
; 攻勢
stf=0 : stc=0
while stf=0
if mainf!5 : _break
ldn1=nad(stc) : stc+
if ldn1=0 : _break
if nacd(ldn1)=0 : _continue ; 攻める国が無い
; ゲームレベル
r=rnd(5)
if glv<=r { ; デタラメな時の挙動
if ldcd(ldn1)<=1 : _continue ; 戦力が1
repeat ldb : ldpc(cnt)=0 : loop ; 攻める国候補、一時格納
ldc=0
ldlg1=ldn1*ldlb
repeat ldlb : ldn2=ldl(ldlg1+cnt)
if ldn2=0 : break
if lpd(ldn2)=pn1 : continue ; 自国
if dbpl>0 and lpd(ldn2)!dbpl and dbpl!pn1 : continue ; 第一戦力以外は除外
ldpc(ldc)=ldn2 : ldc+
loop
repeat ldc
ldr=rnd(ldc) : ldn2=ldpc(ldr)
if ldcd(ldn1)>=ldcd(ldn2) { ; 戦闘
btlf=0
kln1=ldn1 : kln2=ldn2
gosub *battle
break
}
repeat ldc ; 詰める
if ldpc(ldr+cnt)=0 : break
ldpc(ldr+cnt)=ldpc(ldr+cnt+1)
loop
ldc- : if ldc=0 : break
loop
_continue
}
ゲームレベルは適当な所で設定する。
*main dbgf=0 ; デバッグモード fif=1 ; データフォルダの位置(0=Android、1=PC) if fif=0 : fi="" if fif=1 : fi="../data_file/" if fif=2 : fi="../assets/" glv=3
glv=3という事は r=rnd(5)で決めているので 60%的確に挙動するという事、5なら 100%的確に、0なら 100%デタラメに挙動する。
上記の戦闘

btlf=2 なので的確な挙動で 2マス先が自領の挙動。
次は占領した 1国から btlf=0 なのでデタラメに 13国に攻め込む。

勝ったようです

取った 13国から 12国へ btlf=2、2マス先が自領

取った 12国から btlf=0なのでデタラメに 17国に攻め込む

デタラメの場合はダイス数が同数でも攻め込むようにしてあるので負けたようです

紫の 5国から 19国へ、btlf=1なので、隣接国が 1国の場合

9国から 6国へ、btlf=3なので後背地を求めて攻め込んでる


と、そんな感じで glv=3 なので 60% btlf=1~4で的確に攻め込み、40%は btlf=0 でデタラメに攻め込む。
glv=0 の場合 100%デタラメに攻め込む、glv=5の場合は 100%的確に攻め込む。
以上のようになってます。