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%的確に攻め込む。
以上のようになってます。