CDW 強国判定を作った


2022年 3月 18日
 
 
 元のダイス戦略には、1強の国ができると他の弱小国同士では争わない、というルールがある。

 このため 1強国が出てもすぐにゲームが終わらない、という面白さがある。

 これを作った。

 と、書いた所でパソコンが壊れた、そのため現時点で何をやっていたか覚えてない。
 
 

 さて、要は全国数の何%以上だと第一戦力(勢力)とするか。

 これを色々と実験してみた。

 50%以上だと既に体勢が決してしまっていて、くつがえり難い。

(マップに数字があるのが強勢力、一時的に視覚化)


 
 
 30%の場合だと、第一戦力が 30 : 30 : 30で 3勢力できる事があり、第一勢力の変動がめまぐるしく変わって延々と争い続ける、混沌とした情勢になりがち。

 同じように 20%では話にならない。
 
 
 40%だと 40 : 40と二つの勢力が第一勢力になる可能性があるけど、結局これくらいがベストだと判断した。


 
 
 
 db_per=40 強勢力とする %値

 強勢力判定

#deffunc dpb_cal ; 最大戦力計算

	repeat 3
	 dbpl(cnt)=0 ; 最大戦力プレイヤー
	loop
	dbplc=0 ; データNo.

	dpb=0 ; 全ダイス戦力数
	npl=0 ; 第一戦力
	nb=0  ; 最大戦力

	repeat plb,1
	 if pfd(cnt)=0 : continue ; 滅んでる
	 dpb+=dp(cnt) ; 全ダイス戦力数
	loop

	repeat plb,1
	 if pfd(cnt)=0 : continue ; 滅んでる
	 if dp(cnt)<dpb*db_per/100 : continue ; 戦力が%以下

	 dbpl(dbplc)=cnt : dbplc+
	loop

	return

 if dp(cnt)<dpb*db_per/100 : continue ここで n%以上か判定してる。

 dbpl(dbplc)の順列に n%以上の勢力プレイヤー No.を格納しておく、40%だと 2勢力存在する可能性がある。
 
 
 マップ戦略アルゴリズムでの判定呼び出し

#deffunc dbpl_cal int _dbpl_caln ; 強勢力外判定

	dbpl_caln=_dbpl_caln ; 判定する国

	f=0 ; 強勢力外判定
	repeat 3
	 n=dbpl(cnt)
	 if n=0              : continue ; 強戦力がいない
	 if n=pn1            : continue ; 自国が強戦力
	 if n=lpd(dbpl_caln) : continue ; 調べる国が強戦力
	 f=1 ; 強勢力以外
	loop

	return

 repeat 3 なのは 30%設定の時のため、使わないと思うけど。
 
 
 マップ戦略アルゴリズム内での使用例。

; 隣接国が1国の場合

#deffunc eld1_syo int _eld1_syon1,int _eld1_syon2,int _eld1_syon3

	eld1n=_eld1_syon1 ; 元の国
	eld2n=_eld1_syon2 ; 確認する国
	  ep1=_eld1_syon3 ; 確認する国のダイス戦力

	if ldcd(eld1n)<=1 : return ; 戦力が1

	if ldcd(eld1n)-dcbh(dcb)<=ep1 and ldcd(eld1n)<dcb : return ; 戦力が無い

	ep2=0 ; 攻め込んだ先の隣接する敵国の最大戦力
	ldlg=eld2n*ldlb
	repeat ldlb : eld3n=ldl(ldlg+cnt)
	 if eld3n=0 : break
	 if lpd(eld3n)=pn1 : continue	; 自国

	 dbpl_cal eld3n : if f=1 : continue ; 強戦力外

	 if ep2<ldcd(eld3n) : ep2=ldcd(eld3n) ; 最大戦力
	loop
	if ep2<=8 : n=0 : else : n=1 ; 補正戦力
	if ldcd(eld1n)-1<ep2+n and ldcd(eld1n)<dcb : return ; 2マス先に対する戦力が無い


; 攻め込む

	btlf=1

	kln1=eld1n
	kln2=eld2n

	gosub *battle

	return

 dbpl_cal eld3n : if f=1 : continue ; 強戦力外

 の部分ですね、f=1(強勢力外)なら攻め込みません。
 
 
 まあ、もう忘れてるので、何をやってるのか自分でもよく分からなかったりします。
 
 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です