CDW ゲームレベルとデタラメな挙動


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%デタラメに挙動する。
 
 
“CDW ゲームレベルとデタラメな挙動” の続きを読む

CDW マップ戦略アルゴリズムを製作中


2021年 10月 1日
 
 
 まだ全部完成してないけどマップ戦略アルゴリズムを作ってる。

 つまり CPUの挙動。

 今作はマップ生成が一番難しいかと思ったけど、やっぱりこちらの思考ルーチンの方が難しかった。
 
 
“CDW マップ戦略アルゴリズムを製作中” の続きを読む

CDW HEXの大きさを変える


2021年 9月 8日
 
 
 一度スマホ実機に転送してテストしてみたら HEXの表示が小さ過ぎたので、HEXの大きさを変える事にした。

 合わせてだけど、スマホの解像度が 720 × 1280で、今回製作の解像度が 540 × 960、つまり 4 : 3なのだが、スマホ実機で拡大表示される時に、どうもドットが辺に尖ったり欠けたりして HEXの見栄えが悪い。

 やっぱり等倍の解像度か 2分の1の 360 × 640の方が良いのだろうか、2倍率ならそんなに変な拡大縮小もされないと思われる。
 
 
“CDW HEXの大きさを変える” の続きを読む

CDW マップ表示の外周処理


2021年 9月 1日
 
 
 今までの方法で枠線を引くと、次のように外周の HEXの枠線は描かれない。

 これをどうするか。

 今思いついたけど、枠線情報の判定をする時に「MAP外の場所は枠線が有る」ように計算したら良い。

 しかしプログラム的に変わってしまうので、今回は今まで試した方法でやってみる。
 
 
“CDW マップ表示の外周処理” の続きを読む

CDW HEXを表示する


2021年 8月 10日
 
 
 名前がまだ未決定なので、タイトルが CDW(キャラクターダイスウォーズ)になってます。

 CDS(ストラテジー)にするか Wウォーズにするか、他に「賽ス戦略」という名前の候補もあります。
 
 
 さて、今回は HEXの描き方から順々にやってみたいと思います。

 まず画像を用意します、この HEXの大きさは横 22ドット、縦 23ドットです、正六角形である必要は無いと思います。

 こんな感じで重なる部分のドットが同じになるようにします。

 表示する時は、この場合だと、右に 10ドット、下に 16ドットずらす事になります。

 この場合、線の幅が 2ドットですが、1ドットでも同じです、重なるように表示します。
 
 
 連続で表示します。


 
 
 ソースは次の通りです。

	repeat hyb : cnt2=cnt ; y
	 repeat hxb ; x

	  pos cnt*20+(cnt2\2)*10,cnt2*16 : celput 1

	 loop
	loop

 hxb = 横の数
 hyb = 縦の数

 横向き表示なので x列の座標は、単に +20します。

 y列は偶数列と奇数列で 10ドットづつずれる訳です。

 (cnt2\2)*10で、偶数列の場合は +0、奇数列の場合は +10されます。

 斜線(\)は ¥です、割った余りを返します、表示関係で斜線になってますけど同じです。

 例えば 4¥2だと 4を2で割った余りで 0、5¥2だと 5を 2で割った余り 1になります。
 
 
“CDW HEXを表示する” の続きを読む

キャラクターダイス戦略(CDS)を作り始めてみたいと思う


2021年 8月 8日
 
 
 次の作品として、キャラクターダイス戦略(CHARACTER DICE STRATEGY、略 CDS)なるものを、なんとなく作ってみたいと思う。

 ただ、まだ予定が未定なので変更があるかもしれない。
 
 
 ダイス戦略(DICE WARS)というのは GAME DESIGNさんの作った、ダイスを振って国を取り合うボードゲームみたいな戦略ゲームの傑作である。


 
 
 このゲーム、前は PC版のダウンロード版(前身)があったのだが、今は配布してないようだ、残念。

 自分は前に入手したこの PC版で遊んでいるが、実は食事時にポチポチしながら遊んでるので、たぶん 1000回以上は軽く遊んでるはず。
 
 
 このゲームの良さとして、1強が出ると、それ以外の国が連合して全て 1強のみを相手にするというアルゴリズム、これによってゲームが後半あっというまにパワーゲームで終わってしまう、という事が無い。

 再弱国でもジワジワと追い上げる事ができる、という戦略の醍醐味がある訳だ。
 
 
 ただ不満もあって、それが今回作りたいと思った動機だけども。

 まず面白い地形を引いたと思っても一度負けるとやり直しができない、普通こうしたゲームでは RESTARTがあって、同じマップで何回も挑戦できるものだけど、それが無いので負けると悔しいままで終わってしまう。

 合わせて言うと saveが無い事、面白い地形なら残して置いて何回も遊んでみたい。
 
 
 そんなこんなで折角作るなら、様々な効果のある指揮官みたいなキャラクターユニットもちょっと付けてみて、色々と変化も付けてみたいと考えたのがこの企画だ。
 
 
“キャラクターダイス戦略(CDS)を作り始めてみたいと思う” の続きを読む

HEXの座標計算プログラム


2021年 8月 1日
 
 
 次の作品は何を作るか、まだはっきり決定はしてないけど候補としていくつか思考錯誤している。

 間単に作れそうなものとして、傑作ダイス戦略(DICE WARS)を改良したキャラクターダイス戦略なるものを構想している。


 
 
 そこで改めてマップ作成で 6角形 HEXの座標の扱い方を勉強するために「HEX 座標」でググッてみたのだけど、いくつか参考になるサイトの合間に自分の本ブログの記事もまざっていた。

 しかし、その記事は HEXの座標をどう扱うかの内容では無くて、単に HEXマップ描画の内容に過ぎず、ちょっと自分で情けなくなったので、改めて HEXの座標をどう扱うかの説明というかガイド(案内)に過ぎないのだけど、それを書き足しておきたいかなと思った。

 ただし自分で製作して思考錯誤したものでは無いので、あくまでもさわり程度の内容になる。

 お手本はこちら Hexagonal Grids

 このページをブラウザで日本語に翻訳して見るとよいだろう。

 はっきり言ってこのサイトの情報だけ押さえれば、大体分かると思う、というかネットではめずらしく専門的な内容で、その人は25年間 HEXの座標を扱っていたプロだそうな。
 
 
“HEXの座標計算プログラム” の続きを読む