***********************************************************************************************
対戦型BINGO3 制作秘話
Copyright(C) 2021 by しげるがもげる
***********************************************************************************************
◆はじめに
このドキュメントには、制作に関わっての作者の思いや苦労が書いてあります。
技術的な細かいことに興味のない方は、読み飛ばしてください。
エクセルでマクロを組んでみようかなと思われる方は、読むと参考になる部分があるかもしれません。
◆制作秘話
ふと、中学生だか高校生だかの頃にやっていたBINGOを作ってみたくなって、作ってみました。
コンピュータの強さについては,
Ver1は,コンピュータは単に適当に選んでいただけなので,すごく弱かったです。
Ver2になると,揃いそうなラインを潰さないように選ぶようにしました。
Ver3では,さらにラインがたくさん作れそうな場所を残すようにしました。
◆工夫や苦労など
<ゲーム版をクリックするだけで、数字の入力もゲームも操作できる>
数字の入力モードでは,クリックするたびに数字がカウントアップして,表に書き込まれるようにしました。
また,ゲームが始まると,クリックした数字が/に置き換わるようにしました。
そのために、チェックボックスがTrueであるかFalseであるか判断し、If文で実行するプロシージャ部分を分岐させるようにしました。
<数字の自動入力>
改良をしているとき,自分の盤を作るのに,1回1回マウスをクリックして完成させるのが,とても面倒くさくなりました。
それで,「いっきに乱数を書き込んでくれるいいなあ。」と思って,作ったのがこのモードです。
ただ,新しいボタンを増やすのは嫌だったので,マウス操作で5×5の範囲を指定すると,書き込むようにしました。
<1〜25までを重複無しに並べる>
1〜25までで,重複しない数字を作るために乱数を使いますが,これを元にして数字を作ると,どうしても重複する数字が出てきてしまいます。
そこで,乱数を25個作り,Rank関数を使ってランキング(1〜25位)を出すようにしました。(重複する確率はきわめて低いですが,重複があれば再計算します。)
配列の中で短く処理する方法がわからなかったので,乱数だけワークシートに書き込んで処理しました。
<コンピュータを賢くする>
Ver1では,コンピュータの手は,乱数を使って適当に決めていました。
ですから,せっかく並びかけているラインがあるのに,自分で潰してしまうことも多々ありました。
Ver2では,コンピュータも賢くしようと思いました。
具体的には,「ラインができそうな場所には,打たない」という戦略を,盛り込みました。
「●があって/がない」という条件をラインごとで調べて,1つ1つの場所に可・不可を記録します。
そして,可になっている場所の中から,乱数で選ぶようにしました。
また,終盤になってくると,●が2つあるライン,●が3つあるライン,などと有効なラインがいくつもあって複雑になってきますが,
優先順位を付けて,●の数が少ない方から潰していくようにしました。
Ver3では,さらに賢くしようと思い,1つ1つのセルの場所で,いくつラインを作ることが可能か調べ,数が多いところを残すようにしました。
◆最後に
ここまで、熱心に読んでくださってありがとうございました。
プログラムを組んだことのない方には、わかりにくい内容だと思いますが、これを機会にエクセルの
マクロに興味を持っていただければ、と思っています。
エクセルは、本当に楽しいツールです。自分の思いや考えが表現できます。
そんなエクセルに、日々、感謝です。