バッチファイル(オセロ009_出力他)

■出力他、プラスの内容を考える。

前回でひととおり動くオセロのバッチファイルはできたけど、このプラスとして置いた手を出力させるコードなどを考える。
出力は、テキストファイルに書き込む場合、">> (テキストファイル名)"と記載すればいいようなので、出力させたい行に適宜>>を入れて書き出す。ファイル出力させる場合、コマンドプロンプト上には表示されないようなので、コマンドプロンプトにも表示させるよう、重複するけど同じコードを入れる。
下のものは、始めのfor文でコマンドプロンプト表示、下でファイルへ書き込みをする。書き込むファイルは、バッチファイルの引数(%1)として指定したもの。

for /l %%n in (1,1,8) do (
echo !array[%%n][1]!!array[%%n][2]!!array[%%n][3]!!array[%%n][4]!!array[%%n][5]!!array[%%n][6]!!array[%%n][7]!!array[%%n][8]!
)

if "%1"=="" (
rem No save
) else (
for /l %%n in (1,1,8) do (
echo !array[%%n][1]!!array[%%n][2]!!array[%%n][3]!!array[%%n][4]!!array[%%n][5]!!array[%%n][6]!!array[%%n][7]!!array[%%n][8]! >> "%1.txt"
)
)

一人でプレイヤーA,Bの操作してもつまらないので、もう一つのプラスとして、自動で手を置くコンピューターの相手について考える。
簡単なところで、ランダムで配置を決めるものを組んでみた。バッチファイルでもランダム処理ができるものがあったので、それを使って次のように行、列に対して1から8までランダムに入れるコードを追加した。

set /a line=%random%*8/32767+1
set /a row=%random%*8/32767+1

配列のリストなど使うことができれば、64マスのすべての位置の組み合わせをランダムの順に配置するといったこともできるだろうけど、リストの機能はないようなので、行、列それぞれランダムに入れる。相当無駄が多いけど...。プレイヤーAとして石を置くと、自動でプレイヤーBが石を置いてくれた。最後まで通して操作でき、オセロらしくなった。

やりたいことはやった感じなので、次回で少しコードをきれいにして終わりにする。