TOP > 対戦型BINGO > 制作秘話

***********************************************************************************************
                     対戦型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つのセルの場所で,いくつラインを作ることが可能か調べ,数が多いところを残すようにしました。


◆最後に
 ここまで、熱心に読んでくださってありがとうございました。
 プログラムを組んだことのない方には、わかりにくい内容だと思いますが、これを機会にエクセルの
 マクロに興味を持っていただければ、と思っています。
 エクセルは、本当に楽しいツールです。自分の思いや考えが表現できます。
 そんなエクセルに、日々、感謝です。